From cc4e426100f8316d65c7dc8be75e4def4d86244c Mon Sep 17 00:00:00 2001
From: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Date: Fri, 20 Oct 2023 09:07:13 -0400
Subject: [PATCH] Adds logging to nearly all player deaths, gibs, suicides and
dusts. Ports INVESTIGATE_DEATHS (#9991)
* https://github.com/tgstation/tgstation/pull/71112
* requested changes
* oops
---
code/__DEFINES/logging.dm | 35 +++++------
code/_onclick/telekinesis.dm | 5 +-
.../ai/hunting_behavior/hunting_behaviors.dm | 1 +
code/datums/components/butchering.dm | 2 +
.../storage/concrete/bag_of_holding.dm | 1 +
code/datums/diseases/gbs.dm | 1 +
code/datums/dna.dm | 4 ++
code/datums/status_effects/buffs.dm | 1 +
.../game/gamemodes/clown_ops/clown_weapons.dm | 6 +-
code/game/machinery/computer/arcade.dm | 4 ++
code/game/machinery/computer/robot.dm | 13 +++--
code/game/machinery/newscaster/newspaper.dm | 3 +-
code/game/machinery/pipe/construction.dm | 2 +-
code/game/machinery/shieldgen.dm | 1 +
code/game/machinery/washing_machine.dm | 1 +
.../mecha/equipment/tools/mining_tools.dm | 1 +
code/game/mecha/mecha.dm | 10 ++--
code/game/objects/items.dm | 2 +-
code/game/objects/items/RCD.dm | 4 +-
code/game/objects/items/RPD.dm | 4 +-
code/game/objects/items/airlock_painter.dm | 2 +-
code/game/objects/items/chainsaw.dm | 2 +-
code/game/objects/items/cigs_lighters.dm | 4 +-
code/game/objects/items/clown_items.dm | 8 +--
code/game/objects/items/cosmetics.dm | 4 +-
code/game/objects/items/courtroom.dm | 4 +-
code/game/objects/items/crayons.dm | 7 +--
code/game/objects/items/defib.dm | 4 +-
code/game/objects/items/deployable/bodybag.dm | 5 +-
code/game/objects/items/devices/flashlight.dm | 4 +-
code/game/objects/items/devices/glue.dm | 2 +-
.../items/devices/radio/electropack.dm | 4 +-
.../items/devices/reverse_bear_trap.dm | 1 +
code/game/objects/items/dice.dm | 8 +--
code/game/objects/items/fireaxe.dm | 4 +-
code/game/objects/items/food/pizza.dm | 1 +
code/game/objects/items/gift.dm | 4 +-
code/game/objects/items/grenades/plastic.dm | 4 +-
code/game/objects/items/handcuffs.dm | 6 +-
code/game/objects/items/holy_weapons.dm | 2 +-
.../items/implants/implant_explosive.dm | 6 +-
code/game/objects/items/knives.dm | 8 +--
code/game/objects/items/manuals.dm | 4 +-
code/game/objects/items/melee/energy.dm | 4 +-
code/game/objects/items/melee/misc.dm | 10 ++--
code/game/objects/items/pitchfork.dm | 4 +-
code/game/objects/items/stacks/medical.dm | 6 +-
.../items/stacks/sheets/mineral/glass.dm | 4 +-
code/game/objects/items/storage/backpack.dm | 5 +-
code/game/objects/items/storage/bags.dm | 4 +-
code/game/objects/items/storage/book.dm | 4 +-
code/game/objects/items/storage/boxes.dm | 4 +-
code/game/objects/items/storage/firstaid.dm | 4 +-
code/game/objects/items/storage/toolbox.dm | 4 +-
code/game/objects/items/stunbaton.dm | 4 +-
code/game/objects/items/tanks/jetpack.dm | 15 +++--
code/game/objects/items/tanks/tanks.dm | 26 ++++-----
code/game/objects/items/teleportation.dm | 4 +-
code/game/objects/items/theft_tools.dm | 13 +++--
code/game/objects/items/tools/crowbar.dm | 4 +-
code/game/objects/items/tools/powertools.dm | 4 +-
code/game/objects/items/tools/screwdriver.dm | 4 +-
code/game/objects/items/tools/weldingtool.dm | 4 +-
code/game/objects/items/tools/wirecutters.dm | 4 +-
code/game/objects/items/tools/wrench.dm | 4 +-
code/game/objects/items/weaponry.dm | 58 ++++++++++---------
code/game/objects/structures/divine.dm | 1 +
code/game/objects/structures/morgue.dm | 4 +-
.../objects/structures/petrified_statue.dm | 3 +-
code/modules/admin/admin_investigate.dm | 26 +++++----
code/modules/admin/fun_balloon.dm | 2 +-
.../blob/blobstrains/zombifying_pods.dm | 1 +
code/modules/antagonists/blob/overmind.dm | 2 +
.../antagonists/changeling/powers/absorb.dm | 4 +-
.../antagonists/changeling/powers/headcrab.dm | 1 +
.../changeling/powers/mutations.dm | 5 +-
code/modules/antagonists/cult/runes.dm | 4 +-
.../modules/antagonists/heretic/influences.dm | 1 +
.../sacrifice_knowledge.dm | 1 +
.../antagonists/heretic/magic/mansus_grasp.dm | 2 +-
.../heretic/magic/nightwatcher_rebirth.dm | 1 +
.../nukeop/equipment/nuclearbomb.dm | 6 +-
code/modules/antagonists/revenant/revenant.dm | 4 +-
.../revenant/revenant_abilities.dm | 4 +-
.../antagonists/slaughter/slaughter.dm | 7 ++-
.../traitor/equipment/Malf_Modules.dm | 1 +
.../antagonists/wizard/equipment/artefact.dm | 3 +-
code/modules/assembly/signaler.dm | 5 +-
code/modules/assembly/timer.dm | 2 +-
code/modules/awaymissions/capture_the_flag.dm | 1 +
code/modules/client/verbs/suicide.dm | 5 ++
code/modules/clothing/head/jobs.dm | 2 +-
code/modules/clothing/head/misc.dm | 6 +-
code/modules/clothing/shoes/_shoes.dm | 6 +-
code/modules/clothing/suits/cloaks.dm | 4 +-
.../detectivework/footprints_and_rag.dm | 4 +-
.../modules/food_and_drinks/food/condiment.dm | 2 +-
.../kitchen_machinery/gibber.dm | 3 +-
code/modules/hydroponics/grown/banana.dm | 12 ++--
code/modules/hydroponics/grown/kudzu.dm | 4 +-
code/modules/hydroponics/grown/melon.dm | 2 +-
code/modules/hydroponics/grown/nettle.dm | 2 +-
code/modules/hydroponics/hydroitemdefines.dm | 20 +++----
code/modules/instruments/items.dm | 4 +-
code/modules/mining/coins.dm | 4 +-
.../mining/lavaland/necropolis_chests.dm | 2 +-
code/modules/mob/dead/observer/observer.dm | 2 +-
.../modules/mob/living/basic/basic_defense.dm | 1 +
code/modules/mob/living/bloodcrawl.dm | 4 +-
code/modules/mob/living/brain/brain.dm | 4 +-
code/modules/mob/living/brain/brain_item.dm | 1 +
.../carbon/alien/special/alien_embryo.dm | 1 +
code/modules/mob/living/carbon/human/death.dm | 21 +++++++
.../mob/living/carbon/human/human_defense.dm | 1 +
.../carbon/human/species_types/dullahan.dm | 10 ++--
.../carbon/human/species_types/golems.dm | 1 +
.../carbon/human/species_types/vampire.dm | 1 +
.../mob/living/carbon/human/suicides.dm | 1 +
code/modules/mob/living/living.dm | 1 +
code/modules/mob/living/living_defense.dm | 1 +
.../mob/living/silicon/ai/ai_defense.dm | 7 ++-
.../modules/mob/living/silicon/robot/robot.dm | 1 +
.../mob/living/silicon/robot/robot_defense.dm | 7 ++-
.../living/simple_animal/animal_defense.dm | 1 +
.../mob/living/simple_animal/bot/bot.dm | 2 +-
.../mob/living/simple_animal/friendly/dog.dm | 2 +
.../simple_animal/hostile/giant_spider.dm | 1 +
.../living/simple_animal/hostile/headcrab.dm | 1 +
.../hostile/megafauna/blood_drunk_miner.dm | 1 +
.../hostile/megafauna/colossus.dm | 6 +-
.../simple_animal/hostile/megafauna/drake.dm | 1 +
.../hostile/megafauna/megafauna.dm | 1 +
.../hostile/mining_mobs/basilisk.dm | 7 ++-
.../hostile/mining_mobs/hivelord.dm | 1 +
code/modules/mob/mob_helpers.dm | 2 +-
code/modules/paperwork/contract.dm | 2 +-
code/modules/paperwork/handlabeler.dm | 2 +-
code/modules/paperwork/paper.dm | 4 +-
code/modules/paperwork/paper_cutter.dm | 6 +-
code/modules/paperwork/paperplane.dm | 2 +-
code/modules/paperwork/pen.dm | 4 +-
code/modules/paperwork/stamps.dm | 2 +-
code/modules/pool/pool_items.dm | 2 +-
code/modules/power/cable.dm | 4 +-
code/modules/power/cell.dm | 4 +-
code/modules/power/lighting/light_items.dm | 3 +-
code/modules/power/supermatter/supermatter.dm | 1 +
code/modules/power/tesla/energy_ball.dm | 4 +-
code/modules/projectiles/guns/ballistic.dm | 9 +--
code/modules/projectiles/guns/energy.dm | 4 +-
code/modules/projectiles/guns/magic.dm | 4 +-
code/modules/projectiles/projectile/magic.dm | 2 +-
.../reagents/chemistry/reagents/log.txt | 6 ++
.../chemistry/reagents/toxin_reagents.dm | 1 +
.../reagents/reagent_containers/spray.dm | 2 +-
code/modules/research/destructive_analyzer.dm | 6 +-
.../research/xenobiology/xenobiology.dm | 1 +
.../modules/ruins/lavalandruin_code/puzzle.dm | 1 +
.../ruins/objects_and_mobs/ash_walker_den.dm | 1 +
.../ruins/objects_and_mobs/sin_ruins.dm | 1 +
.../spells/spell_types/mind_transfer.dm | 2 +-
code/modules/spells/spell_types/shapeshift.dm | 1 +
code/modules/surgery/organs/organ_internal.dm | 22 +++----
code/modules/surgery/tools.dm | 9 ++-
code/modules/wiremod/core/usb_cable.dm | 2 +-
code/modules/zombie/items.dm | 15 ++---
166 files changed, 454 insertions(+), 335 deletions(-)
create mode 100644 code/modules/reagents/chemistry/reagents/log.txt
diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm
index 60aea0158b562..0d4c034ef0a17 100644
--- a/code/__DEFINES/logging.dm
+++ b/code/__DEFINES/logging.dm
@@ -1,21 +1,22 @@
//Investigate logging defines
-#define INVESTIGATE_ATMOS "atmos"
-#define INVESTIGATE_BOTANY "botany"
-#define INVESTIGATE_CARGO "cargo"
-#define INVESTIGATE_EXPERIMENTOR "experimentor"
-#define INVESTIGATE_GRAVITY "gravity"
-#define INVESTIGATE_RECORDS "records"
-#define INVESTIGATE_ENGINES "engines"
-#define INVESTIGATE_TELESCI "telesci"
-#define INVESTIGATE_WIRES "wires"
-#define INVESTIGATE_PORTAL "portals"
-#define INVESTIGATE_RESEARCH "research"
-#define INVESTIGATE_HALLUCINATIONS "hallucinations"
-#define INVESTIGATE_RADIATION "radiation"
-#define INVESTIGATE_EXONET "exonet"
-#define INVESTIGATE_NANITES "nanites"
-#define INVESTIGATE_PRESENTS "presents"
-#define INVESTIGATE_ITEMS "items"
+#define INVESTIGATE_ATMOS "atmos"
+#define INVESTIGATE_BOTANY "botany"
+#define INVESTIGATE_CARGO "cargo"
+#define INVESTIGATE_DEATHS "deaths"
+#define INVESTIGATE_ENGINES "engines"
+#define INVESTIGATE_EXONET "exonet"
+#define INVESTIGATE_EXPERIMENTOR "experimentor"
+#define INVESTIGATE_GRAVITY "gravity"
+#define INVESTIGATE_HALLUCINATIONS "hallucinations"
+#define INVESTIGATE_ITEMS "items"
+#define INVESTIGATE_NANITES "nanites"
+#define INVESTIGATE_PORTAL "portals"
+#define INVESTIGATE_PRESENTS "presents"
+#define INVESTIGATE_RADIATION "radiation"
+#define INVESTIGATE_RECORDS "records"
+#define INVESTIGATE_RESEARCH "research"
+#define INVESTIGATE_TELESCI "telesci"
+#define INVESTIGATE_WIRES "wires"
#define INVESTIGATE_VERB_PICKEDUP "picked up"
#define INVESTIGATE_VERB_DROPPED "dropped"
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index 21b0530a24d2d..0bf692a36b742 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -196,9 +196,8 @@
focus.layer = old_layer
focus.plane = old_plane
-/obj/item/tk_grab/suicide_act(mob/user)
+/obj/item/tk_grab/suicide_act(mob/living/user)
user.visible_message("[user] is using [user.p_their()] telekinesis to choke [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
- return (OXYLOSS)
-
+ return OXYLOSS
#undef TK_MAXRANGE
diff --git a/code/datums/ai/hunting_behavior/hunting_behaviors.dm b/code/datums/ai/hunting_behavior/hunting_behaviors.dm
index 1cd4e8dab2d0a..f838ba0586167 100644
--- a/code/datums/ai/hunting_behavior/hunting_behaviors.dm
+++ b/code/datums/ai/hunting_behavior/hunting_behaviors.dm
@@ -111,6 +111,7 @@
if(isliving(hunted)) // Are we hunting a living mob?
var/mob/living/living_target = hunted
hunter.manual_emote("[hunt_emote] [living_target]!")
+ living_target.investigate_log("has been killed by [key_name(hunter)].", INVESTIGATE_DEATHS)
living_target.death()
else if(IS_EDIBLE(hunted))
diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm
index 9a5bb35ceace7..b8f66d204cac0 100644
--- a/code/datums/components/butchering.dm
+++ b/code/datums/components/butchering.dm
@@ -98,6 +98,8 @@
"You butcher [meat].")
ButcherEffects(meat)
meat.harvest(butcher)
+ meat.log_message("has been butchered by [key_name(butcher)]", LOG_ATTACK)
+ meat.investigate_log("was gibbed via butchering", INVESTIGATE_DEATHS)
meat.gib(FALSE, FALSE, TRUE)
/datum/component/butchering/proc/ButcherEffects(mob/living/meat) //extra effects called on butchering, override this via subtypes
diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm
index def1aef30e398..28f3cde185955 100644
--- a/code/datums/components/storage/concrete/bag_of_holding.dm
+++ b/code/datums/components/storage/concrete/bag_of_holding.dm
@@ -29,6 +29,7 @@
message_admins("[ADMIN_LOOKUPFLW(user)] detonated a bag of holding at [ADMIN_VERBOSEJMP(loccheck)].")
log_game("[key_name(user)] detonated a bag of holding at [loc_name(loccheck)].")
+ user.investigate_log("has been gibbed by a bag of holding recursive insertion.", INVESTIGATE_DEATHS)
user.gib(TRUE, TRUE, TRUE)
new/obj/boh_tear(loccheck)
qdel(A)
diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm
index 2be16dd8c49cf..742c6e2316bb0 100644
--- a/code/datums/diseases/gbs.dm
+++ b/code/datums/diseases/gbs.dm
@@ -26,6 +26,7 @@
if(4)
to_chat(affected_mob, "Your body feels as if it's trying to rip itself apart!")
if(prob(50))
+ affected_mob.investigate_log("has been gibbed by GBS.", INVESTIGATE_DEATHS)
affected_mob.gib()
else
return
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 9a8da6bb3e2f4..fba41e9067f1b 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -665,11 +665,14 @@
else
switch(rand(0,5))
if(0)
+ investigate_log("has been gibbed by DNA instability.", INVESTIGATE_DEATHS)
gib()
if(1)
+ investigate_log("has been dusted by DNA instability.", INVESTIGATE_DEATHS)
dust()
if(2)
+ investigate_log("has been killed by DNA instability.", INVESTIGATE_DEATHS)
death()
petrify(INFINITY)
if(3)
@@ -678,6 +681,7 @@
if(BP)
BP.dismember()
else
+ investigate_log("has been gibbed by DNA instability.", INVESTIGATE_DEATHS)
gib()
else
set_species(/datum/species/dullahan)
diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index db2a786170f95..e969ec3acbf14 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -484,6 +484,7 @@
healSnake.desc = "A mystical snake previously trapped upon the Rod of Asclepius, now freed of its burden. Unlike the average snake, its bites contain chemicals with minor healing properties."
new /obj/effect/decal/cleanable/ash(owner.loc)
new /obj/item/rod_of_asclepius(owner.loc)
+ owner.investigate_log("has been consumed by the Rod of Asclepius.", INVESTIGATE_DEATHS)
qdel(owner)
else
if(iscarbon(owner))
diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm
index f0c7dabdc45b8..db080a8a3d44f 100644
--- a/code/game/gamemodes/clown_ops/clown_weapons.dm
+++ b/code/game/gamemodes/clown_ops/clown_weapons.dm
@@ -119,7 +119,7 @@
/obj/item/melee/transforming/energy/sword/bananium/ignition_effect(atom/A, mob/user)
return ""
-/obj/item/melee/transforming/energy/sword/bananium/suicide_act(mob/user)
+/obj/item/melee/transforming/energy/sword/bananium/suicide_act(mob/living/user)
if(!active)
transform_weapon(user, TRUE)
user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku, but the blade slips off of [user.p_them()] harmlessly!")
@@ -213,11 +213,11 @@
. = ..()
QDEL_NULL(bomb)
-/obj/item/grown/bananapeel/bombanana/suicide_act(mob/user)
+/obj/item/grown/bananapeel/bombanana/suicide_act(mob/living/user)
user.visible_message("[user] is deliberately slipping on the [src.name]! It looks like \he's trying to commit suicide.")
playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1)
bomb.preprime(user, 0, FALSE)
- return (BRUTELOSS)
+ return BRUTELOSS
//TEARSTACHE GRENADE
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index bdfa906a18bd7..d51c257609e22 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -326,6 +326,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
temp = "You have been crushed! GAME OVER"
playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff_exponent = 10)
if(obj_flags & EMAGGED)
+ usr.investigate_log("has been gibbed by an emagged Orion Trail game.", INVESTIGATE_DEATHS)
usr.gib()
SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal")))
@@ -530,6 +531,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
if(obj_flags & EMAGGED)
to_chat(user, "You're never going to make it to Orion...")
+ user.investigate_log("has been killed by an emagged Orion Trail game.", INVESTIGATE_DEATHS)
user.death()
obj_flags &= ~EMAGGED //removes the emagged status after you lose
gameStatus = ORION_STATUS_START
@@ -737,6 +739,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
if(settlers.len == 0 || alive == 0)
say("The last crewmember [sheriff], shot themselves, GAME OVER!")
if(obj_flags & EMAGGED)
+ usr.investigate_log("has been killed by an emagged Orion Trail game.", INVESTIGATE_DEATHS)
usr.death(0)
obj_flags &= EMAGGED
gameStatus = ORION_STATUS_GAMEOVER
@@ -749,6 +752,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
else if(obj_flags & EMAGGED)
if(usr.name == sheriff)
say("The crew of the ship chose to kill [usr.name]!")
+ usr.investigate_log("has been killed by an emagged Orion Trail game.", INVESTIGATE_DEATHS)
usr.death(0)
if(event == ORION_TRAIL_LING) //only ends the ORION_TRAIL_LING event, since you can do this action in multiple places
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 41a46cc5df31f..fc73d48a5caae 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -88,15 +88,15 @@
data["cyborgs"] += list(cyborg_data)
data["drones"] = list()
- for(var/mob/living/simple_animal/drone/D in GLOB.drones_list)
- if(D.hacked)
+ for(var/mob/living/simple_animal/drone/drone in GLOB.drones_list)
+ if(drone.hacked)
continue
- if(get_virtual_z_level() != (get_turf(D)).get_virtual_z_level())
+ if(get_virtual_z_level() != (get_turf(drone)).get_virtual_z_level())
continue
var/list/drone_data = list(
- name = D.name,
- status = D.stat,
- ref = REF(D)
+ name = drone.name,
+ status = drone.stat,
+ ref = REF(drone)
)
data["drones"] += list(drone_data)
@@ -168,6 +168,7 @@
s.set_up(3, TRUE, D)
s.start()
D.visible_message("\the [D] self-destructs!")
+ D.investigate_log("has been gibbed by a robotics console.", INVESTIGATE_DEATHS)
D.gib()
if("extract")
if(!GLOB.upload_code)
diff --git a/code/game/machinery/newscaster/newspaper.dm b/code/game/machinery/newscaster/newspaper.dm
index 29da9452d0122..759aabbd55c2c 100644
--- a/code/game/machinery/newscaster/newspaper.dm
+++ b/code/game/machinery/newscaster/newspaper.dm
@@ -24,7 +24,7 @@ I am begging someone to remake this to be more like the paper UI, it's so bad.
var/wantedPhoto
var/creation_time
-/obj/item/newspaper/suicide_act(mob/user)
+/obj/item/newspaper/suicide_act(mob/living/user)
user.visible_message("[user] is focusing intently on [src]! It looks like [user.p_theyre()] trying to commit sudoku... until [user.p_their()] eyes light up with realization!")
user.say(";JOURNALISM IS MY CALLING! EVERYBODY APPRECIATES UNBIASED REPORTI-GLORF", forced="newspaper suicide")
var/mob/living/carbon/human/H = user
@@ -32,7 +32,6 @@ I am begging someone to remake this to be more like the paper UI, it's so bad.
playsound(H.loc, 'sound/items/drink.ogg', rand(10,50), TRUE)
W.reagents.trans_to(H, W.reagents.total_volume, transfered_by = user)
user.visible_message("[user] downs the contents of [W.name] in one gulp! Shoulda stuck to sudoku!")
-
return TOXLOSS
/obj/item/newspaper/attack_self(mob/user)
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 37caeb0d0bb21..66e32708181a7 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -176,7 +176,7 @@ Buildable meters
..()
T.flipped = flipped
-/obj/item/pipe/directional/suicide_act(mob/user)
+/obj/item/pipe/directional/suicide_act(mob/living/user)
user.visible_message("[user] shoves [src] in [user.p_their()] mouth and turns it on! It looks like [user.p_theyre()] trying to commit suicide!")
if(iscarbon(user))
var/mob/living/carbon/C = user
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index b398a0a0b7bcf..8b78128888462 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -425,6 +425,7 @@
setDir(get_dir(gen_primary, gen_secondary))
for(var/mob/living/L in get_turf(src))
visible_message("\The [src] is suddenly occupying the same space as \the [L]!")
+ L.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
L.gib()
RegisterSignal(src, COMSIG_ATOM_SINGULARITY_TRY_MOVE, PROC_REF(block_singularity))
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index c85426593c0cf..f391abebf6e9c 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -228,6 +228,7 @@ GLOBAL_LIST_INIT(dye_registry, list(
/mob/living/simple_animal/pet/machine_wash(obj/machinery/washing_machine/WM)
WM.bloody_mess = TRUE
+ investigate_log("has been gibbed by a washing machine.", INVESTIGATE_DEATHS)
gib()
/obj/item/machine_wash(obj/machinery/washing_machine/WM)
diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm
index ccbc3991466fb..44b98a94ed8e5 100644
--- a/code/game/mecha/equipment/tools/mining_tools.dm
+++ b/code/game/mecha/equipment/tools/mining_tools.dm
@@ -121,6 +121,7 @@
var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering)
butchering.Butcher(chassis, target)
else
+ investigate_log("has been gibbed by [src] (attached to [chassis]).", INVESTIGATE_DEATHS)
target.gib()
else
//drill makes a hole
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index a5bedff3ee04c..0a0758c3092cd 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -167,11 +167,11 @@
if(occupant)
occupant.SetSleeping(destruction_sleep_duration)
go_out()
- var/mob/living/silicon/ai/AI
+ var/mob/living/silicon/ai/ai
for(var/mob/M in src) //Let's just be ultra sure
if(isAI(M))
occupant = null
- AI = M //AIs are loaded into the mech computer itself. When the mech dies, so does the AI. They can be recovered with an AI card from the wreck.
+ ai = M //AIs are loaded into the mech computer itself. When the mech dies, so does the AI. They can be recovered with an AI card from the wreck.
else
M.forceMove(loc)
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
@@ -185,8 +185,9 @@
qdel(capacitor)
if(internal_tank)
qdel(internal_tank)
- if(AI)
- AI.gib() //No wreck, no AI to recover
+ if(ai)
+ ai.investigate_log("has been gibbed by having their mech destroyed.", INVESTIGATE_DEATHS)
+ ai.gib() //No wreck, no AI to recover
STOP_PROCESSING(SSobj, src)
equipment.Cut()
cell = null
@@ -1055,6 +1056,7 @@
var/mob/living/silicon/ai/AI = occupant
if(forced)//This should only happen if there are multiple AIs in a round, and at least one is Malf.
RemoveActions(occupant)
+ occupant.investigate_log("has been gibbed by being forced out of their mech by another AI.", INVESTIGATE_DEATHS)
occupant.gib() //If one Malf decides to steal a mech from another AI (even other Malfs!), they are destroyed, as they have nowhere to go when replaced.
occupant = null
silicon_pilot = FALSE
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 2d541f3b7dd3c..0d4c8a5600d43 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -305,7 +305,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
//TOXLOSS = 4
//OXYLOSS = 8
//Output a creative message and then return the damagetype done
-/obj/item/proc/suicide_act(mob/user)
+/obj/item/proc/suicide_act(mob/living/user)
return
/obj/item/set_greyscale(list/colors, new_config, new_worn_config, new_inhand_left, new_inhand_right)
diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm
index 074992b8f980f..f4a80a3166432 100644
--- a/code/game/objects/items/RCD.dm
+++ b/code/game/objects/items/RCD.dm
@@ -207,9 +207,9 @@ RLD
/// Integrated airlock electronics for setting access to a newly built airlocks
var/obj/item/electronics/airlock/airlock_electronics
-/obj/item/construction/rcd/suicide_act(mob/user)
+/obj/item/construction/rcd/suicide_act(mob/living/user)
user.visible_message("[user] sets the RCD to 'Wall' and points it down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide..")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/construction/rcd/verb/toggle_window_type_verb()
set name = "RCD : Toggle Window Type"
diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm
index a2dccf179b13d..2a62669454c7d 100644
--- a/code/game/objects/items/RPD.dm
+++ b/code/game/objects/items/RPD.dm
@@ -324,11 +324,11 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list(
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
qdel(rpd_up)
-/obj/item/pipe_dispenser/suicide_act(mob/user)
+/obj/item/pipe_dispenser/suicide_act(mob/living/user)
user.visible_message("[user] points the end of the RPD down [user.p_their()] throat and presses a button! It looks like [user.p_theyre()] trying to commit suicide...")
playsound(get_turf(user), 'sound/machines/click.ogg', 50, 1)
playsound(get_turf(user), 'sound/items/deconstruct.ogg', 50, 1)
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/pipe_dispenser/ui_assets(mob/user)
return list(
diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm
index 5cfdfa871e43c..2067ebffecb85 100644
--- a/code/game/objects/items/airlock_painter.dm
+++ b/code/game/objects/items/airlock_painter.dm
@@ -89,7 +89,7 @@
else
return TRUE
-/obj/item/airlock_painter/suicide_act(mob/user)
+/obj/item/airlock_painter/suicide_act(mob/living/user)
var/obj/item/organ/lungs/L = user.getorganslot(ORGAN_SLOT_LUNGS)
if(can_use(user) && L)
diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm
index ff73b9e6e2800..ca68817e888aa 100644
--- a/code/game/objects/items/chainsaw.dm
+++ b/code/game/objects/items/chainsaw.dm
@@ -44,7 +44,7 @@
else
user.visible_message("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(src, 'sound/weapons/genhit1.ogg', 100, TRUE)
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/chainsaw/attack_self(mob/user)
on = !on
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index 2e116884d0da8..95e13cf77ec91 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -143,7 +143,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/smoke_all = FALSE /// Should we smoke all of the chems in the cig before it runs out. Splits each puff to take a portion of the overall chems so by the end you'll always have consumed all of the chems inside.
var/list/list_reagents = list(/datum/reagent/drug/nicotine = 15)
-/obj/item/clothing/mask/cigarette/suicide_act(mob/user)
+/obj/item/clothing/mask/cigarette/suicide_act(mob/living/user)
user.visible_message("[user] is huffing [src] as quickly as [user.p_they()] can! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer.")
return (TOXLOSS|OXYLOSS)
@@ -840,7 +840,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/screw = FALSE // kinky
var/super = FALSE //for the fattest vapes dude.
-/obj/item/clothing/mask/vape/suicide_act(mob/user)
+/obj/item/clothing/mask/vape/suicide_act(mob/living/user)
user.visible_message("[user] is puffin hard on dat vape, [user.p_they()] trying to join the vape life on a whole notha plane!")//it doesn't give you cancer, it is cancer
return (TOXLOSS|OXYLOSS)
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index ce20d2bc87112..8a9c55e2c1610 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -72,11 +72,11 @@
icon_state = "soapsyndie"
cleanspeed = 5 //faster than mop so it is useful for traitors who want to clean crime scenes
-/obj/item/soap/suicide_act(mob/user)
+/obj/item/soap/suicide_act(mob/living/user)
user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!", forced="soap suicide")
user.visible_message("[user] lifts [src] to [user.p_their()] mouth and gnaws on it furiously, producing a thick froth! [user.p_they(TRUE)]'ll never get that BB gun now!")
new /obj/effect/particle_effect/foam(loc)
- return (TOXLOSS)
+ return TOXLOSS
/obj/item/soap/proc/decreaseUses(mob/user)
uses--
@@ -168,10 +168,10 @@
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk)
return ..()
-/obj/item/bikehorn/suicide_act(mob/user)
+/obj/item/bikehorn/suicide_act(mob/living/user)
user.visible_message("[user] solemnly points [src] at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE)
- return (BRUTELOSS)
+ return BRUTELOSS
//air horn
/obj/item/bikehorn/airhorn
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index 1b19b16310f5b..1690f6e9a1957 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -254,9 +254,9 @@
var/extended_throwforce = 7
var/extended_icon_state = "straightrazor_open"
-/obj/item/razor/straightrazor/suicide_act(mob/user)
+/obj/item/razor/straightrazor/suicide_act(mob/living/user)
user.visible_message("[user] is slitting [user.p_their()] own throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/razor/attack(mob/M, mob/user)
. = ..()
diff --git a/code/game/objects/items/courtroom.dm b/code/game/objects/items/courtroom.dm
index 11c1a521db790..516360f38ae8b 100644
--- a/code/game/objects/items/courtroom.dm
+++ b/code/game/objects/items/courtroom.dm
@@ -13,10 +13,10 @@
attack_verb = list("bashed", "battered", "judged", "whacked")
resistance_flags = FLAMMABLE
-/obj/item/gavelhammer/suicide_act(mob/user)
+/obj/item/gavelhammer/suicide_act(mob/living/user)
user.visible_message("[user] has sentenced [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/gavelblock
name = "gavel block"
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 45f1329e95136..de742d4aa2f7f 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -74,7 +74,7 @@
/obj/item/toy/crayon/proc/isValidSurface(surface)
return istype(surface, /turf/open/floor)
-/obj/item/toy/crayon/suicide_act(mob/user)
+/obj/item/toy/crayon/suicide_act(mob/living/user)
user.visible_message("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!")
return (BRUTELOSS|OXYLOSS)
@@ -613,7 +613,7 @@
return (istype(surface, /turf/open/floor) || istype(surface, /turf/closed/wall))
-/obj/item/toy/crayon/spraycan/suicide_act(mob/user)
+/obj/item/toy/crayon/spraycan/suicide_act(mob/living/user)
var/mob/living/carbon/human/H = user
if(is_capped || !actually_paints)
user.visible_message("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, but nothing happens!")
@@ -635,8 +635,7 @@
var/fraction = min(1, used / reagents.maximum_volume)
reagents.reaction(user, VAPOR, fraction * volume_multiplier)
reagents.trans_to(user, used, volume_multiplier, transfered_by = user)
-
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/toy/crayon/spraycan/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 060db4f20f390..b7db14b88bc9d 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -389,12 +389,12 @@
var/mob/living/carbon/C = loc
C.update_inv_hands()
-/obj/item/shockpaddles/suicide_act(mob/user)
+/obj/item/shockpaddles/suicide_act(mob/living/user)
user.visible_message("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!")
if(req_defib)
defib.deductcharge(revivecost)
playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1)
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/shockpaddles/dropped(mob/user)
..()
diff --git a/code/game/objects/items/deployable/bodybag.dm b/code/game/objects/items/deployable/bodybag.dm
index 33f95d7a962bc..8a5f5ff822bad 100644
--- a/code/game/objects/items/deployable/bodybag.dm
+++ b/code/game/objects/items/deployable/bodybag.dm
@@ -10,7 +10,7 @@
. = ..()
AddComponent(/datum/component/deployable, bag_type)
-/obj/item/bodybag/suicide_act(mob/user)
+/obj/item/bodybag/suicide_act(mob/living/user)
if(isopenturf(user.loc))
user.visible_message("[user] is crawling into [src]! It looks like [user.p_theyre()] trying to commit suicide!")
SEND_SIGNAL(src, COMSIG_DEPLOYABLE_FORCE_DEPLOY, user.loc)
@@ -20,8 +20,7 @@
qdel(user)
return OXYLOSS
user.forceMove(R)
- return (OXYLOSS)
- ..()
+ return OXYLOSS
// Bluespace bodybag
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index bd14db8d5d181..0a1f423d445d1 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -52,7 +52,7 @@
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)
+ return FIRELOSS
/obj/item/flashlight/attack(mob/living/carbon/M, mob/living/carbon/human/user)
add_fingerprint(user)
@@ -514,7 +514,7 @@
return SHAME
user.visible_message("[user] is squirting [src]'s fluids into [user.p_their()] eyes! It looks like [user.p_theyre()] trying to commit suicide!")
fuel = 0
- return (FIRELOSS)
+ return FIRELOSS
/obj/item/flashlight/glowstick/red
name = "red glowstick"
diff --git a/code/game/objects/items/devices/glue.dm b/code/game/objects/items/devices/glue.dm
index 09d80523efd49..308f7af67ee22 100644
--- a/code/game/objects/items/devices/glue.dm
+++ b/code/game/objects/items/devices/glue.dm
@@ -10,7 +10,7 @@
/obj/item/syndie_glue/suicide_act(mob/living/M)
M.visible_message("[M] is drinking the whole bottle of glue! It looks like [M.p_theyre()] trying to commit suicide!")
- return (OXYLOSS) // read the warning n00b
+ return OXYLOSS // read the warning n00b
/obj/item/syndie_glue/afterattack(atom/target, mob/user, proximity)
. = ..()
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index e4e62ae722c8d..ba2f41a689bb9 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -24,9 +24,9 @@
SSradio.remove_object(src, frequency)
return ..()
-/obj/item/electropack/suicide_act(mob/user)
+/obj/item/electropack/suicide_act(mob/living/user)
user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!")
- return (FIRELOSS)
+ return FIRELOSS
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/electropack/attack_hand(mob/user)
diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm
index 2597bea3b625f..296bc9981a0df 100644
--- a/code/game/objects/items/devices/reverse_bear_trap.dm
+++ b/code/game/objects/items/devices/reverse_bear_trap.dm
@@ -112,6 +112,7 @@
playsound(src, 'sound/effects/snap.ogg', 75, TRUE, frequency = 0.5)
playsound(src, 'sound/effects/splat.ogg', 50, TRUE, frequency = 0.5)
jill.apply_damage(9999, BRUTE, BODY_ZONE_HEAD)
+ jill.investigate_log("has been killed by [src].", INVESTIGATE_DEATHS)
jill.death() //just in case, for some reason, they're still alive
flash_color(jill, flash_color = "#FF0000", flash_time = 100)
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index 8ca53048b3462..e2611c49f12cf 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -31,9 +31,9 @@
if(special_die == "100")
new /obj/item/dice/d100(src)
-/obj/item/storage/pill_bottle/dice/suicide_act(mob/user)
+/obj/item/storage/pill_bottle/dice/suicide_act(mob/living/user)
user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/storage/pill_bottle/dice_cup
name = "dice cup"
@@ -72,9 +72,9 @@
. = ..()
. += "[result] is face up."
-/obj/item/dice/suicide_act(mob/user)
+/obj/item/dice/suicide_act(mob/living/user)
user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/dice/d1
name = "d1"
diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm
index accd29957222a..2023b63f773f3 100644
--- a/code/game/objects/items/fireaxe.dm
+++ b/code/game/objects/items/fireaxe.dm
@@ -33,9 +33,9 @@
icon_state = "[icon_prefix]0"
..()
-/obj/item/fireaxe/suicide_act(mob/user)
+/obj/item/fireaxe/suicide_act(mob/living/user)
user.visible_message("[user] axes [user.p_them()]self from head to toe! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/fireaxe/afterattack(atom/A, mob/user, proximity)
. = ..()
diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm
index 00489fbb6e176..afddd4b3c03ae 100644
--- a/code/game/objects/items/food/pizza.dm
+++ b/code/game/objects/items/food/pizza.dm
@@ -244,6 +244,7 @@
/obj/item/food/proc/i_kill_you(obj/item/I, mob/user)
if(istype(I, /obj/item/reagent_containers/food/snacks/pineappleslice))
to_chat(user, "If you want something crazy like pineapple, I'll kill you.") //this is in bigger text because it's hard to spam something that gibs you, and so that you're perfectly aware of the reason why you died
+ user.investigate_log("has been gibbed by putting pineapple on an arnold pizza.", INVESTIGATE_DEATHS)
user.gib() //if you want something crazy like pineapple, i'll kill you
else if(istype(I, /obj/item/reagent_containers/food/snacks/grown/mushroom) && iscarbon(user))
to_chat(user, "So, if you want mushroom, shut up.") //not as large as the pineapple text, because you could in theory spam it
diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm
index e15249f791e01..569e622ad49cb 100644
--- a/code/game/objects/items/gift.dm
+++ b/code/game/objects/items/gift.dm
@@ -28,9 +28,9 @@ GLOBAL_LIST_EMPTY(possible_gifts)
contains_type = get_gift_type()
-/obj/item/a_gift/suicide_act(mob/user)
+/obj/item/a_gift/suicide_act(mob/living/user)
user.visible_message("[user] peeks inside [src] and cries [user.p_them()]self to death! It looks like [user.p_they()] [user.p_were()] on the naughty list...")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/a_gift/examine(mob/M)
. = ..()
diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm
index 8e645dd4a3ec9..0d7efe7c2aa12 100644
--- a/code/game/objects/items/grenades/plastic.dm
+++ b/code/game/objects/items/grenades/plastic.dm
@@ -165,7 +165,7 @@
message_say = "VIVA LA REVOLUTION!"
M.say(message_say, forced="C4 suicide")
-/obj/item/grenade/plastic/suicide_act(mob/user)
+/obj/item/grenade/plastic/suicide_act(mob/living/user)
message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_VERBOSEJMP(user)]")
log_game("[key_name(user)] suicided with [src] at [AREACOORD(user)]")
user.visible_message("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!")
@@ -201,7 +201,7 @@
target = null
return ..()
-/obj/item/grenade/plastic/c4/suicide_act(mob/user)
+/obj/item/grenade/plastic/c4/suicide_act(mob/living/user)
user.visible_message("[user] activates the [src.name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!")
shout_syndicate_crap(user)
target = user
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index cf5478cfbd15b..be8740e8dc806 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -4,7 +4,7 @@
/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)
+ return OXYLOSS
/obj/item/restraints/Destroy()
if(iscarbon(loc))
@@ -233,10 +233,10 @@
/obj/item/restraints/legcuffs/beartrap/update_icon()
icon_state = "[initial(icon_state)][armed]"
-/obj/item/restraints/legcuffs/beartrap/suicide_act(mob/user)
+/obj/item/restraints/legcuffs/beartrap/suicide_act(mob/living/user)
user.visible_message("[user] is sticking [user.p_their()] head in the [src.name]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/restraints/legcuffs/beartrap/attack_self(mob/user)
..()
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index 39d03f44ab1e4..7cdd4c7c48c8f 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -298,7 +298,7 @@
on_clear_callback = CALLBACK(src, PROC_REF(on_cult_rune_removed)), \
effects_we_clear = list(/obj/effect/rune, /obj/effect/heretic_rune))
-/obj/item/nullrod/suicide_act(mob/user)
+/obj/item/nullrod/suicide_act(mob/living/user)
user.visible_message("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get closer to god!")
return (BRUTELOSS|FIRELOSS)
diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm
index be032cd839c2d..ee76e644aa2b7 100644
--- a/code/game/objects/items/implants/implant_explosive.dm
+++ b/code/game/objects/items/implants/implant_explosive.dm
@@ -47,7 +47,8 @@
if(delay <= 7)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
if(imp_in)
- imp_in.gib(1)
+ imp_in.investigate_log("has been gibbed by an explosive implant.", INVESTIGATE_DEATHS)
+ imp_in.gib(TRUE)
qdel(src)
return TRUE
timed_explosion()
@@ -80,7 +81,8 @@
sleep(delay*0.25)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
if(imp_in)
- imp_in.gib(1)
+ imp_in.investigate_log("has been gibbed by an explosive implant.", INVESTIGATE_DEATHS)
+ imp_in.gib(TRUE)
qdel(src)
/obj/item/implant/explosive/macro
diff --git a/code/game/objects/items/knives.dm b/code/game/objects/items/knives.dm
index 12561ce5fe64e..81203389c7a6f 100644
--- a/code/game/objects/items/knives.dm
+++ b/code/game/objects/items/knives.dm
@@ -42,11 +42,11 @@
/obj/item/knife/proc/set_butchering()
AddComponent(/datum/component/butchering, 8 SECONDS - force, 100, force - 10) //bonus chance increases depending on force
-/obj/item/knife/suicide_act(mob/user)
+/obj/item/knife/suicide_act(mob/living/user)
user.visible_message(pick("[user] is slitting [user.p_their()] wrists with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.", \
"[user] is slitting [user.p_their()] throat with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.", \
"[user] is slitting [user.p_their()] stomach open with the [src.name]! It looks like [user.p_theyre()] trying to commit seppuku."))
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/knife/ritual
name = "ritual knife"
@@ -174,6 +174,6 @@
embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 40, "embedded_fall_chance" = 5, "armour_block" = 30) // Incentive to disengage/stop chasing when stuck
attack_verb = list("stuck", "shanked")
-/obj/item/knife/shank/suicide_act(mob/user)
+/obj/item/knife/shank/suicide_act(mob/living/user)
user.visible_message("[user] is slitting [user.p_their()] [pick("wrists", "throat")] with the shank! It looks like [user.p_theyre()] trying to commit suicide.")
- return (BRUTELOSS)
+ return BRUTELOSS
diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm
index 968ce6317c124..d9b619af887fe 100644
--- a/code/game/objects/items/manuals.dm
+++ b/code/game/objects/items/manuals.dm
@@ -409,7 +409,7 @@
title = "Toxins or: How I Learned to Stop Worrying and Love the Maxcap"
page_link = "Guide_to_toxins"
-/obj/item/book/manual/wiki/toxins/suicide_act(mob/user)
+/obj/item/book/manual/wiki/toxins/suicide_act(mob/living/user)
var/mob/living/carbon/human/H = user
user.visible_message("[user] starts dancing to the Rhumba Beat! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/effects/spray.ogg', 10, 1, -3)
@@ -428,7 +428,7 @@
H.spawn_gibs()
H.spill_organs()
H.spread_bodyparts()
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/book/manual/wiki/plumbing
name = "Chemical Factories Without Narcotics"
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index 5dc26bbe0a055..f74a0cb7d1734 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -20,7 +20,7 @@
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/item/melee/transforming/energy/suicide_act(mob/user)
+/obj/item/melee/transforming/energy/suicide_act(mob/living/user)
if(!active)
transform_weapon(user, TRUE)
user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!")
@@ -84,7 +84,7 @@
attack_verb_on = list()
light_color = "#40ceff"
-/obj/item/melee/transforming/energy/axe/suicide_act(mob/user)
+/obj/item/melee/transforming/energy/axe/suicide_act(mob/living/user)
user.visible_message("[user] swings [src] towards [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")
return (BRUTELOSS|FIRELOSS)
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index 4cb503ea7afe9..ccb07f66f6932 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -25,9 +25,9 @@
hitsound = 'sound/weapons/chainhit.ogg'
materials = list(/datum/material/iron = 1000)
-/obj/item/melee/chainofcommand/suicide_act(mob/user)
+/obj/item/melee/chainofcommand/suicide_act(mob/living/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)
+ return OXYLOSS
/obj/item/melee/synthetic_arm_blade
name = "synthetic arm blade"
@@ -355,7 +355,7 @@
return ..()
return 0
-/obj/item/melee/classic_baton/telescopic/suicide_act(mob/user)
+/obj/item/melee/classic_baton/telescopic/suicide_act(mob/living/user)
var/mob/living/carbon/human/H = user
var/obj/item/organ/brain/B = H.getorgan(/obj/item/organ/brain)
@@ -371,7 +371,7 @@
H.internal_organs -= B
qdel(B)
new /obj/effect/gibspawner/generic(H.drop_location(), H)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/melee/classic_baton/police/telescopic/attack_self(mob/user)
on = !on
@@ -662,7 +662,7 @@
consume_everything(P)
return BULLET_ACT_HIT
-/obj/item/melee/supermatter_sword/suicide_act(mob/user)
+/obj/item/melee/supermatter_sword/suicide_act(mob/living/user)
user.visible_message("[user] touches [src]'s blade. It looks like [user.p_theyre()] tired of waiting for the radiation to kill [user.p_them()]!")
user.dropItemToGround(src, TRUE)
shard.Bumped(user)
diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm
index 462111bd1a808..41f97943791cb 100644
--- a/code/game/objects/items/pitchfork.dm
+++ b/code/game/objects/items/pitchfork.dm
@@ -55,9 +55,9 @@
. = ..()
AddComponent(/datum/component/two_handed, force_unwielded=100, force_wielded=500000) // Kills you DEAD
-/obj/item/pitchfork/suicide_act(mob/user)
+/obj/item/pitchfork/suicide_act(mob/living/user)
user.visible_message("[user] impales [user.p_them()]self in [user.p_their()] abdomen with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/pitchfork/demonic/pickup(mob/living/user)
. = ..()
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 988b1341f3313..71d41d697e3cd 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -95,7 +95,7 @@
user.visible_message("[user] starts to apply [src] on [user.p_them()]self...", "You begin applying [src] on yourself...")
if(!do_after(user, self_delay, M))
return
- //After the do_mob to ensure metabolites have had time to process at least one tick.
+ //After the do_mob to ensure metabolites have had time to process at least one tick.
if(reagent && (C.reagents.get_reagent_amount(/datum/reagent/metabolite/medicine/styptic_powder) || C.reagents.get_reagent_amount(/datum/reagent/metabolite/medicine/silver_sulfadiazine)))
to_chat(user, "That stuff really hurt! You'll need to wait for the pain to go away before you can apply [src] to your wounds again, maybe someone else can help put it on for you.")
return
@@ -125,9 +125,9 @@
/obj/item/stack/medical/bruise_pack/one
amount = 1
-/obj/item/stack/medical/bruise_pack/suicide_act(mob/user)
+/obj/item/stack/medical/bruise_pack/suicide_act(mob/living/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)
+ return BRUTELOSS
/obj/item/stack/medical/ointment
name = "ointment"
diff --git a/code/game/objects/items/stacks/sheets/mineral/glass.dm b/code/game/objects/items/stacks/sheets/mineral/glass.dm
index accee2d559f84..7acb5fb24fc6d 100644
--- a/code/game/objects/items/stacks/sheets/mineral/glass.dm
+++ b/code/game/objects/items/stacks/sheets/mineral/glass.dm
@@ -206,9 +206,9 @@
embedding = list("embed_chance" = 65)
-/obj/item/shard/suicide_act(mob/user)
+/obj/item/shard/suicide_act(mob/living/user)
user.visible_message("[user] is slitting [user.p_their()] [pick("wrists", "throat")] with the shard of glass! It looks like [user.p_theyre()] trying to commit suicide.")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/shard/Initialize(mapload)
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index aa151750bb13c..2395c65aef8ad 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -66,6 +66,7 @@
user.Stun(100, ignore_canstun = TRUE)
sleep(20)
playsound(src, "rustle", 50, 1, -5)
+ user.suicide_log()
qdel(user)
/obj/item/storage/backpack/holding/singularity_act(current_size)
@@ -110,9 +111,9 @@
STR.max_w_class = WEIGHT_CLASS_NORMAL
STR.max_combined_w_class = 60
-/obj/item/storage/backpack/santabag/suicide_act(mob/user)
+/obj/item/storage/backpack/santabag/suicide_act(mob/living/user)
user.visible_message("[user] places [src] over [user.p_their()] head and pulls it tight! It looks like [user.p_they()] [user.p_are()]n't in the Christmas spirit...")
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/storage/backpack/santabag/proc/regenerate_presents()
addtimer(CALLBACK(src, PROC_REF(regenerate_presents)), 30 SECONDS)
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index 129bb471d4a1c..da9d5bca866d6 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -52,10 +52,10 @@
STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear))
STR.can_be_opened = FALSE //Have to dump a trash bag out to look at its contents
-/obj/item/storage/bag/trash/suicide_act(mob/user)
+/obj/item/storage/bag/trash/suicide_act(mob/living/user)
user.visible_message("[user] puts [src] over [user.p_their()] head and starts chomping at the insides! Disgusting!")
playsound(loc, 'sound/items/eatfood.ogg', 50, 1, -1)
- return (TOXLOSS)
+ return TOXLOSS
/obj/item/storage/bag/trash/update_icon()
if(contents.len == 0)
diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm
index ca57ac8d7251d..838735bb692ab 100644
--- a/code/game/objects/items/storage/book.dm
+++ b/code/game/objects/items/storage/book.dm
@@ -40,9 +40,9 @@
. = ..()
AddComponent(/datum/component/anti_magic, FALSE, TRUE, _allowed_slots = ITEM_SLOT_HANDS)
-/obj/item/storage/book/bible/suicide_act(mob/user)
+/obj/item/storage/book/bible/suicide_act(mob/living/user)
user.visible_message("[user] is offering [user.p_them()]self to [deity_name]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/storage/book/bible/attack_self(mob/living/carbon/human/H)
if(!istype(H))
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 537779070586e..bb34b76e8bbd9 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -834,9 +834,9 @@
illustration = "heart"
foldable = null
-/obj/item/storage/box/hug/suicide_act(mob/user)
+/obj/item/storage/box/hug/suicide_act(mob/living/user)
user.visible_message("[user] clamps the box of hugs on [user.p_their()] jugular! Guess it wasn't such a hugbox after all..")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/storage/box/hug/attack_self(mob/user)
..()
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 615419e31acfd..325d45fb3394d 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -453,9 +453,9 @@
STR.click_gather = TRUE
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/dice))
-/obj/item/storage/pill_bottle/suicide_act(mob/user)
+/obj/item/storage/pill_bottle/suicide_act(mob/living/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)
+ return TOXLOSS
/obj/item/storage/pill_bottle/charcoal
name = "bottle of charcoal pills"
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 2d5b4f8ec0eec..24632c85e3faa 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -37,9 +37,9 @@
add_overlay(latches)
-/obj/item/storage/toolbox/suicide_act(mob/user)
+/obj/item/storage/toolbox/suicide_act(mob/living/user)
user.visible_message("[user] robusts [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/storage/toolbox/emergency
name = "emergency toolbox"
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index 62af59007e1cc..a7f5fc4ec2b64 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -23,9 +23,9 @@
/obj/item/melee/baton/get_cell()
return cell
-/obj/item/melee/baton/suicide_act(mob/user)
+/obj/item/melee/baton/suicide_act(mob/living/user)
user.visible_message("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!")
- return (FIRELOSS)
+ return FIRELOSS
/obj/item/melee/baton/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index 9dfe492936e07..793c43a44f1c8 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -131,14 +131,13 @@
return TRUE
-/obj/item/tank/jetpack/suicide_act(mob/user)
- if (istype(user, /mob/living/carbon/human/))
- var/mob/living/carbon/human/H = user
- H.say(";WHAT THE FUCK IS CARBON DIOXIDE?", forced="jetpack suicide")
- H.visible_message("[user] is suffocating [user.p_them()]self with [src]! It looks like [user.p_they()] didn't read what that jetpack says!")
- return (OXYLOSS)
- else
- ..()
+/obj/item/tank/jetpack/suicide_act(mob/living/user)
+ if (!ishuman(user))
+ return
+ var/mob/living/carbon/human/H = user
+ H.say(";WHAT THE FUCK IS CARBON DIOXIDE?", forced="jetpack suicide")
+ H.visible_message("[user] is suffocating [user.p_them()]self with [src]! It looks like [user.p_they()] didn't read what that jetpack says!")
+ return OXYLOSS
/obj/item/tank/jetpack/improvised
name = "improvised jetpack"
diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm
index f2f9108f0e96c..11e41735ed6a6 100644
--- a/code/game/objects/items/tanks/tanks.dm
+++ b/code/game/objects/items/tanks/tanks.dm
@@ -128,25 +128,25 @@
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
qdel(src)
-/obj/item/tank/suicide_act(mob/user)
- var/mob/living/carbon/human/H = user
+/obj/item/tank/suicide_act(mob/living/user)
+ var/mob/living/carbon/human/human_user = user
user.visible_message("[user] is putting [src]'s valve to [user.p_their()] lips! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/effects/spray.ogg', 10, 1, -3)
- if (!QDELETED(H) && air_contents && air_contents.return_pressure() >= 1000)
- for(var/obj/item/W in H)
- H.dropItemToGround(W)
+ if (!QDELETED(human_user) && air_contents && air_contents.return_pressure() >= 1000)
+ for(var/obj/item/W in human_user)
+ human_user.dropItemToGround(W)
if(prob(50))
step(W, pick(GLOB.alldirs))
- ADD_TRAIT(H, TRAIT_DISFIGURED, TRAIT_GENERIC)
- H.bleed_rate = 5
- H.gib_animation()
+ ADD_TRAIT(human_user, TRAIT_DISFIGURED, TRAIT_GENERIC)
+ human_user.bleed_rate = 5
+ human_user.gib_animation()
sleep(3)
- H.adjustBruteLoss(1000) //to make the body super-bloody
- H.spawn_gibs()
- H.spill_organs()
- H.spread_bodyparts()
+ human_user.adjustBruteLoss(1000) //to make the body super-bloody
+ human_user.spawn_gibs()
+ human_user.spill_organs()
+ human_user.spread_bodyparts()
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/tank/attackby(obj/item/W, mob/user, params)
add_fingerprint(user)
diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm
index d1dee414c8895..a3607fa5188e8 100644
--- a/code/game/objects/items/teleportation.dm
+++ b/code/game/objects/items/teleportation.dm
@@ -251,7 +251,7 @@
return DESTINATION_PORTAL
return FALSE
-/obj/item/hand_tele/suicide_act(mob/user)
+/obj/item/hand_tele/suicide_act(mob/living/user)
if(iscarbon(user))
user.visible_message("[user] is creating a weak portal and sticking [user.p_their()] head through! It looks like [user.p_theyre()] trying to commit suicide!")
var/mob/living/carbon/itemUser = user
@@ -263,7 +263,7 @@
itemUser.visible_message("The portal snaps closed taking [user]'s head with it!")
else
itemUser.visible_message("[user] looks even further depressed as they realize they do not have a head...and suddenly dies of shame!")
- return (BRUTELOSS)
+ return BRUTELOSS
/*
* Syndicate Teleporter
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index f22f9a5e77ca4..2bcc160d49c5e 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -36,9 +36,9 @@
flick(pulseicon, src)
radiation_pulse(src, 400, 2)
-/obj/item/nuke_core/suicide_act(mob/user)
+/obj/item/nuke_core/suicide_act(mob/living/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)
+ return TOXLOSS
//nuke core box, for carrying the core
/obj/item/nuke_core_container
@@ -156,13 +156,14 @@
..()
if(!iscarbon(user))
return FALSE
- var/mob/ded = user
- user.visible_message("[ded] reaches out and tries to pick up [src]. [ded.p_their()] body starts to glow and bursts into flames before flashing into dust!",\
+ var/mob/victim = user
+ user.visible_message("[victim] reaches out and tries to pick up [src]. [victim.p_their()] body starts to glow and bursts into flames before flashing into dust!",\
"You reach for [src] with your hands. That was dumb.",\
"Everything suddenly goes silent.")
radiation_pulse(user, 500, 2)
playsound(get_turf(user), 'sound/effects/supermatter.ogg', 50, 1)
- ded.dust()
+ victim.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS)
+ victim.dust()
/obj/item/nuke_core_container/supermatter
name = "supermatter bin"
@@ -251,6 +252,7 @@
/obj/item/hemostat/supermatter/proc/Consume(atom/movable/AM, mob/user)
if(ismob(AM))
var/mob/victim = AM
+ victim.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS)
victim.dust()
message_admins("[src] has consumed [key_name_admin(victim)] [ADMIN_JMP(src)].")
investigate_log("has consumed [key_name(victim)].", "supermatter")
@@ -261,6 +263,7 @@
user.visible_message("As [user] touches [AM] with \the [src], both flash into dust and silence fills the room...",\
"You touch [AM] with [src], and everything suddenly goes silent.\n[AM] and [sliver] flash into dust, and soon as you can register this, you do as well.",\
"Everything suddenly goes silent.")
+ user.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS)
user.dust()
radiation_pulse(src, 500, 2)
playsound(src, 'sound/effects/supermatter.ogg', 50, 1)
diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm
index ed19e270bcf82..7b780e9219cea 100644
--- a/code/game/objects/items/tools/crowbar.dm
+++ b/code/game/objects/items/tools/crowbar.dm
@@ -20,10 +20,10 @@
drop_sound = 'sound/items/handling/crowbar_drop.ogg'
pickup_sound = 'sound/items/handling/crowbar_pickup.ogg'
-/obj/item/crowbar/suicide_act(mob/user)
+/obj/item/crowbar/suicide_act(mob/living/user)
user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/crowbar/red
icon_state = "crowbar_red"
diff --git a/code/game/objects/items/tools/powertools.dm b/code/game/objects/items/tools/powertools.dm
index 57447b8904e8c..1e8aa0544a917 100644
--- a/code/game/objects/items/tools/powertools.dm
+++ b/code/game/objects/items/tools/powertools.dm
@@ -62,7 +62,7 @@
attack_verb = list("drilled", "screwed", "jabbed")
throw_range = 3
-/obj/item/powertool/hand_drill/suicide_act(mob/user)
+/obj/item/powertool/hand_drill/suicide_act(mob/living/user)
if(tool_behaviour == TOOL_SCREWDRIVER)
user.visible_message("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!")
else
@@ -133,7 +133,7 @@
ADD_TRAIT(src, TRAIT_DOOR_PRYER, TRAIT_JAWS_OF_LIFE)
-/obj/item/powertool/jaws_of_life/suicide_act(mob/user)
+/obj/item/powertool/jaws_of_life/suicide_act(mob/living/user)
if(tool_behaviour == TOOL_CROWBAR)
user.visible_message("[user] is putting [user.p_their()] head in [src], it looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/items/jaws_pry.ogg', 50, 1, -1)
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index 3d0820099f5c7..3875a5ec30b1b 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -40,9 +40,9 @@
"yellow" = "#ffa500"
)
-/obj/item/screwdriver/suicide_act(mob/user)
+/obj/item/screwdriver/suicide_act(mob/living/user)
user.visible_message("[user] is stabbing [src] into [user.p_their()] [pick("temple", "heart")]! It looks like [user.p_theyre()] trying to commit suicide!")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/screwdriver/Initialize(mapload)
if(random_color)
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index 7050a76a5d3de..d2255d15865e0 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -90,9 +90,9 @@
open_flame()
-/obj/item/weldingtool/suicide_act(mob/user)
+/obj/item/weldingtool/suicide_act(mob/living/user)
user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!")
- return (FIRELOSS)
+ return FIRELOSS
/obj/item/weldingtool/attackby(obj/item/I, mob/user, params)
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index a21ee3a523953..338db2ad9a693 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -62,10 +62,10 @@
else
..()
-/obj/item/wirecutters/suicide_act(mob/user)
+/obj/item/wirecutters/suicide_act(mob/living/user)
user.visible_message("[user] is cutting at [user.p_their()] arteries with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, usesound, 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/wirecutters/brass
name = "brass wirecutters"
diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm
index cbf292b4591a7..d26adbbd39f1f 100644
--- a/code/game/objects/items/tools/wrench.dm
+++ b/code/game/objects/items/tools/wrench.dm
@@ -19,10 +19,10 @@
toolspeed = 1
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0)
-/obj/item/wrench/suicide_act(mob/user)
+/obj/item/wrench/suicide_act(mob/living/user)
user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/wrench/brass
name = "brass wrench"
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 7835f3f62aaf7..80f458e96eb38 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -15,9 +15,9 @@
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 70, STAMINA = 0)
resistance_flags = FIRE_PROOF
-/obj/item/banhammer/suicide_act(mob/user)
- user.visible_message("[user] is hitting [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to ban [user.p_them()]self from life.")
- return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS)
+/obj/item/banhammer/suicide_act(mob/living/user)
+ user.visible_message("[user] is hitting [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to ban [user.p_them()]self from life.")
+ return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS)
/*
oranges says: This is a meme relating to the english translation of the ss13 russian wiki page on lurkmore.
mrdoombringer sez: and remember kids, if you try and PR a fix for this item's grammar, you are admitting that you are, indeed, a newfriend.
@@ -48,7 +48,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "ripped", "diced", "cut")
-/obj/item/sord/suicide_act(mob/user)
+/obj/item/sord/suicide_act(mob/living/user)
user.visible_message("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty.", \
"You try to impale yourself with [src], but it's USELESS...")
return SHAME
@@ -90,9 +90,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
. = ..()
AddComponent(/datum/component/butchering, 40, 105)
-/obj/item/claymore/suicide_act(mob/user)
+/obj/item/claymore/suicide_act(mob/living/user)
user.visible_message("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim."
@@ -149,6 +149,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
user.fully_heal() //STEAL THE LIFE OF OUR FALLEN FOES
add_notch(user)
target.visible_message("[target] crumbles to dust beneath [user]'s blows!", "As you fall, your body crumbles to dust!")
+ target.investigate_log("has been dusted by a highlander claymore.", INVESTIGATE_DEATHS)
target.dust()
/obj/item/claymore/highlander/attack_self(mob/living/user)
@@ -264,9 +265,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/katana/cursed
slot_flags = null
-/obj/item/katana/suicide_act(mob/user)
+/obj/item/katana/suicide_act(mob/living/user)
user.visible_message("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku!")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/wirerod
name = "wired rod"
@@ -399,9 +400,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
hitsound = 'sound/weapons/genhit.ogg'
sharpness = IS_BLUNT
-/obj/item/switchblade/suicide_act(mob/user)
+/obj/item/switchblade/suicide_act(mob/living/user)
user.visible_message("[user] is slitting [user.p_their()] own throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/switchblade/kitchen
name = "iron switchblade"
@@ -437,12 +438,12 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
attack_verb = list("called", "rang")
hitsound = 'sound/weapons/ring.ogg'
-/obj/item/phone/suicide_act(mob/user)
+/obj/item/phone/suicide_act(mob/living/user)
if(locate(/obj/structure/chair/stool) in user.loc)
user.visible_message("[user] begins to tie a noose with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!")
else
user.visible_message("[user] is strangling [user.p_them()]self with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!")
- return(OXYLOSS)
+ return OXYLOSS
/obj/item/cane
name = "cane"
@@ -505,9 +506,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
icon = 'icons/obj/wizard.dmi'
icon_state = "ectoplasm"
-/obj/item/ectoplasm/suicide_act(mob/user)
+/obj/item/ectoplasm/suicide_act(mob/living/user)
user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the astral plane!")
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/ectoplasm/angelic
icon = 'icons/obj/wizard.dmi'
@@ -758,24 +759,27 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/melee/flyswatter/Initialize(mapload)
. = ..()
strong_against = typecacheof(list(
- /mob/living/simple_animal/hostile/poison/bees/,
- /mob/living/simple_animal/butterfly,
- /mob/living/basic/cockroach,
- /obj/item/queen_bee
+ /mob/living/simple_animal/hostile/poison/bees/,
+ /mob/living/simple_animal/butterfly,
+ /mob/living/basic/cockroach,
+ /obj/item/queen_bee
))
/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
. = ..()
- if(proximity_flag)
- if(is_type_in_typecache(target, strong_against))
- new /obj/effect/decal/cleanable/insectguts(target.drop_location())
- to_chat(user, "You easily splat the [target].")
- if(istype(target, /mob/living/))
- var/mob/living/bug = target
- bug.death(1)
- else
- qdel(target)
+ if(!proximity_flag || HAS_TRAIT(user, TRAIT_PACIFISM))
+ return
+
+ if(is_type_in_typecache(target, strong_against))
+ new /obj/effect/decal/cleanable/insectguts(target.drop_location())
+ to_chat(user, "You easily splat the [target].")
+ if(istype(target, /mob/living/))
+ var/mob/living/bug = target
+ bug.investigate_log("has been splatted by a flyswatter.", INVESTIGATE_DEATHS)
+ bug.death(1)
+ else
+ qdel(target)
/obj/item/circlegame
name = "circled hand"
diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm
index 8667804dab1b9..353697111bb3d 100644
--- a/code/game/objects/structures/divine.dm
+++ b/code/game/objects/structures/divine.dm
@@ -17,6 +17,7 @@
if(!L)
return
to_chat(user, "You attempt to sacrifice [L] by invoking the sacrificial ritual.")
+ L.investigate_log("has been sacrificially gibbed on an altar.", INVESTIGATE_DEATHS)
L.gib()
message_admins("[ADMIN_LOOKUPFLW(user)] has sacrificed [key_name_admin(L)] on the sacrificial altar at [AREACOORD(src)].")
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 388d58bfaddcc..7e98be116ca57 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -273,7 +273,9 @@ GLOBAL_LIST_EMPTY(crematoriums)
log_combat(user, M, "cremated")
else
M.log_message("was cremated", LOG_ATTACK)
- M.death(1)
+ if(user.stat != DEAD)
+ user.investigate_log("has died from being cremated.", INVESTIGATE_DEATHS)
+ M.death(TRUE)
if(M) //some animals get automatically deleted on death.
M.ghostize()
qdel(M)
diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm
index 1b2702f2d3cf4..b54adca7ecda7 100644
--- a/code/game/objects/structures/petrified_statue.dm
+++ b/code/game/objects/structures/petrified_statue.dm
@@ -68,8 +68,9 @@
/obj/structure/statue/petrified/deconstruct(disassembled = TRUE)
if(!disassembled)
if(petrified_mob)
+ petrified_mob.investigate_log("has been dusted by statue deconstruction.", INVESTIGATE_DEATHS)
petrified_mob.dust()
- visible_message("[src] shatters!.")
+ visible_message("[src] shatters!")
qdel(src)
diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm
index 802c7b0c7ebe8..dcba7faa8990f 100644
--- a/code/modules/admin/admin_investigate.dm
+++ b/code/modules/admin/admin_investigate.dm
@@ -11,23 +11,25 @@
return
var/list/investigates = list(
- INVESTIGATE_RESEARCH,
- INVESTIGATE_EXONET,
- INVESTIGATE_PORTAL,
- INVESTIGATE_ENGINES,
- INVESTIGATE_WIRES,
- INVESTIGATE_TELESCI,
- INVESTIGATE_GRAVITY,
- INVESTIGATE_RECORDS,
- INVESTIGATE_CARGO,
INVESTIGATE_ATMOS,
- INVESTIGATE_EXPERIMENTOR,
INVESTIGATE_BOTANY,
+ INVESTIGATE_CARGO,
+ INVESTIGATE_DEATHS,
+ INVESTIGATE_ENGINES,
+ INVESTIGATE_EXONET,
+ INVESTIGATE_EXPERIMENTOR,
+ INVESTIGATE_GRAVITY,
INVESTIGATE_HALLUCINATIONS,
- INVESTIGATE_RADIATION,
+ INVESTIGATE_ITEMS,
INVESTIGATE_NANITES,
+ INVESTIGATE_PORTAL,
INVESTIGATE_PRESENTS,
- INVESTIGATE_ITEMS)
+ INVESTIGATE_RADIATION,
+ INVESTIGATE_RECORDS,
+ INVESTIGATE_RESEARCH,
+ INVESTIGATE_TELESCI,
+ INVESTIGATE_WIRES,
+ )
var/list/logs_present = list("notes, memos, watchlist")
var/list/logs_missing = list("---")
diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm
index 33308c17d44e7..619cb5c34bb3d 100644
--- a/code/modules/admin/fun_balloon.dm
+++ b/code/modules/admin/fun_balloon.dm
@@ -60,7 +60,7 @@
to_chat(body, "Your mob has been taken over by a ghost!")
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(body)])")
- body.ghostize(0)
+ body.ghostize(FALSE)
body.key = C.key
new /obj/effect/temp_visual/gravpush(get_turf(body))
diff --git a/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm b/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm
index 5a165e8bf4aaa..41a28d5204e14 100644
--- a/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm
+++ b/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm
@@ -36,6 +36,7 @@
reac_volume = ..()
M.apply_damage(0.6*reac_volume, TOX)
if(O && ishuman(M) && M.stat == UNCONSCIOUS)
+ M.investigate_log("has been killed by distributed neurons (blob).", INVESTIGATE_DEATHS)
M.death() //sleeping in a fight? bad plan.
var/points = rand(5, 10)
var/mob/living/simple_animal/hostile/blob/blobspore/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(get_turf(M))
diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm
index 8ebfedc5233aa..fb2e7fba7d486 100644
--- a/code/modules/antagonists/blob/overmind.dm
+++ b/code/modules/antagonists/blob/overmind.dm
@@ -148,6 +148,8 @@ GLOBAL_LIST_EMPTY(blob_nodes)
if(!(FACTION_BLOB in L.faction))
playsound(L, 'sound/effects/splat.ogg', 50, 1)
+ if(L.stat != DEAD)
+ L.investigate_log("has died from blob takeover.", INVESTIGATE_DEATHS)
L.death()
new/mob/living/simple_animal/hostile/blob/blobspore(T)
else
diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm
index 3792b36b3639b..7313a5989a885 100644
--- a/code/modules/antagonists/changeling/powers/absorb.dm
+++ b/code/modules/antagonists/changeling/powers/absorb.dm
@@ -142,6 +142,8 @@
changeling.isabsorbing = 0
changeling.canrespec = 1
- target.death(0)
+ if(target.stat != DEAD)
+ target.investigate_log("has died from being changeling absorbed.", INVESTIGATE_DEATHS)
+ target.death(FALSE)
target.Drain()
return TRUE
diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm
index 85cf9dd85961a..7f75daae24be3 100644
--- a/code/modules/antagonists/changeling/powers/headcrab.dm
+++ b/code/modules/antagonists/changeling/powers/headcrab.dm
@@ -56,5 +56,6 @@
if(crab.origin)
crab.origin.active = 1
crab.origin.transfer_to(crab)
+ user.investigate_log("has been gibbed by using their Last Resort headcrab ability.", INVESTIGATE_DEATHS)
user.gib()
to_chat(crab, "You burst out of the remains of your former body in a shower of gore!")
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 34ad063d6e5bd..c974b8aa2194e 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -248,10 +248,9 @@
if(charges == 0)
qdel(src)
-/obj/item/gun/magic/tentacle/suicide_act(mob/user)
+/obj/item/gun/magic/tentacle/suicide_act(mob/living/user)
user.visible_message("[user] coils [src] tightly around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!")
- return (OXYLOSS)
-
+ return OXYLOSS
/obj/item/ammo_casing/magic/tentacle
name = "tentacle"
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index 3dc4b39cd7727..644f52368d8a4 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -335,9 +335,11 @@ structure_check() searches for nearby cultist structures required for the invoca
if(sacrificial)
if(iscyborg(sacrificial))
playsound(sacrificial, 'sound/magic/disable_tech.ogg', 100, 1)
+ sacrificial.investigate_log("has been sacrificially dusted by the cult.", INVESTIGATE_DEATHS)
sacrificial.dust() //To prevent the MMI from remaining
else
playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, 1)
+ sacrificial.investigate_log("has been sacrificially gibbed by the cult.", INVESTIGATE_DEATHS)
sacrificial.gib()
return TRUE
@@ -934,7 +936,7 @@ structure_check() searches for nearby cultist structures required for the invoca
affecting.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY)
affecting.visible_message("[affecting] freezes statue-still, glowing an unearthly red.", \
"You see what lies beyond. All is revealed. In this form you find that your voice booms louder and you can mark targets for the entire cult")
- var/mob/dead/observer/G = affecting.ghostize(1)
+ var/mob/dead/observer/G = affecting.ghostize(TRUE)
var/datum/action/innate/cult/comm/spirit/CM = new
var/datum/action/innate/cult/ghostmark/GM = new
G.name = "Dark Spirit of [G.name]"
diff --git a/code/modules/antagonists/heretic/influences.dm b/code/modules/antagonists/heretic/influences.dm
index 8b394c5d71477..fbf5e092f56d4 100644
--- a/code/modules/antagonists/heretic/influences.dm
+++ b/code/modules/antagonists/heretic/influences.dm
@@ -183,6 +183,7 @@
qdel(head)
else
human_user.gib()
+ human_user.investigate_log("has died from using telekinesis on a heretic influence.", INVESTIGATE_DEATHS)
var/datum/effect_system/reagents_explosion/explosion = new()
explosion.set_up(1, get_turf(human_user), TRUE, 0)
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
index 9d696dd4f9f4b..fee23bad30d2a 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
@@ -482,6 +482,7 @@
sac_target.spill_organs()
sac_target.apply_damage(250, BRUTE)
if(sac_target.stat != DEAD)
+ sac_target.investigate_log("has been killed by heretic sacrifice.", INVESTIGATE_DEATHS)
sac_target.death()
sac_target.visible_message(
"[sac_target]'s organs are pulled out of [sac_target.p_their()] chest by shadowy hands!",
diff --git a/code/modules/antagonists/heretic/magic/mansus_grasp.dm b/code/modules/antagonists/heretic/magic/mansus_grasp.dm
index bdc671294c5fc..0fb467dce66db 100644
--- a/code/modules/antagonists/heretic/magic/mansus_grasp.dm
+++ b/code/modules/antagonists/heretic/magic/mansus_grasp.dm
@@ -86,7 +86,7 @@
return TRUE
-/obj/item/melee/touch_attack/mansus_fist/suicide_act(mob/user)
+/obj/item/melee/touch_attack/mansus_fist/suicide_act(mob/living/user)
user.visible_message("[user] covers [user.p_their()] face with [user.p_their()] sickly-looking hand! It looks like [user.p_theyre()] trying to commit suicide!")
var/mob/living/carbon/carbon_user = user //iscarbon already used in spell's parent
if(!IS_HERETIC(user))
diff --git a/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm b/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm
index 9b63424954158..0c484e312d3dd 100644
--- a/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm
+++ b/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm
@@ -24,6 +24,7 @@
continue
//This is essentially a death mark, use this to finish your opponent quicker.
if(target.InCritical() && !HAS_TRAIT(target, TRAIT_NODEATH))
+ target.investigate_log("has been killed by fiery rebirth.", INVESTIGATE_DEATHS)
target.death()
target.adjustFireLoss(20)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 946ea478f5c5a..a62ef4234ab55 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -612,6 +612,8 @@
return
for(var/mob/M in GLOB.mob_list)
if(M.stat != DEAD && M.get_virtual_z_level() == z)
+ to_chat(M, "You are shredded to atoms!")
+ M.investigate_log("has been gibbed by a nuclear blast.", INVESTIGATE_DEATHS)
M.gib()
/*
@@ -733,7 +735,7 @@ This is here to make the tiles around the station mininuke change when it's arme
return TRUE
return ..()
-/obj/item/disk/nuclear/suicide_act(mob/user)
+/obj/item/disk/nuclear/suicide_act(mob/living/user)
user.visible_message("[user] is going delta! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(src, 'sound/machines/alarm.ogg', 50, -1, TRUE)
for(var/i in 1 to 100)
@@ -745,7 +747,7 @@ This is here to make the tiles around the station mininuke change when it's arme
user.remove_atom_colour(ADMIN_COLOUR_PRIORITY)
user.visible_message("[user] is destroyed by the nuclear blast!")
user.adjustOxyLoss(200)
- user.death(0)
+ user.death(FALSE)
/obj/item/disk/nuclear/fake
fake = TRUE
diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm
index ed585f33f995a..1f147c110d771 100644
--- a/code/modules/antagonists/revenant/revenant.dm
+++ b/code/modules/antagonists/revenant/revenant.dm
@@ -530,10 +530,10 @@
revenant = null
qdel(src)
-/obj/item/ectoplasm/revenant/suicide_act(mob/user)
+/obj/item/ectoplasm/revenant/suicide_act(mob/living/user)
user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!")
scatter()
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/ectoplasm/revenant/Destroy()
if(!QDELETED(revenant))
diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm
index 230014931f5f6..998b59287a2a3 100644
--- a/code/modules/antagonists/revenant/revenant_abilities.dm
+++ b/code/modules/antagonists/revenant/revenant_abilities.dm
@@ -134,7 +134,9 @@
target.visible_message("[target] slumps onto the ground.", \
"Violets lights, dancing in your vision, getting clo--")
drained_mobs.Add(target)
- target.death(0)
+ if(target.stat != DEAD)
+ target.investigate_log("has died from revenant harvest.", INVESTIGATE_DEATHS)
+ target.death(FALSE)
else
to_chat(src, "[target ? "[target] has":"[target.p_theyve(TRUE)]"] been drawn out of your grasp. The link has been broken.")
if(target) //Wait, target is WHERE NOW?
diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm
index fc7269fbf6afb..b16db081ffad9 100644
--- a/code/modules/antagonists/slaughter/slaughter.dm
+++ b/code/modules/antagonists/slaughter/slaughter.dm
@@ -154,11 +154,12 @@
/mob/living/simple_animal/slaughter/laughter/ex_act(severity)
switch(severity)
- if(1)
+ if(EXPLODE_DEVASTATE)
+ investigate_log("has died from a devastating explosion.", INVESTIGATE_DEATHS)
death()
- if(2)
+ if(EXPLODE_HEAVY)
adjustBruteLoss(60)
- if(3)
+ if(EXPLODE_LIGHT)
adjustBruteLoss(30)
/mob/living/simple_animal/slaughter/laughter/proc/release_friends()
diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index 27f9dfc4477a2..f184949b58fe5 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -391,6 +391,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
if(issilicon(L))
continue
to_chat(L, "The blast wave from [src] tears you atom from atom!")
+ L.investigate_log("has been dusted by a doomsday device.", INVESTIGATE_DEATHS)
L.dust()
to_chat(world, "The AI cleansed the station of life with the Doomsday device!")
SSticker.force_ending = 1
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index 8e1aa524513bc..cdb3511ea8235 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -147,6 +147,7 @@
return
C.vomit(0, TRUE, TRUE, 3, TRUE)
C.spew_organ(3, 2)
+ C.investigate_log("has died from using telekinesis on a tear in reality.", INVESTIGATE_DEATHS)
C.death()
/obj/tear_in_reality/Bump(atom/A)
@@ -415,7 +416,7 @@
/obj/item/voodoo/suicide_act(mob/living/carbon/user)
user.visible_message("[user] links the voodoo doll to [user.p_them()]self and sits on it, infinitely crushing [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
user.gib()
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume)
if(target)
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 1ed13726a57bd..c4e3a6e1b1347 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -36,9 +36,7 @@
else
user.visible_message("[user]'s [src] receives a signal and [user.p_they()] die[user.p_s()] like a gamer!")
user.adjustOxyLoss(200)//it sends an electrical pulse to their heart, killing them. or something.
- user.death(0)
- user.set_suicide(TRUE)
- user.suicide_log()
+ user.death(FALSE)
playsound(user, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
qdel(src)
@@ -204,7 +202,6 @@
/obj/item/assembly/signaler/anomaly/manual_suicide(mob/living/carbon/user)
user.visible_message("[user]'s [src] is reacting to the radio signal, warping [user.p_their()] body!")
user.set_suicide(TRUE)
- user.suicide_log()
user.gib()
/obj/item/assembly/signaler/anomaly/attackby(obj/item/I, mob/user, params)
diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm
index e6ffbfcba0d40..830a8c32f8efc 100644
--- a/code/modules/assembly/timer.dm
+++ b/code/modules/assembly/timer.dm
@@ -21,7 +21,7 @@
/obj/item/assembly/timer/proc/manual_suicide(mob/living/user)
user.visible_message("[user]'s time is up!")
user.adjustOxyLoss(200)
- user.death(0)
+ user.death(FALSE)
/obj/item/assembly/timer/Initialize(mapload)
. = ..()
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index e602f3b17804b..a3af0fd37d364 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -591,6 +591,7 @@
return
if(!(src.team in L.faction))
to_chat(L, "Stay out of the enemy spawn!")
+ L.investigate_log("has died from entering the enemy spawn in CTF.", INVESTIGATE_DEATHS)
L.death()
/obj/structure/trap/ctf/red
diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm
index c2943b1c67c54..93e95ab50e35a 100644
--- a/code/modules/client/verbs/suicide.dm
+++ b/code/modules/client/verbs/suicide.dm
@@ -75,12 +75,15 @@
adjustOxyLoss(200/damage_mod)
if(damagetype & MANUAL_SUICIDE) //Assume the object will handle the death.
+ investigate_log("has died from committing suicide[held_item ? " with [held_item]" : ""].", INVESTIGATE_DEATHS)
return
//If something went wrong, just do normal oxyloss
if(!(damagetype & (BRUTELOSS | FIRELOSS | TOXLOSS | OXYLOSS) ))
adjustOxyLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
+ investigate_log("has died from committing suicide[held_item ? " with [held_item]" : ""].", INVESTIGATE_DEATHS)
+
death(FALSE)
ghostize(FALSE,SENTIENCE_ERASE) // Disallows reentering body and disassociates mind
@@ -113,6 +116,7 @@
suicide_log()
adjustOxyLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
+ investigate_log("has died from committing suicide[held_item ? " with [held_item]" : ""].", INVESTIGATE_DEATHS)
death(FALSE)
/mob/living/brain/verb/suicide()
@@ -241,6 +245,7 @@
ghostize(FALSE,SENTIENCE_ERASE) // Disallows reentering body and disassociates mind
/mob/living/proc/suicide_log()
+ investigate_log("has died from committing suicide.", INVESTIGATE_DEATHS)
log_game("[key_name(src)] committed suicide at [AREACOORD(src)] as [src.type].")
if(CONFIG_GET(flag/restricted_suicide))
message_admins("[key_name(src)] committed suicide at [AREACOORD(src)] as [src.type].")
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 6b8381be237c3..a54aaabb09f40 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -15,7 +15,7 @@
dynamic_hair_suffix = ""
dog_fashion = /datum/dog_fashion/head/chef
-/obj/item/clothing/head/chefhat/suicide_act(mob/user)
+/obj/item/clothing/head/chefhat/suicide_act(mob/living/user)
user.visible_message("[user] is donning [src]! It looks like [user.p_theyre()] trying to become a chef.")
user.say("Bork Bork Bork!", forced = "chef hat suicide")
sleep(20)
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index bcc6790770d8e..a4374a061b093 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -200,15 +200,15 @@
desc = "A really cool hat if you're a mobster. A really lame hat if you're not."
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
-/obj/item/clothing/head/fedora/suicide_act(mob/user)
+/obj/item/clothing/head/fedora/suicide_act(mob/living/user)
if(user.gender == FEMALE)
- return 0
+ return
var/mob/living/carbon/human/H = user
user.visible_message("[user] is donning [src]! It looks like [user.p_theyre()] trying to be nice to girls.")
user.say("M'lady.", forced = "fedora suicide")
sleep(10)
H.facial_hair_style = "Neckbeard"
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/clothing/head/sombrero
name = "sombrero"
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 92427e6120d87..daf35b7ed9bc0 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -22,7 +22,7 @@
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_blood))
/obj/item/clothing/shoes/suicide_act(mob/living/carbon/user)
- if(rand(2)>1)
+ if(prob(50))
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(BODY_ZONE_L_LEG)
var/obj/item/bodypart/r_leg = user.get_bodypart(BODY_ZONE_R_LEG)
@@ -37,8 +37,8 @@
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 in 1 to 3)
sleep(3)
- playsound(user, 'sound/weapons/genhit2.ogg', 50, 1)
- return(BRUTELOSS)
+ playsound(user, 'sound/weapons/genhit2.ogg', 50, TRUE)
+ return BRUTELOSS
/obj/item/clothing/shoes/worn_overlays(mutable_appearance/standing, isinhands = FALSE)
. = list()
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index 935fd3ac08407..4405c35131a2c 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -11,9 +11,9 @@
flags_inv = HIDESUITSTORAGE
pocket_storage_component_path = /datum/component/storage/concrete/pockets/exo/cloak
-/obj/item/clothing/neck/cloak/suicide_act(mob/user)
+/obj/item/clothing/neck/cloak/suicide_act(mob/living/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)
+ return OXYLOSS
/obj/item/clothing/neck/cloak/hos
name = "head of security's cloak"
diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm
index 3757f5c985c79..1957c914783e5 100644
--- a/code/modules/detectivework/footprints_and_rag.dm
+++ b/code/modules/detectivework/footprints_and_rag.dm
@@ -19,9 +19,9 @@
volume = 5
spillable = FALSE
-/obj/item/reagent_containers/glass/rag/suicide_act(mob/user)
+/obj/item/reagent_containers/glass/rag/suicide_act(mob/living/user)
user.visible_message("[user] is smothering [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity)
. = ..()
diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm
index af43e8f33b2f1..2a06c93634a65 100644
--- a/code/modules/food_and_drinks/food/condiment.dm
+++ b/code/modules/food_and_drinks/food/condiment.dm
@@ -152,7 +152,7 @@
volume = 20
list_reagents = list(/datum/reagent/consumable/sodiumchloride = 20)
-/obj/item/reagent_containers/food/condiment/saltshaker/suicide_act(mob/user)
+/obj/item/reagent_containers/food/condiment/saltshaker/suicide_act(mob/living/user)
user.visible_message("[user] begins to swap forms with the salt shaker! It looks like [user.p_theyre()] trying to commit suicide!")
var/newname = "[name]"
name = "[user.name]"
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index e835d08b41dbe..34c979f870f86 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -197,7 +197,8 @@
skin = new typeofskin
log_combat(user, occupant, "gibbed")
- mob_occupant.death(1)
+ mob_occupant.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
+ mob_occupant.death(TRUE)
mob_occupant.ghostize()
set_occupant(null)
qdel(mob_occupant)
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index 7daf32062ecda..e9037774051b1 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -27,18 +27,18 @@
juice_results = list(/datum/reagent/consumable/banana = 0)
distill_reagent = /datum/reagent/consumable/ethanol/bananahonk
-/obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
+/obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/living/user)
user.visible_message("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1)
sleep(25)
if(!user)
- return (OXYLOSS)
+ return OXYLOSS
user.say("BANG!", forced = /datum/reagent/consumable/banana)
sleep(25)
if(!user)
- return (OXYLOSS)
+ return OXYLOSS
user.visible_message("[user] laughs so hard they begin to suffocate!")
- return (OXYLOSS)
+ return OXYLOSS
//Banana Peel
/obj/item/grown/bananapeel
@@ -54,10 +54,10 @@
throw_speed = 3
throw_range = 7
-/obj/item/grown/bananapeel/suicide_act(mob/user)
+/obj/item/grown/bananapeel/suicide_act(mob/living/user)
user.visible_message("[user] is deliberately slipping on [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
// Mimana - invisible sprites are totally a feature!
diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm
index c3aa666ccc97f..799a3aca66511 100644
--- a/code/modules/hydroponics/grown/kudzu.dm
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -21,10 +21,10 @@
S.mutations = mutations.Copy()
return S
-/obj/item/seeds/kudzu/suicide_act(mob/user)
+/obj/item/seeds/kudzu/suicide_act(mob/living/user)
user.visible_message("[user] swallows the pack of kudzu seeds! It looks like [user.p_theyre()] trying to commit suicide!")
plant(user)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/seeds/kudzu/proc/plant(mob/user)
if(isspaceturf(user.loc))
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index ff19627c3d6c2..7c2851e06426f 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -14,7 +14,7 @@
mutatelist = list(/obj/item/seeds/watermelon/holy, /obj/item/seeds/watermelon/ballolon)
reagents_add = list(/datum/reagent/water = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2)
-/obj/item/seeds/watermelon/suicide_act(mob/user)
+/obj/item/seeds/watermelon/suicide_act(mob/living/user)
user.visible_message("[user] is swallowing [src]! It looks like [user.p_theyre()] trying to commit suicide!")
user.gib()
new product(drop_location())
diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm
index 154a3cdbcda33..ca826554c87cc 100644
--- a/code/modules/hydroponics/grown/nettle.dm
+++ b/code/modules/hydroponics/grown/nettle.dm
@@ -45,7 +45,7 @@
throw_range = 3
attack_verb = list("stung")
-/obj/item/reagent_containers/food/snacks/grown/nettle/suicide_act(mob/user)
+/obj/item/reagent_containers/food/snacks/grown/nettle/suicide_act(mob/living/user)
user.visible_message("[user] is eating some of [src]! It looks like [user.p_theyre()] trying to commit suicide!")
return (BRUTELOSS|TOXLOSS)
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 98ae2bc0a3533..1b364a9d23c96 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -27,9 +27,9 @@
volume = 100
list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 100)
-/obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user)
+/obj/item/reagent_containers/spray/weedspray/suicide_act(mob/living/user)
user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (TOXLOSS)
+ return TOXLOSS
/obj/item/reagent_containers/spray/pestspray // -- Skie
desc = "It's some pest eliminator spray! Do not inhale!"
@@ -42,9 +42,9 @@
volume = 100
list_reagents = list(/datum/reagent/toxin/pestkiller = 100)
-/obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user)
+/obj/item/reagent_containers/spray/pestspray/suicide_act(mob/living/user)
user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (TOXLOSS)
+ return TOXLOSS
/obj/item/cultivator
name = "cultivator"
@@ -62,9 +62,9 @@
attack_verb = list("slashed", "sliced", "cut", "clawed")
hitsound = 'sound/weapons/bladeslice.ogg'
-/obj/item/cultivator/suicide_act(mob/user)
+/obj/item/cultivator/suicide_act(mob/living/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)
+ return BRUTELOSS
/obj/item/hatchet
name = "hatchet"
@@ -90,10 +90,10 @@
. = ..()
AddComponent(/datum/component/butchering, 70, 100)
-/obj/item/hatchet/suicide_act(mob/user)
+/obj/item/hatchet/suicide_act(mob/living/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(src, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/scythe
icon_state = "scythe0"
@@ -118,7 +118,7 @@
. = ..()
AddComponent(/datum/component/butchering, 90, 105)
-/obj/item/scythe/suicide_act(mob/user)
+/obj/item/scythe/suicide_act(mob/living/user)
user.visible_message("[user] is beheading [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
if(iscarbon(user))
var/mob/living/carbon/C = user
@@ -126,7 +126,7 @@
if(BP)
BP.drop_limb()
playsound(src,pick('sound/misc/desecration-01.ogg','sound/misc/desecration-02.ogg','sound/misc/desecration-01.ogg') ,50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/scythe/pre_attack(atom/A, mob/living/user, params)
if(swiping || !istype(A, /obj/structure/spacevine) || get_turf(A) == get_turf(user))
diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm
index 8f8e716f63cce..dde806fa765e5 100644
--- a/code/modules/instruments/items.dm
+++ b/code/modules/instruments/items.dm
@@ -27,9 +27,9 @@
/obj/item/instrument/proc/should_stop_playing(mob/user)
return user.incapacitated() || !((loc == user) || (isturf(loc) && Adjacent(user))) // sorry, no more TK playing.
-/obj/item/instrument/suicide_act(mob/user)
+/obj/item/instrument/suicide_act(mob/living/user)
user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/instrument/attack_self(mob/user)
if(!user.IsAdvancedToolUser())
diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm
index ffa3762eb7c22..04fc89ab5c7c6 100644
--- a/code/modules/mining/coins.dm
+++ b/code/modules/mining/coins.dm
@@ -49,10 +49,10 @@
/obj/item/coin/proc/manual_suicide(mob/living/user)
var/index = sideslist.Find(coinflip)
- if (index==2)//tails
+ if (index == 2)//tails
user.visible_message("\the [src] lands on [coinflip]! [user] promptly falls over, dead!")
user.adjustOxyLoss(200)
- user.death(0)
+ user.death(FALSE)
user.set_suicide(TRUE)
user.suicide_log()
else
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index cf9a7beac4f6b..c7a98b9fb6479 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -734,7 +734,7 @@
"Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.\n"+\
"Transforming it immediately after an attack causes the next attack to come out faster."
-/obj/item/melee/transforming/cleaving_saw/suicide_act(mob/user)
+/obj/item/melee/transforming/cleaving_saw/suicide_act(mob/living/user)
user.visible_message("[user] is [active ? "closing [src] on [user.p_their()] neck" : "opening [src] into [user.p_their()] chest"]! It looks like [user.p_theyre()] trying to commit suicide!")
transform_cooldown = 0
transform_weapon(user, TRUE)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index c59a2060159d8..310ed36a29751 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -308,7 +308,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(stat != DEAD)
succumb()
if(stat == DEAD)
- ghostize(1)
+ ghostize(TRUE)
else
var/response = tgui_alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost whilst still alive you may not play again this round! You can't change your mind so choose wisely!!)", "Are you sure you want to ghost?", list("Ghost", "Stay in body"))
if(response != "Ghost")
diff --git a/code/modules/mob/living/basic/basic_defense.dm b/code/modules/mob/living/basic/basic_defense.dm
index ac5c261a85a6f..0e4c2e221b3f5 100644
--- a/code/modules/mob/living/basic/basic_defense.dm
+++ b/code/modules/mob/living/basic/basic_defense.dm
@@ -157,6 +157,7 @@
if(prob(bomb_armor))
adjustBruteLoss(500)
else
+ investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
gib()
return
if (EXPLODE_HEAVY)
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index c0577c6a6dfb3..9edaa6d1706db 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -127,7 +127,9 @@
src.revive(full_heal = 1)
// No defib possible after laughter
- victim.adjustBruteLoss(1000)
+ victim.apply_damage(1000, BRUTE)
+ if(victim.stat != DEAD)
+ victim.investigate_log("has been killed by being consumed by a slaugter demon.", INVESTIGATE_DEATHS)
victim.death()
bloodcrawl_swallow(victim)
return TRUE
diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm
index 3536574d11252..7718d6f255f3c 100644
--- a/code/modules/mob/living/brain/brain.dm
+++ b/code/modules/mob/living/brain/brain.dm
@@ -26,8 +26,8 @@
/mob/living/brain/Destroy()
if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting.
- if(stat!=DEAD) //If not dead.
- death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA
+ if(stat != DEAD)
+ death(TRUE)
if(mind) //You aren't allowed to return to brains that don't exist
mind.set_current(null)
ghostize() //Ghostize checks for key so nothing else is necessary.
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index e9be3a75242ab..d251ef72d5936 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -178,6 +178,7 @@
/obj/item/organ/brain/on_life()
if(damage >= BRAIN_DAMAGE_DEATH) //rip
to_chat(owner, "The last spark of life in your brain fizzles out.")
+ owner.investigate_log("has been killed by brain damage.", INVESTIGATE_DEATHS)
owner.death()
brain_death = TRUE
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index 759f53ca0b243..c91f2cb9b9b88 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -127,6 +127,7 @@
new_xeno.visible_message("[new_xeno] wriggles out of [owner]!", "You exit [owner], your previous host.")
owner.adjustBruteLoss(40)
host.cut_overlay(overlay)
+ owner.investigate_log("has been killed by an alien larva chestburst.", INVESTIGATE_DEATHS)
qdel(src)
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 0de5ea66f2428..83277ddece517 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -91,6 +91,27 @@
//Death
dust(TRUE)
return
+ if(key) // Prevents log spamming of keyless mob deaths (like xenobio monkeys)
+ investigate_log("has died at [loc_name(src)].
\
+ BRUTE: [src.getBruteLoss()] BURN: [src.getFireLoss()] TOX: [src.getToxLoss()] OXY: [src.getOxyLoss()] CLONE: [src.getCloneLoss()] STAM: [src.getStaminaLoss()]
\
+ Brain damage: [src.getOrganLoss(ORGAN_SLOT_BRAIN) || "0"]
\
+ Blood volume: [src.blood_volume]cl ([round((src.blood_volume / BLOOD_VOLUME_NORMAL) * 100, 0.1)]%)
\
+ Reagents:
[reagents_readout()]", INVESTIGATE_DEATHS)
+ to_chat(src, "You have died. Barring complete bodyloss, you can in most cases be revived by other players. If you do not wish to be brought back, use the \"Do Not Resuscitate\" verb in the ghost tab.")
+
+/mob/living/carbon/human/proc/reagents_readout()
+ var/readout = "Blood:"
+ for(var/datum/reagent/reagent in reagents?.reagent_list)
+ readout += "
[round(reagent.volume, 0.001)] units of [reagent.name]"
+ /*
+ readout += "
Stomach:"
+ var/obj/item/organ/internal/stomach/belly = getorganslot(ORGAN_SLOT_STOMACH)
+ for(var/datum/reagent/bile in belly?.reagents?.reagent_list)
+ if(!belly.food_reagents[bile.type])
+ readout += "
[round(bile.volume, 0.001)] units of [bile.name]"
+ */
+
+ return readout
/mob/living/carbon/human/proc/makeSkeleton()
ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 46103244cabed..4359e07bd7794 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -412,6 +412,7 @@
SSexplosions.med_mov_atom += thing
if(EXPLODE_LIGHT)
SSexplosions.low_mov_atom += thing
+ investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
gib()
return
else
diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
index e7222cbe951ef..9539e0a6cb596 100644
--- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
@@ -44,14 +44,15 @@
H.regenerate_limb(BODY_ZONE_HEAD,FALSE)
..()
-/datum/species/dullahan/spec_life(mob/living/carbon/human/H)
+/datum/species/dullahan/spec_life(mob/living/carbon/human/human)
if(QDELETED(myhead))
myhead = null
- H.gib()
- var/obj/item/bodypart/head/head2 = H.get_bodypart(BODY_ZONE_HEAD)
+ human.investigate_log("has been gibbed by the loss of [human.p_their()] head.", INVESTIGATE_DEATHS)
+ human.gib()
+ var/obj/item/bodypart/head/head2 = human.get_bodypart(BODY_ZONE_HEAD)
if(head2)
myhead = null
- H.gib()
+ human.gib()
/datum/species/dullahan/proc/update_vision_perspective(mob/living/carbon/human/H)
var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES)
@@ -179,6 +180,7 @@
if(H.dna.species.id == SPECIES_DULLAHAN)
var/datum/species/dullahan/D = H.dna.species
D.myhead = null
+ owner.investigate_log("has been gibbed by the destruction of their head/body relay.", INVESTIGATE_DEATHS)
owner.gib()
owner = null
return ..()
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index bbfa06c663a51..9f5c8c81f8704 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -129,6 +129,7 @@
if(H.bodytemperature > 850 && H.on_fire && prob(25))
explosion(get_turf(H),1,2,4,flame_range = 5)
if(H)
+ H.investigate_log("has been gibbed as [H.p_their()] body explodes.", INVESTIGATE_DEATHS)
H.gib()
if(H.fire_stacks < 2) //flammable
H.adjust_fire_stacks(1)
diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm
index 5a31613e1f91b..50a4022c48485 100644
--- a/code/modules/mob/living/carbon/human/species_types/vampire.dm
+++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm
@@ -50,6 +50,7 @@
var/obj/shapeshift_holder/H = locate() in C
if(H)
H.shape.dust() //make sure we're killing the bat if you are out of blood, if you don't it creates weird situations where the bat is alive but the caster is dusted.
+ C.investigate_log("has been dusted by a lack of blood (vampire).", INVESTIGATE_DEATHS)
C.dust()
var/area/A = get_area(C)
if(istype(A, /area/chapel))
diff --git a/code/modules/mob/living/carbon/human/suicides.dm b/code/modules/mob/living/carbon/human/suicides.dm
index 2670149965bc7..e7d7ff3c75b3c 100644
--- a/code/modules/mob/living/carbon/human/suicides.dm
+++ b/code/modules/mob/living/carbon/human/suicides.dm
@@ -1,6 +1,7 @@
/mob/living/carbon/human/proc/delayed_suicide()
suicide_log()
adjustBruteLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
+ investigate_log("has died from committing suicide.", INVESTIGATE_DEATHS)
death(FALSE)
ghostize(FALSE,SENTIENCE_ERASE) // Disallows reentering body and disassociates mind
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index f16ec26a021c1..22d2141c151bf 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -421,6 +421,7 @@
if (src.client)
client.give_award(/datum/award/achievement/misc/succumb, client.mob)
+ investigate_log("has succumbed to death.", INVESTIGATE_DEATHS)
death()
/mob/living/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_stasis = FALSE)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 3388ed4d748f3..14eb83aed3f3a 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -404,6 +404,7 @@
investigate_log("([key_name(src)]) has been consumed by the singularity.", INVESTIGATE_ENGINES) //Oh that's where the clown ended up!
+ investigate_log("has been gibbed by the singularity.", INVESTIGATE_DEATHS)
gib()
return(gain)
diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm
index c5cbfb4d37c55..bfbd22526a0ac 100644
--- a/code/modules/mob/living/silicon/ai/ai_defense.dm
+++ b/code/modules/mob/living/silicon/ai/ai_defense.dm
@@ -35,13 +35,14 @@
/mob/living/silicon/ai/ex_act(severity, target)
switch(severity)
- if(1)
+ if(EXPLODE_DEVASTATE)
+ investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
gib()
- if(2)
+ if(EXPLODE_HEAVY)
if (stat != DEAD)
adjustBruteLoss(60)
adjustFireLoss(60)
- if(3)
+ if(EXPLODE_LIGHT)
if (stat != DEAD)
adjustBruteLoss(30)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index b81a34347cedc..a149ce947cf06 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -658,6 +658,7 @@
explosion(src.loc,1,2,4,flame_range = 2)
else
explosion(src.loc,-1,0,2)
+ investigate_log("has self-destructed.", INVESTIGATE_DEATHS)
gib()
/mob/living/silicon/robot/proc/UnlinkSelf()
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 7295f354ddd93..4327ac64e5c91 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -175,19 +175,20 @@
if(stat != DEAD)
adjustBruteLoss(30)
else
+ investigate_log("has been gibbed a blob.", INVESTIGATE_DEATHS)
gib()
return TRUE
/mob/living/silicon/robot/ex_act(severity, target)
switch(severity)
- if(1)
+ if(EXPLODE_DEVASTATE)
gib()
return
- if(2)
+ if(EXPLODE_HEAVY)
if (stat != DEAD)
adjustBruteLoss(60)
adjustFireLoss(60)
- if(3)
+ if(EXPLODE_LIGHT)
if (stat != DEAD)
adjustBruteLoss(30)
diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm
index 67a7ea5dbff75..3f8b456cfd78e 100644
--- a/code/modules/mob/living/simple_animal/animal_defense.dm
+++ b/code/modules/mob/living/simple_animal/animal_defense.dm
@@ -153,6 +153,7 @@
if(prob(bomb_armor))
adjustBruteLoss(500)
else
+ investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
gib()
return
if (EXPLODE_HEAVY)
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index 1d3fe678c2d54..458afe1cceac6 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -1075,7 +1075,7 @@ Pass a positive integer as an argument to override a bot's default speed.
else if(paicard.pai)
paicard.pai.key = key
else
- ghostize(0) // The pAI card that just got ejected was dead.
+ ghostize(FALSE) // The pAI card that just got ejected was dead.
key = null
paicard.forceMove(loc)
if(user)
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index e56c81f0661b9..d198c210daf20 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -512,6 +512,7 @@ GLOBAL_LIST_INIT(strippable_corgi_items, create_strippable_list(list(
playsound(src, 'sound/magic/demon_dies.ogg', 75, TRUE)
var/mob/living/simple_animal/pet/dog/corgi/narsie/N = new(loc)
N.setDir(dir)
+ investigate_log("has been gibbed by Nar'Sie.", INVESTIGATE_DEATHS)
gib()
/mob/living/simple_animal/pet/dog/corgi/narsie
@@ -540,6 +541,7 @@ GLOBAL_LIST_INIT(strippable_corgi_items, create_strippable_list(list(
P.mind.hasSoul = FALSE //Nars-Ian ate your soul; you don't have one anymore
else
visible_message("... Aw, someone beat me to this one.")
+ P.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
P.gib()
/mob/living/simple_animal/pet/dog/corgi/narsie/update_corgi_fluff()
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index da9b4466e37bf..8771d9ae17c1e 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -185,6 +185,7 @@
if(isliving(cocoon_target))
var/mob/living/L = cocoon_target
if(L.stat != DEAD)
+ L.investigate_log("has been killed by being wrapped in a cocoon.", INVESTIGATE_DEATHS)
L.death() //If it's not already dead, we want it dead regardless of nourishment
if(L.blood_volume >= BLOOD_VOLUME_BAD && !isipc(L)) //IPCs and drained mobs are not nourishing.
L.blood_volume = 0 //Remove all fluids from this mob so they are no longer nourishing.
diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm
index 8255a5200c58c..233dcdd9bc358 100644
--- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm
+++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm
@@ -81,6 +81,7 @@
C.purchasedpowers += hf
C.regain_powers()
M.key = origin.key
+ owner.investigate_log("has been gibbed by a changeling egg burst.", INVESTIGATE_DEATHS)
owner.gib()
#undef EGG_INCUBATION_TIME
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index 104fb9cfaf1ec..dfa67b826d1c8 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -159,6 +159,7 @@ Difficulty: Medium
adjustHealth(-L.maxHealth)
else
adjustHealth(-(L.maxHealth * 0.5))
+ L.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
L.gib()
return TRUE
changeNext_move(CLICK_CD_MELEE)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 13912305ed3ad..3c15e33bd7259 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -811,6 +811,7 @@ GLOBAL_DATUM(blackbox, /obj/machinery/smartfridge/black_box)
if(holder_animal)
if(holder_animal.stat == DEAD)
dump_contents()
+ holder_animal.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
holder_animal.gib()
return
@@ -832,7 +833,7 @@ GLOBAL_DATUM(blackbox, /obj/machinery/smartfridge/black_box)
holder_animal.mind.AddSpell(P)
holder_animal.remove_verb(/mob/living/verb/pulled)
-/obj/structure/closet/stasis/dump_contents(var/kill = 1)
+/obj/structure/closet/stasis/dump_contents(kill = TRUE)
STOP_PROCESSING(SSobj, src)
for(var/mob/living/L in src)
REMOVE_TRAIT(L, TRAIT_MUTE, STASIS_MUTE)
@@ -842,7 +843,8 @@ GLOBAL_DATUM(blackbox, /obj/machinery/smartfridge/black_box)
holder_animal.mind.transfer_to(L)
L.mind.RemoveSpell(/obj/effect/proc_holder/spell/targeted/exit_possession)
if(kill || !isanimal(loc))
- L.death(0)
+ L.investigate_log("has died from [src].", INVESTIGATE_DEATHS)
+ L.death(FALSE)
..()
/obj/structure/closet/stasis/emp_act()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index 75d9babae28ed..6eccca975f992 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -353,6 +353,7 @@ Difficulty: Medium
for(var/mob/living/L in orange(1, src))
if(L.stat)
visible_message("[src] slams down on [L], crushing [L.p_them()]!")
+ L.investigate_log("has been gibbed by lava swoop.", INVESTIGATE_DEATHS)
L.gib()
else
L.adjustBruteLoss(75)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 4bc2a4358ae2f..00688edf2d482 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -126,6 +126,7 @@
for(var/obj/item/W in L)
if(!L.dropItemToGround(W))
qdel(W)
+ L.investigate_log("has been devoured by [src].", INVESTIGATE_DEATHS)
L.gib()
return TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
index 36223308241ad..44af7d8b8b987 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
@@ -51,11 +51,12 @@
/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target)
switch(severity)
- if(1)
+ if(EXPLODE_DEVASTATE)
+ investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
gib()
- if(2)
+ if(EXPLODE_HEAVY)
adjustBruteLoss(140)
- if(3)
+ if(EXPLODE_LIGHT)
adjustBruteLoss(110)
//Watcher
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
index 08f3ea7678c37..dbc912eda4a84 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
@@ -189,6 +189,7 @@
else
L = new(H.loc)
visible_message("[L] staggers to [L.p_their()] feet!")
+ H.investigate_log("has been killed by hivelord infestation.", INVESTIGATE_DEATHS)
H.death()
H.adjustBruteLoss(1000)
L.stored_mob = H
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 20376364bf4e5..01ff49834b284 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -504,7 +504,7 @@
var/mob/dead/observer/C = pick(candidates)
to_chat(M, "Your mob has been taken over by a ghost!")
message_admins("[key_name_admin(C)] has taken control of ([ADMIN_LOOKUPFLW(M)])")
- M.ghostize(0)
+ M.ghostize(FALSE)
M.key = C.key
return TRUE
else
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index aafc1e3148ef5..9120f2c7a6075 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -99,7 +99,7 @@
target = nTarget
update_text()
-/obj/item/paper/contract/infernal/suicide_act(mob/user)
+/obj/item/paper/contract/infernal/suicide_act(mob/living/user)
if(signed && (user == target.current) && istype(user, /mob/living/carbon/human/))
var/mob/living/carbon/human/H = user
H.say("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!", forced = "infernal contract suicide")
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index de0daed22f05f..f0dd2c4295287 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -9,7 +9,7 @@
var/labels_left = 30
var/mode = 0
-/obj/item/hand_labeler/suicide_act(mob/user)
+/obj/item/hand_labeler/suicide_act(mob/living/user)
user.visible_message("[user] is pointing [src] at [user.p_them()]self. [user.p_theyre(TRUE)] going to label [user.p_them()]self as a suicide!")
labels_left = max(labels_left - 1, 0)
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index d76e2be4fa24a..07183d755d97d 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -301,9 +301,9 @@
add_fingerprint(usr)
update_static_data()
-/obj/item/paper/suicide_act(mob/user)
+/obj/item/paper/suicide_act(mob/living/user)
user.visible_message("[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/paper/examine(mob/user)
. = ..()
diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm
index 7a176a6c183d0..48b3fa8f9279a 100644
--- a/code/modules/paperwork/paper_cutter.dm
+++ b/code/modules/paperwork/paper_cutter.dm
@@ -18,7 +18,7 @@
update_icon()
-/obj/item/papercutter/suicide_act(mob/user)
+/obj/item/papercutter/suicide_act(mob/living/user)
if(storedcutter)
user.visible_message("[user] is beheading [user.p_them()]self with [src.name]! It looks like [user.p_theyre()] trying to commit suicide!")
if(iscarbon(user))
@@ -27,11 +27,11 @@
if(BP)
BP.drop_limb()
playsound(loc,pick('sound/misc/desecration-01.ogg','sound/misc/desecration-02.ogg','sound/misc/desecration-01.ogg') ,50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
else
user.visible_message("[user] repeatedly bashes [src.name] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/papercutter/update_icon()
diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm
index 984927bb91f0d..325c26c405cea 100644
--- a/code/modules/paperwork/paperplane.dm
+++ b/code/modules/paperwork/paperplane.dm
@@ -20,7 +20,7 @@
if(eyes)
eyes.applyOrganDamage(rand(6,8))
sleep(10)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/origami/paperplane/update_icon()
cut_overlays()
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 8afff2d9a863d..57362d7b7e01d 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -30,9 +30,9 @@
var/degrees = 0
var/font = PEN_FONT
-/obj/item/pen/suicide_act(mob/user)
+/obj/item/pen/suicide_act(mob/living/user)
user.visible_message("[user] is scribbling numbers all over [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit sudoku...")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/pen/blue
desc = "It's a normal blue ink pen."
diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm
index e8c97233dbc1d..47b3def2bf615 100644
--- a/code/modules/paperwork/stamps.dm
+++ b/code/modules/paperwork/stamps.dm
@@ -12,7 +12,7 @@
pressure_resistance = 2
attack_verb = list("stamped")
-/obj/item/stamp/suicide_act(mob/user)
+/obj/item/stamp/suicide_act(mob/living/user)
user.visible_message("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.")
playsound(src, 'sound/items/handling/standard_stamp.ogg', 50, vary = TRUE)
return OXYLOSS
diff --git a/code/modules/pool/pool_items.dm b/code/modules/pool/pool_items.dm
index af27a493e0ed3..a954867baab2c 100644
--- a/code/modules/pool/pool_items.dm
+++ b/code/modules/pool/pool_items.dm
@@ -54,7 +54,7 @@
/obj/item/pool/pool_noodle/proc/jedi_spin(mob/living/user) //rip complex code, but this fucked up blocking
user.emote("flip")
-/obj/item/pool/pool_noodle/suicide_act(mob/user)
+/obj/item/pool/pool_noodle/suicide_act(mob/living/user)
if(suiciding)
return SHAME
suiciding = TRUE
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 57f71437d66a4..71e5297764a07 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -510,12 +510,12 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
cable_color = picked
update_icon()
-/obj/item/stack/cable_coil/suicide_act(mob/user)
+/obj/item/stack/cable_coil/suicide_act(mob/living/user)
if(locate(/obj/structure/chair/stool) in get_turf(user))
user.visible_message("[user] is making a noose with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
else
user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return(OXYLOSS)
+ return OXYLOSS
/obj/item/stack/cable_coil/get_recipes()
return GLOB.cable_coil_recipes
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 8ef2392c1d1cb..552b247a2e21b 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -107,9 +107,9 @@
else
. += "The charge meter reads [round(src.percent() )]%."
-/obj/item/stock_parts/cell/suicide_act(mob/user)
+/obj/item/stock_parts/cell/suicide_act(mob/living/user)
user.visible_message("[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (FIRELOSS)
+ return FIRELOSS
/obj/item/stock_parts/cell/on_reagent_change(changetype)
rigged = !isnull(reagents.has_reagent(/datum/reagent/toxin/plasma, 5)) //has_reagent returns the reagent datum
diff --git a/code/modules/power/lighting/light_items.dm b/code/modules/power/lighting/light_items.dm
index 8bed56028dac2..a902e00d8361d 100644
--- a/code/modules/power/lighting/light_items.dm
+++ b/code/modules/power/lighting/light_items.dm
@@ -17,11 +17,10 @@
/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
+ return BRUTELOSS
/obj/item/light/tube
name = "light tube"
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 6049988fda7f4..5c709c1c827ce 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -778,6 +778,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
return
message_admins("[src] has consumed [key_name_admin(user)] [ADMIN_JMP(src)].")
investigate_log("has consumed [key_name(user)].", INVESTIGATE_ENGINES)
+ user.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS)
user.dust(force = TRUE)
if(is_power_processing())
matter_power += 200
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index 7005f8c5406db..0c506f8ad484b 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -151,8 +151,9 @@
var/mob/living/carbon/C = user
to_chat(C, "That was a shockingly dumb idea.")
var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in C.internal_organs
- C.ghostize(0)
+ C.ghostize(FALSE)
qdel(rip_u)
+ C.investigate_log("had [C.p_their()] brain dusted by touching [src] with telekinesis.", INVESTIGATE_DEATHS)
C.death()
/obj/anomaly/energy_ball/proc/dust_mobs(atom/A)
@@ -166,6 +167,7 @@
if(GR.anchored)
return
var/mob/living/carbon/C = A
+ C.investigate_log("has been dusted by an energy ball.", INVESTIGATE_DEATHS)
C.dust()
//Less intensive energy ball for the orbiting ones.
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index f887252fa16c6..1d31564eee747 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -390,7 +390,8 @@
#define BRAINS_BLOWN_THROW_RANGE 3
#define BRAINS_BLOWN_THROW_SPEED 1
-/obj/item/gun/ballistic/suicide_act(mob/user)
+
+/obj/item/gun/ballistic/suicide_act(mob/living/user)
var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN)
if (B && chambered && chambered.BB && can_trigger_gun(user) && !chambered.BB.nodamage)
user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!")
@@ -404,14 +405,14 @@
B.forceMove(T)
var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(spawn_atom_to_turf), /obj/effect/gibspawner/generic, B, 1, FALSE, user)
B.throw_at(target, BRAINS_BLOWN_THROW_RANGE, BRAINS_BLOWN_THROW_SPEED, callback=gibspawner)
- return(BRUTELOSS)
+ return BRUTELOSS
else
user.visible_message("[user] panics and starts choking to death!")
- return(OXYLOSS)
+ return OXYLOSS
else
user.visible_message("[user] is pretending to blow [user.p_their()] brain[user.p_s()] out with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(src, dry_fire_sound, 30, TRUE)
- return (OXYLOSS)
+ return OXYLOSS
#undef BRAINS_BLOWN_THROW_SPEED
#undef BRAINS_BLOWN_THROW_RANGE
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index c992dc6af5cfb..959adc7d8b3b6 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -257,11 +257,11 @@
return(FIRELOSS)
else
user.visible_message("[user] panics and starts choking to death!")
- return(OXYLOSS)
+ return OXYLOSS
else
user.visible_message("[user] is pretending to melt [user.p_their()] face off with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(src, dry_fire_sound, 30, TRUE)
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/gun/energy/vv_edit_var(var_name, var_value)
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index ac91d2be593bd..0a8f988dde6c5 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -92,10 +92,10 @@
/obj/item/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj)
to_chat(user, "The [name] whizzles quietly.")
-/obj/item/gun/magic/suicide_act(mob/user)
+/obj/item/gun/magic/suicide_act(mob/living/user)
user.visible_message("[user] is twisting [src] above [user.p_their()] head, releasing a magical blast! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, fire_sound, 50, 1, -1)
- return (FIRELOSS)
+ return FIRELOSS
/obj/item/gun/magic/vv_edit_var(var_name, var_value)
. = ..()
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index bddd7878e4d8b..91bd35daf915d 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -601,7 +601,7 @@
var/mob/dead/observer/C = pick(candidates)
to_chat(M, "You have been noticed by a ghost, and it has possessed you!")
var/oldkey = M.key
- M.ghostize(0)
+ M.ghostize(FALSE)
M.key = C.key
trauma.friend.key = oldkey
trauma.friend.reset_perspective(null)
diff --git a/code/modules/reagents/chemistry/reagents/log.txt b/code/modules/reagents/chemistry/reagents/log.txt
new file mode 100644
index 0000000000000..9c361768a4e9e
--- /dev/null
+++ b/code/modules/reagents/chemistry/reagents/log.txt
@@ -0,0 +1,6 @@
+02:47:01 [mob_243] (168,154,2) || Anna Polson has been dusted by the supermatter crystal.
+02:47:01 [mob_243] (168,154,2) || Anna Polson has died at (Supermatter Engine (168, 154, 2)).
BRUTE: 0 BURN: 0 TOX: 0 OXY: 0 CLONE: 0 STAM: 0
Brain damage: 0
Blood volume: 560cl (100%)
Reagents:
Blood:
+02:55:35 [mob_252] (141,126,2) || Anna Polson (as Central Command) has died at (Bar (141, 126, 2)).
BRUTE: 97 BURN: 0 TOX: 0 OXY: 0 CLONE: 0 STAM: 0
Brain damage: 0
Blood volume: 560cl (100%)
Reagents:
Blood:
79.6 units of Nutriment
42.8 units of Mint Toxin
+02:56:38 [mob_255] (107,143,2) || Central Command has died at (Central Primary Hallway (107, 143, 2)).
BRUTE: 160 BURN: 0 TOX: 0 OXY: 66.7 CLONE: 0 STAM: 0
Brain damage: 0
Blood volume: 555.84cl (99.3%)
Reagents:
Blood:
+02:56:38 [mob_255] (107,143,2) || Central Command has succumbed to death.
+
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index 8e2ec12a2d201..e603217b92b76 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -127,6 +127,7 @@
/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M)
if(HAS_TRAIT_FROM(M, TRAIT_FAT, OBESITY))
M.client?.give_award(/datum/award/achievement/misc/mintgib, M)
+ M.investigate_log("has been gibbed by consuming [src] while fat.", INVESTIGATE_DEATHS)
M.gib()
return ..()
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 105a7b6577f84..d8d07bda23061 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -136,7 +136,7 @@
amount_per_transfer_from_this = 2
stream_amount = 5
-/obj/item/reagent_containers/spray/cleaner/suicide_act(mob/user)
+/obj/item/reagent_containers/spray/cleaner/suicide_act(mob/living/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_after(user, 3 SECONDS))
if(reagents.total_volume >= amount_per_transfer_from_this)//if not empty
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 07608d3359fa9..029854dd6f647 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -85,8 +85,10 @@ Note: Must be placed within 3 tiles of the R&D Console
for(var/obj/item/innerthing in food)
destroy_item(innerthing, TRUE)
reclaim_materials_from(thing)
- for(var/mob/M in thing)
- M.death()
+ for(var/mob/living/victim in thing)
+ if(victim.stat != DEAD)
+ victim.investigate_log("has been killed by a destructive analyzer.", INVESTIGATE_DEATHS)
+ victim.death()
if(istype(thing, /obj/item/stack/sheet))
var/obj/item/stack/sheet/S = thing
if(S.amount > 1 && !innermode)
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 6c65f0717cf1c..fab0f6e393734 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -459,6 +459,7 @@
if(do_after(user, 6 SECONDS, target = user))
to_chat(user, "You explode!")
explosion(get_turf(user), 1 ,3, 6)
+ user.investigate_log("has been gibbed by an oil slime extract explosion.", INVESTIGATE_DEATHS)
user.gib()
return 60 SECONDS
to_chat(user, "You stop feeding [src], and the feeling passes.")
diff --git a/code/modules/ruins/lavalandruin_code/puzzle.dm b/code/modules/ruins/lavalandruin_code/puzzle.dm
index 21d8652a405d6..664391ced3b9c 100644
--- a/code/modules/ruins/lavalandruin_code/puzzle.dm
+++ b/code/modules/ruins/lavalandruin_code/puzzle.dm
@@ -284,6 +284,7 @@
/obj/effect/sliding_puzzle/prison/Destroy()
if(prisoner)
to_chat(prisoner,"With the cube broken by force, you can feel your body falling apart.")
+ prisoner.investigate_log("has died from their prison puzzle being destroyed.", INVESTIGATE_DEATHS)
prisoner.death()
qdel(prisoner)
. = ..()
diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
index 459b4e8e40fd4..3868fae6c6298 100644
--- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
+++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
@@ -58,6 +58,7 @@
meat_counter += 20
else
meat_counter++
+ H.investigate_log("has been gibbed by the necropolis tendril.", INVESTIGATE_DEATHS)
H.gib()
obj_integrity = min(obj_integrity + max_integrity*0.05,max_integrity)//restores 5% hp of tendril
for(var/mob/living/L in viewers(5, src))
diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
index ba1bf0ecbbbf4..1d7d43d198513 100644
--- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm
+++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
@@ -23,6 +23,7 @@
if(user.stat)
to_chat(user, "No... just one more try...")
+ user.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
user.gib()
else
user.visible_message("[user] pulls [src]'s lever with a glint in [user.p_their()] eyes!", "You feel a draining as you pull the lever, but you \
diff --git a/code/modules/spells/spell_types/mind_transfer.dm b/code/modules/spells/spell_types/mind_transfer.dm
index 809a28b020a1d..71745871137db 100644
--- a/code/modules/spells/spell_types/mind_transfer.dm
+++ b/code/modules/spells/spell_types/mind_transfer.dm
@@ -90,7 +90,7 @@ Also, you never added distance checking after target is selected. I've went ahea
var/mob/living/caster = user//The wizard/whomever doing the body transferring.
//MIND TRANSFER BEGIN
- var/mob/dead/observer/ghost = victim.ghostize(0)
+ var/mob/dead/observer/ghost = victim.ghostize(FALSE)
caster.mind.transfer_to(victim)
ghost.mind.transfer_to(caster)
diff --git a/code/modules/spells/spell_types/shapeshift.dm b/code/modules/spells/spell_types/shapeshift.dm
index edab5c1660551..f924410198597 100644
--- a/code/modules/spells/spell_types/shapeshift.dm
+++ b/code/modules/spells/spell_types/shapeshift.dm
@@ -138,6 +138,7 @@
if(source.revert_on_death)
restore(death=TRUE)
else
+ shape.investigate_log("has been killed whilst shapeshifted.", INVESTIGATE_DEATHS)
shape.death()
/obj/shapeshift_holder/proc/shapeDeath(death=TRUE)
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index 01fc4c81fb7ac..6d004190bca6d 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -72,20 +72,22 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
STOP_PROCESSING(SSobj, src)
//Special is for instant replacement like autosurgeons
-/obj/item/organ/proc/Remove(mob/living/carbon/M, special = FALSE, pref_load = FALSE)
+/obj/item/organ/proc/Remove(mob/living/carbon/organ_owner, special = FALSE, pref_load = FALSE)
owner = null
- if(M)
- M.internal_organs -= src
- if(M.internal_organs_slot[slot] == src)
- M.internal_organs_slot.Remove(slot)
- if((organ_flags & ORGAN_VITAL) && !special && !(M.status_flags & GODMODE))
- M.death()
+ if(organ_owner)
+ organ_owner.internal_organs -= src
+ if(organ_owner.internal_organs_slot[slot] == src)
+ organ_owner.internal_organs_slot.Remove(slot)
+ if((organ_flags & ORGAN_VITAL) && !special && !(organ_owner.status_flags & GODMODE))
+ if(organ_owner.stat != DEAD)
+ organ_owner.investigate_log("has been killed by losing a vital organ ([src]).", INVESTIGATE_DEATHS)
+ organ_owner.death()
for(var/X in actions)
var/datum/action/A = X
- A.Remove(M)
+ A.Remove(organ_owner)
- SEND_SIGNAL(src, COMSIG_ORGAN_REMOVED, M)
- SEND_SIGNAL(M, COMSIG_CARBON_LOSE_ORGAN, src)
+ SEND_SIGNAL(src, COMSIG_ORGAN_REMOVED, organ_owner)
+ SEND_SIGNAL(organ_owner, COMSIG_CARBON_LOSE_ORGAN, src)
START_PROCESSING(SSobj, src)
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index a0b4eb823de22..a37abc9c01583 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -111,12 +111,12 @@
tool_behaviour = TOOL_DRILL
toolspeed = 1
-/obj/item/surgicaldrill/suicide_act(mob/user)
+/obj/item/surgicaldrill/suicide_act(mob/living/user)
user.visible_message("[user] rams [src] into [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!")
addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living/carbon, gib), null, null, TRUE, TRUE), 25)
user.SpinAnimation(3, 10)
playsound(user, 'sound/machines/juicer.ogg', 20, TRUE)
- return (MANUAL_SUICIDE)
+ return MANUAL_SUICIDE
/obj/item/surgicaldrill/augment
name = "surgical drill"
@@ -174,10 +174,9 @@
hitsound = 'sound/weapons/bladeslice.ogg'
sharpness = IS_SHARP_ACCURATE
-/obj/item/scalpel/suicide_act(mob/user)
+/obj/item/scalpel/suicide_act(mob/living/user)
user.visible_message("[user] is slitting [user.p_their()] [pick("wrists", "throat", "stomach")] with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
-
+ return BRUTELOSS
/obj/item/circular_saw
name = "circular saw"
diff --git a/code/modules/wiremod/core/usb_cable.dm b/code/modules/wiremod/core/usb_cable.dm
index 1c5398cd2ca08..13aa624436403 100644
--- a/code/modules/wiremod/core/usb_cable.dm
+++ b/code/modules/wiremod/core/usb_cable.dm
@@ -80,7 +80,7 @@
return ..()
-/obj/item/usb_cable/suicide_act(mob/user)
+/obj/item/usb_cable/suicide_act(mob/living/user)
user.visible_message("[user] is wrapping [src] around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!")
return OXYLOSS
diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm
index d3bf42e72b6a7..675ec355535d8 100644
--- a/code/modules/zombie/items.dm
+++ b/code/modules/zombie/items.dm
@@ -56,20 +56,17 @@
infection = new()
infection.Insert(target)
-
-
-/obj/item/zombie_hand/suicide_act(mob/user)
+/obj/item/zombie_hand/suicide_act(mob/living/user)
user.visible_message("[user] is ripping [user.p_their()] brains out! It looks like [user.p_theyre()] trying to commit suicide!")
- if(isliving(user))
- var/mob/living/L = user
- var/obj/item/bodypart/O = L.get_bodypart(BODY_ZONE_HEAD)
- if(O)
- O.dismember()
- return (BRUTELOSS)
+ var/obj/item/bodypart/head = user.get_bodypart(BODY_ZONE_HEAD)
+ if(head)
+ head.dismember()
+ return BRUTELOSS
/obj/item/zombie_hand/proc/check_feast(mob/living/target, mob/living/user)
if(target.stat == DEAD)
var/hp_gained = target.maxHealth
+ target.investigate_log("has been devoured by a zombie.", INVESTIGATE_DEATHS)
target.gib()
// zero as argument for no instant health update
user.adjustBruteLoss(-hp_gained, 0)