diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm index 9332078be1f..7aafdb5c41a 100644 --- a/code/__DEFINES/logging.dm +++ b/code/__DEFINES/logging.dm @@ -4,6 +4,7 @@ #define INVESTIGATE_BOTANY "botany" #define INVESTIGATE_CARGO "cargo" #define INVESTIGATE_CRAFTING "crafting" +#define INVESTIGATE_DEATHS "deaths" #define INVESTIGATE_ENGINE "engine" #define INVESTIGATE_EXPERIMENTOR "experimentor" #define INVESTIGATE_GRAVITY "gravity" diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index fb828f4893f..ea6108a1f1c 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -285,9 +285,8 @@ SET_PLANE_EXPLICIT(focus_overlay, ABOVE_HUD_PLANE, focus) . += focus_overlay -/obj/item/tk_grab/suicide_act(mob/user) +/obj/item/tk_grab/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/actions/items/stealth_box.dm b/code/datums/actions/items/stealth_box.dm index b8aa7c98907..010b624f904 100644 --- a/code/datums/actions/items/stealth_box.dm +++ b/code/datums/actions/items/stealth_box.dm @@ -52,4 +52,7 @@ box.open() owner.visible_message(span_suicide("[owner] falls out of [box]! It looks like [owner.p_they()] committed suicide!")) owner.throw_at(get_turf(owner)) + if(isliving(owner)) + var/mob/living/suicider = owner + suicider.suicide_log() return OXYLOSS diff --git a/code/datums/actions/mobs/lava_swoop.dm b/code/datums/actions/mobs/lava_swoop.dm index 41cac944baa..a93dc2f9e35 100644 --- a/code/datums/actions/mobs/lava_swoop.dm +++ b/code/datums/actions/mobs/lava_swoop.dm @@ -100,6 +100,7 @@ for(var/mob/living/L in orange(1, owner) - owner) if(L.stat) owner.visible_message(span_warning("[owner] 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/datums/ai/hunting_behavior/hunting_behaviors.dm b/code/datums/ai/hunting_behavior/hunting_behaviors.dm index f80b49833fb..7643dd89b2e 100644 --- a/code/datums/ai/hunting_behavior/hunting_behaviors.dm +++ b/code/datums/ai/hunting_behavior/hunting_behaviors.dm @@ -105,6 +105,7 @@ if(isliving(hunted)) // Are we hunting a living mob? var/mob/living/living_target = hunted hunter.manual_emote("chomps [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 9e118edea42..3b464d8ab34 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -136,6 +136,7 @@ span_notice("You butcher [meat].")) butcher_callback?.Invoke(butcher, meat) meat.harvest(butcher) + meat.log_message("has been butchered by [key_name(butcher)]", LOG_ATTACK) meat.gib(FALSE, FALSE, TRUE) ///Enables the butchering mechanic for the mob who has equipped us. diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index b02b8e60a22..ffd02dbbaa0 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -185,6 +185,7 @@ GLOBAL_LIST_INIT(chasm_storage, list()) if (isliving(dropped_thing)) var/mob/living/fallen_mob = dropped_thing if(fallen_mob.stat != DEAD) + fallen_mob.investigate_log("has died from falling into a chasm.", INVESTIGATE_DEATHS) fallen_mob.death(TRUE) fallen_mob.notransform = FALSE fallen_mob.apply_damage(300) diff --git a/code/datums/components/stationstuck.dm b/code/datums/components/stationstuck.dm index f96aedab845..73ef35abad1 100644 --- a/code/datums/components/stationstuck.dm +++ b/code/datums/components/stationstuck.dm @@ -46,17 +46,20 @@ It has a punishment variable that is what happens to the parent when they leave /datum/component/stationstuck/proc/punish() SIGNAL_HANDLER - var/mob/living/L = parent + var/mob/living/escapee = parent if(message) var/span = punishment == PUNISHMENT_TELEPORT ? "danger" : "userdanger" - to_chat(L, "[message]") + to_chat(escapee, "[message]") switch(punishment) if(PUNISHMENT_MURDER) - L.death() + if(escapee.stat != DEAD) + escapee.investigate_log("has been killed by stationstuck component.", INVESTIGATE_DEATHS) + escapee.death() if(PUNISHMENT_GIB) - L.gib() + escapee.investigate_log("has been gibbed by stationstuck component.", INVESTIGATE_DEATHS) + escapee.gib() if(PUNISHMENT_TELEPORT) var/targetturf = find_safe_turf(stuck_zlevel) if(!targetturf) targetturf = locate(world.maxx/2,world.maxy/2,stuck_zlevel) - L.forceMove(targetturf) + escapee.forceMove(targetturf) diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm index 6ba2269bc78..83aa393c9b4 100644 --- a/code/datums/components/supermatter_crystal.dm +++ b/code/datums/components/supermatter_crystal.dm @@ -240,6 +240,7 @@ return message_admins("[atom_source] has consumed [key_name_admin(consumed_mob)] [ADMIN_JMP(atom_source)].") atom_source.investigate_log("has consumed [key_name(consumed_mob)].", INVESTIGATE_ENGINE) + consumed_mob.investigate_log("has been dusted by [atom_source].", INVESTIGATE_DEATHS) consumed_mob.dust(force = TRUE) matter_increase += 100 * object_size if(is_clown_job(consumed_mob.mind?.assigned_role)) diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index df3889f06df..4362b756a74 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -29,5 +29,6 @@ if(4) to_chat(affected_mob, span_userdanger("Your body feels as if it's trying to rip itself apart!")) if(DT_PROB(30, delta_time)) + affected_mob.investigate_log("has been gibbed by GBS.", INVESTIGATE_DEATHS) affected_mob.gib() return FALSE diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 30df687445e..fb8d07550c2 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -88,10 +88,11 @@ var/mob/dead/observer/C = pick(candidates) to_chat(affected_mob, span_userdanger("Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!")) message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(affected_mob)]) to replace a jobbanned player.") - affected_mob.ghostize(0) + affected_mob.ghostize(FALSE) affected_mob.key = C.key else to_chat(new_mob, span_userdanger("Your mob has been claimed by death! Appeal your job ban if you want to avoid this in the future!")) + new_mob.investigate_log("has been killed because there was no one to replace them as a job-banned player.", INVESTIGATE_DEATHS) new_mob.death() if (!QDELETED(new_mob)) new_mob.ghostize(can_reenter_corpse = FALSE) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 60ec11af131..3ecd5e31c18 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -838,11 +838,13 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) 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) @@ -851,6 +853,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) 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/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm index 532366e4d88..3215fdf8f94 100644 --- a/code/datums/martial/plasma_fist.dm +++ b/code/datums/martial/plasma_fist.dm @@ -67,6 +67,7 @@ to_chat(A, span_danger("You hit [D] with THE PLASMA FIST TECHNIQUE!")) log_combat(A, D, "gibbed (Plasma Fist)") var/turf/Dturf = get_turf(D) + D.investigate_log("has been gibbed by plasma fist.", INVESTIGATE_DEATHS) D.gib() if(nobomb) return @@ -120,6 +121,7 @@ REMOVE_TRAIT(dying, TRAIT_BOMBIMMUNE, type) if(dying.stat == DEAD) return + dying.investigate_log("has been killed by plasma fist apotheosis.", INVESTIGATE_DEATHS) dying.death() /datum/martial_art/plasma_fist/harm_act(mob/living/A, mob/living/D) diff --git a/code/datums/mind/_mind.dm b/code/datums/mind/_mind.dm index 5119e4f59ea..134c275e685 100644 --- a/code/datums/mind/_mind.dm +++ b/code/datums/mind/_mind.dm @@ -161,7 +161,7 @@ if(key) if(new_character.key != key) //if we're transferring into a body with a key associated which is not ours - new_character.ghostize(1) //we'll need to ghostize so that key isn't mobless. + new_character.ghostize(TRUE) //we'll need to ghostize so that key isn't mobless. else key = new_character.key diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 5ca662cfec1..6c1b47547bb 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -493,6 +493,7 @@ for(var/mob/living/silicon/S in view(2,owner)) to_chat(S, span_userdanger("Your sensors are disabled by a shower of blood!")) S.Paralyze(60) + owner.investigate_log("has been gibbed by the martyrdom mutation.", INVESTIGATE_DEATHS) owner.gib() /datum/mutation/human/headless diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index dec44d35567..80a75994e49 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -276,6 +276,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) diff --git a/code/datums/storage/subtypes/bag_of_holding.dm b/code/datums/storage/subtypes/bag_of_holding.dm index 0465e030ae2..6644c7734d7 100644 --- a/code/datums/storage/subtypes/bag_of_holding.dm +++ b/code/datums/storage/subtypes/bag_of_holding.dm @@ -29,6 +29,7 @@ message_admins("[ADMIN_LOOKUPFLW(user)] detonated a bag of holding at [ADMIN_VERBOSEJMP(loccheck)].") user.log_message("detonated a bag of holding at [loc_name(loccheck)].", LOG_ATTACK, color="red") + 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(resolve_parent) diff --git a/code/game/machinery/computer/arcade/arcade.dm b/code/game/machinery/computer/arcade/arcade.dm index c05f6de3a4b..8ac7f49b644 100644 --- a/code/game/machinery/computer/arcade/arcade.dm +++ b/code/game/machinery/computer/arcade/arcade.dm @@ -578,6 +578,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( if(obj_flags & EMAGGED) var/mob/living/living_user = user if (istype(living_user)) + living_user.investigate_log("has been gibbed by an emagged Orion Trail game.", INVESTIGATE_DEATHS) living_user.gib() SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal"))) user.lost_game() diff --git a/code/game/machinery/computer/arcade/orion.dm b/code/game/machinery/computer/arcade/orion.dm index 6aacdd8beb0..8fee6ca5d57 100644 --- a/code/game/machinery/computer/arcade/orion.dm +++ b/code/game/machinery/computer/arcade/orion.dm @@ -373,6 +373,7 @@ GLOBAL_LIST_INIT(orion_events, generate_orion_events()) if(obj_flags & EMAGGED) to_chat(gamer, span_userdanger("You're never going to make it to Orion...")) + gamer.investigate_log("has been killed by an emagged Orion Trail game.", INVESTIGATE_DEATHS) gamer.death() obj_flags &= ~EMAGGED //removes the emagged status after you lose gamer.log_message("lost a Realism Mode Orion Trail game, changing the machine back to normal.", LOG_GAME) @@ -435,6 +436,7 @@ GLOBAL_LIST_INIT(orion_events, generate_orion_events()) if(!settlers.len || !alive) say("The last crewmember [sheriff], shot themselves, GAME OVER!") if(obj_flags & EMAGGED) + gamer.investigate_log("has been killed by an emagged Orion Trail game.", INVESTIGATE_DEATHS) gamer.death() set_game_over(gamer, "Your last pioneer committed suicide.") if(killed_crew >= ORION_STARTING_CREW_COUNT) @@ -443,6 +445,7 @@ GLOBAL_LIST_INIT(orion_events, generate_orion_events()) else if(obj_flags & EMAGGED) if(findtext(gamer.name, sheriff)) say("The crew of the ship chose to kill [gamer]!") + gamer.investigate_log("has been killed by an emagged Orion Trail game.", INVESTIGATE_DEATHS) gamer.death() /** diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 562f3d4d649..9dc50258b04 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -129,15 +129,16 @@ if("killdrone") if(allowed(usr)) - var/mob/living/simple_animal/drone/D = locate(params["ref"]) in GLOB.mob_list - if(D.hacked) - to_chat(usr, span_danger("ERROR: [D] is not responding to external commands.")) + var/mob/living/simple_animal/drone/drone = locate(params["ref"]) in GLOB.mob_list + if(drone.hacked) + to_chat(usr, span_danger("ERROR: [drone] is not responding to external commands.")) else - var/turf/T = get_turf(D) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)] at [ADMIN_VERBOSEJMP(T)]!") - log_silicon("[key_name(usr)] detonated [key_name(D)]!") + var/turf/T = get_turf(drone) + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(drone)] at [ADMIN_VERBOSEJMP(T)]!") + log_silicon("[key_name(usr)] detonated [key_name(drone)]!") var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, TRUE, D) + s.set_up(3, TRUE, drone) s.start() - D.visible_message(span_danger("\the [D] self-destructs!")) - D.gib() + drone.visible_message(span_danger("\the [drone] self-destructs!")) + drone.investigate_log("has been gibbed by a robotics console.", INVESTIGATE_DEATHS) + drone.gib() diff --git a/code/game/machinery/newscaster/newspaper.dm b/code/game/machinery/newscaster/newspaper.dm index 2571117a409..0a6010c8822 100644 --- a/code/game/machinery/newscaster/newspaper.dm +++ b/code/game/machinery/newscaster/newspaper.dm @@ -22,7 +22,7 @@ var/wantedPhoto var/creation_time -/obj/item/newspaper/suicide_act(mob/user) +/obj/item/newspaper/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 @@ -30,8 +30,7 @@ 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(span_suicide("[user] downs the contents of [W.name] in one gulp! Shoulda stuck to sudoku!")) - - return(TOXLOSS) + return TOXLOSS /obj/item/newspaper/attack_self(mob/user) if(!istype(user) || !user.can_read(src)) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 1c744f8c468..740f0128b64 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -286,11 +286,11 @@ Buildable meters ..() T.flipped = flipped -/obj/item/pipe/suicide_act(mob/user) +/obj/item/pipe/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 - for(var/i=1 to 20) + for(var/i in 1 to 20) C.vomit(0, TRUE, FALSE, 4, FALSE) if(prob(20)) C.spew_organ() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index a3579a4f18c..192fe487735 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -473,6 +473,7 @@ setDir(get_dir(gen_primary, gen_secondary)) for(var/mob/living/L in get_turf(src)) visible_message(span_danger("\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/block_singularity) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index d67d9c113a5..d892c3b3aa3 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -273,6 +273,7 @@ GLOBAL_LIST_INIT(dye_registry, list( /mob/living/simple_animal/pet/machine_wash(obj/machinery/washing_machine/washer) washer.bloody_mess = TRUE + investigate_log("has been gibbed by a washing machine.", INVESTIGATE_DEATHS) gib() /obj/item/machine_wash(obj/machinery/washing_machine/washer) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index b50f2ace1d4..61239e5446f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -338,7 +338,7 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e * Arguments: * * user: The mob that is suiciding */ -/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/RPD.dm b/code/game/objects/items/RPD.dm index 32105310527..99c65ed107e 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -305,11 +305,11 @@ GLOBAL_LIST_INIT(transit_tube_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(span_suicide("[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, TRUE) playsound(get_turf(user), 'sound/items/deconstruct.ogg', 50, TRUE) - 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 d0c47422257..e71df75abc0 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -65,7 +65,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/internal/lungs/L = user.getorganslot(ORGAN_SLOT_LUNGS) if(can_use(user) && L) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 2d498e5aef0..0dad7b33eb0 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -33,7 +33,7 @@ moveToNullspace() return item_bag -/obj/item/bodybag/suicide_act(mob/user) +/obj/item/bodybag/suicide_act(mob/living/user) if(isopenturf(user.loc)) user.visible_message(span_suicide("[user] is crawling into [src]! It looks like [user.p_theyre()] trying to commit suicide!")) var/obj/structure/closet/body_bag/R = new unfoldedbag_path(user.loc) @@ -41,8 +41,7 @@ qdel(src) user.forceMove(R) playsound(src, 'sound/items/zip.ogg', 15, TRUE, -3) - return (OXYLOSS) - ..() + return OXYLOSS // Bluespace bodybag diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm index ca5ad8772d0..9999e0030ea 100644 --- a/code/game/objects/items/chainsaw.dm +++ b/code/game/objects/items/chainsaw.dm @@ -45,7 +45,7 @@ else user.visible_message(span_suicide("[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 f71d9a95f01..44f76708c95 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -199,7 +199,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM SIGNAL_HANDLER source.apply_status_effect(/datum/status_effect/choke, src, lit, choke_forever ? -1 : rand(25 SECONDS, choke_time_max)) -/obj/item/clothing/mask/cigarette/suicide_act(mob/user) +/obj/item/clothing/mask/cigarette/suicide_act(mob/living/user) user.visible_message(span_suicide("[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) @@ -961,7 +961,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM create_reagents(chem_volume, NO_REACT) reagents.add_reagent(/datum/reagent/drug/nicotine, 50) -/obj/item/clothing/mask/vape/suicide_act(mob/user) +/obj/item/clothing/mask/vape/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 fddb761b7c5..0781a031b5d 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -99,7 +99,7 @@ cleanspeed = 0.3 SECONDS //Only the truest of mind soul and body get one of these uses = 800 //In the Greek numeric system, Omega has a value of 800 -/obj/item/soap/omega/suicide_act(mob/user) +/obj/item/soap/omega/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is using [src] to scrub themselves from the timeline! It looks like [user.p_theyre()] trying to commit suicide!")) new /obj/structure/chrono_field(user.loc, user) return MANUAL_SUICIDE @@ -109,14 +109,11 @@ desc = "An old paper that has passed many hands." default_raw_text = "The legend of the omega soap

Essence of potato. Juice, not grind.

A lizard's tail, turned into wine.

powder of monkey, to help the workload.

Some Krokodil, because meth would explode.

Nitric acid and Baldium, for organic dissolving.

A cup filled with Hooch, for sinful absolving

Some Bluespace Dust, for removal of stains.

A syringe full of Pump-up, it's security's bane.

Add a can of Space Cola, because we've been paid.

Heat as hot as you can, let the soap be your blade.

Ten units of each reagent create a soap that could topple all others." - -/obj/item/soap/suicide_act(mob/user) +/obj/item/soap/suicide_act(mob/living/user) user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!", forced="soap suicide") user.visible_message(span_suicide("[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!")) - var/datum/effect_system/fluid_spread/foam/foam = new - foam.set_up(1, holder = src, location = user.loc) - foam.start() - return (TOXLOSS) + new /obj/effect/particle_effect/fluid/foam(loc) + return TOXLOSS /obj/item/soap/proc/should_clean(datum/cleaning_source, atom/atom_to_clean, mob/living/cleaner) return check_allowed_items(atom_to_clean) @@ -192,10 +189,10 @@ M.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(span_suicide("[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/courtroom.dm b/code/game/objects/items/courtroom.dm index c5872c4a45b..cc4585b57a0 100644 --- a/code/game/objects/items/courtroom.dm +++ b/code/game/objects/items/courtroom.dm @@ -18,10 +18,10 @@ . = ..() AddElement(/datum/element/kneejerk) -/obj/item/gavelhammer/suicide_act(mob/user) +/obj/item/gavelhammer/suicide_act(mob/living/user) user.visible_message(span_suicide("[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, TRUE, -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 72d003c6eb6..349dd4ef161 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -76,7 +76,7 @@ /obj/item/toy/crayon/proc/isValidSurface(surface) return isfloorturf(surface) -/obj/item/toy/crayon/suicide_act(mob/user) +/obj/item/toy/crayon/suicide_act(mob/living/user) user.visible_message(span_suicide("[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!")) user.add_atom_colour(paint_color) return (BRUTELOSS|OXYLOSS) @@ -630,15 +630,15 @@ return (isfloorturf(surface) || iswallturf(surface)) -/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(span_suicide("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, but nothing happens!")) - user.say("MEDIOCRE!!", forced="spraycan suicide") + user.say("MEDIOCRE!!", forced = "spraycan suicide") return SHAME else user.visible_message(span_suicide("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, spraying paint across [user.p_their()] teeth!")) - user.say("WITNESS ME!!", forced="spraycan suicide") + user.say("WITNESS ME!!", forced = "spraycan suicide") if(pre_noise || post_noise) playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5) if(can_change_colour) @@ -648,8 +648,7 @@ H.update_lips("spray_face", paint_color) var/used = use_charges(user, 10, FALSE) reagents.trans_to(user, used, volume_multiplier, transfered_by = user, methods = VAPOR) - - return (OXYLOSS) + return OXYLOSS /obj/item/toy/crayon/spraycan/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm index 6a3f0e8c966..10b9a40bff5 100644 --- a/code/game/objects/items/debug_items.dm +++ b/code/game/objects/items/debug_items.dm @@ -140,6 +140,7 @@ to_chat(user, span_reallybig("You shouldn't have done that...")) playsound(src, 'sound/voice/borg_deathsound.ogg') sleep(3 SECONDS) + living_user.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS) living_user.gib() return var/turf/loc_turf = get_turf(src) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 0e8ff24ab16..3b325087a4a 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -422,12 +422,12 @@ busy = FALSE update_appearance() -/obj/item/shockpaddles/suicide_act(mob/user) +/obj/item/shockpaddles/suicide_act(mob/living/user) user.visible_message(span_danger("[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, TRUE, -1) - return (OXYLOSS) + return OXYLOSS /obj/item/shockpaddles/update_icon_state() icon_state = "[base_icon_state][HAS_TRAIT(src, TRAIT_WIELDED)]" diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 9b54321a9f4..d6c24cdbc26 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -72,7 +72,7 @@ user.visible_message(span_suicide("[user] is putting [src] close to [user.p_their()] eyes and turning it on... but [user.p_theyre()] blind!")) return SHAME user.visible_message(span_suicide("[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) @@ -543,7 +543,7 @@ return SHAME user.visible_message(span_suicide("[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/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index fb81269f4ed..63f12d9038c 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(span_suicide("[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, list/modifiers) diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index 04f32bf2d81..9ee1ca98d0d 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -122,6 +122,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 c5127bab0ec..d291b58abcd 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -30,9 +30,9 @@ )) new picked(src) -/obj/item/storage/dice/suicide_act(mob/user) +/obj/item/storage/dice/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")) - return (OXYLOSS) + return OXYLOSS /obj/item/storage/dice/hazard @@ -67,9 +67,9 @@ result = roll(sides) update_appearance() -/obj/item/dice/suicide_act(mob/user) +/obj/item/dice/suicide_act(mob/living/user) user.visible_message(span_suicide("[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" @@ -324,10 +324,12 @@ if(1) //Dust selected_turf.visible_message(span_userdanger("[user] turns to dust!")) + user.investigate_log("has been dusted by a die of fate.", INVESTIGATE_DEATHS) user.dust() if(2) //Death selected_turf.visible_message(span_userdanger("[user] suddenly dies!")) + user.investigate_log("has been killed by a die of fate.", INVESTIGATE_DEATHS) user.death() if(3) //Swarm of creatures diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm index 6074fb31d21..408a0e0c1b6 100644 --- a/code/game/objects/items/door_seal.dm +++ b/code/game/objects/items/door_seal.dm @@ -19,8 +19,8 @@ /// how long it takes to remove the seal from a door var/unseal_time = 2 SECONDS -/obj/item/door_seal/suicide_act(mob/user) +/obj/item/door_seal/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is sealing [user.p_them()]self off from the world with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/jaws_pry.ogg', 30, TRUE) - return(BRUTELOSS) + return BRUTELOSS diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm index f751dddc10b..2175ecf3914 100644 --- a/code/game/objects/items/fireaxe.dm +++ b/code/game/objects/items/fireaxe.dm @@ -43,9 +43,9 @@ icon_state = "[base_icon_state]0" return ..() -/obj/item/fireaxe/suicide_act(mob/user) +/obj/item/fireaxe/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/burgers.dm b/code/game/objects/items/food/burgers.dm index 2fd8c41a64f..bb3cedc91dc 100644 --- a/code/game/objects/items/food/burgers.dm +++ b/code/game/objects/items/food/burgers.dm @@ -301,7 +301,7 @@ foodtypes = GRAIN | MEAT | DAIRY venue_value = FOOD_PRICE_EXOTIC -/obj/item/food/burger/superbite/suicide_act(mob/user) +/obj/item/food/burger/superbite/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] starts to eat [src] in one bite, it looks like [user.p_theyre()] trying to commit suicide!")) var/datum/component/edible/component = GetComponent(/datum/component/edible) component?.TakeBite(user, user) diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm index 6b94d320678..f2b0cfcef65 100644 --- a/code/game/objects/items/food/misc.dm +++ b/code/game/objects/items/food/misc.dm @@ -431,7 +431,7 @@ /// The amount to metabolize per second var/metabolization_amount = REAGENTS_METABOLISM / 2 -/obj/item/food/bubblegum/suicide_act(mob/user) +/obj/item/food/bubblegum/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] swallows [src]! It looks like [user.p_theyre()] trying to commit suicide!")) qdel(src) return TOXLOSS @@ -483,7 +483,7 @@ else to_chat(victim, span_warning("[pick("You hear faint whispers.", "You smell ash.", "You feel hot.", "You hear a roar in the distance.")]")) -/obj/item/food/bubblegum/bubblegum/suicide_act(mob/user) +/obj/item/food/bubblegum/bubblegum/suicide_act(mob/living/user) user.say(";[pick(BUBBLEGUM_HALLUCINATION_LINES)]") return ..() diff --git a/code/game/objects/items/food/monkeycube.dm b/code/game/objects/items/food/monkeycube.dm index 908723a1c4e..adec90f9203 100644 --- a/code/game/objects/items/food/monkeycube.dm +++ b/code/game/objects/items/food/monkeycube.dm @@ -38,7 +38,6 @@ playsound(user, 'sound/items/eatfood.ogg', rand(10, 50), TRUE) user.temporarilyRemoveItemFromInventory(src) //removes from hands, keeps in M addtimer(CALLBACK(src, .proc/finish_suicide, user), 15) //you've eaten it, you can run now - return MANUAL_SUICIDE /obj/item/food/monkeycube/proc/finish_suicide(mob/living/user) ///internal proc called by a monkeycube's suicide_act using a timer and callback. takes as argument the mob/living who activated the suicide diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm index 3037226264e..cd4bb7e47a5 100644 --- a/code/game/objects/items/food/pizza.dm +++ b/code/game/objects/items/food/pizza.dm @@ -326,6 +326,7 @@ /obj/item/food/proc/i_kill_you(obj/item/item, mob/living/user) if(istype(item, /obj/item/food/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(item, /obj/item/food/grown/mushroom) && iscarbon(user)) to_chat(user, span_userdanger("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/food/snacks.dm b/code/game/objects/items/food/snacks.dm index 30a4b45e427..1a8c0c385fc 100644 --- a/code/game/objects/items/food/snacks.dm +++ b/code/game/objects/items/food/snacks.dm @@ -255,8 +255,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types()) foodtypes = JUNKFOOD w_class = WEIGHT_CLASS_SMALL -/obj/item/food/cnds/suicide_act(mob/user) - . = ..() +/obj/item/food/cnds/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is letting [src] melt in [user.p_their()] hand! It looks like [user.p_theyre()] trying to commit suicide!")) return TOXLOSS diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index a32365acaa2..1bca0637e33 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(span_suicide("[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/handcuffs.dm b/code/game/objects/items/handcuffs.dm index f4e109f22ba..438603f8817 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -14,7 +14,7 @@ /obj/item/restraints/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) - return(OXYLOSS) + return OXYLOSS /** * # Handcuffs @@ -390,10 +390,10 @@ icon_state = "[initial(icon_state)][armed]" return ..() -/obj/item/restraints/legcuffs/beartrap/suicide_act(mob/user) +/obj/item/restraints/legcuffs/beartrap/suicide_act(mob/living/user) user.visible_message(span_suicide("[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, TRUE, -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 9ba8dad00a9..18147539b69 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -53,9 +53,8 @@ message_admins("[ADMIN_LOOKUPFLW(user)] erased a [target_rune.cultist_name] rune with a null rod.") SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_NARNAR] = TRUE -/obj/item/nullrod/suicide_act(mob/user) +/obj/item/nullrod/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get closer to god!")) - return (BRUTELOSS|FIRELOSS) /obj/item/nullrod/godhand @@ -228,7 +227,7 @@ attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") menu_description = "An odd s(w)ord dealing a laughable amount of damage. Fits in pockets. Can be worn on the belt." -/obj/item/nullrod/sord/suicide_act(mob/user) //a near-exact copy+paste of the actual sord suicide_act() +/obj/item/nullrod/sord/suicide_act(mob/living/user) //a near-exact copy+paste of the actual sord suicide_act() user.visible_message(span_suicide("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so HOLY."), \ span_suicide("You try to impale yourself with [src], but it's TOO HOLY...")) return SHAME @@ -437,7 +436,7 @@ attack_verb_simple = list("enlighten", "redpill") menu_description = "A sharp fedora dealing a very high amount of throw damage, but none of melee. Fits in pockets. Can be worn on the head, obviously." -/obj/item/nullrod/fedora/suicide_act(mob/user) +/obj/item/nullrod/fedora/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get further from 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 45a41313fe0..28832f57e79 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -55,7 +55,8 @@ if(delay <= 7) explosion(src, devastation_range = heavy, heavy_impact_range = medium, light_impact_range = weak, flame_range = weak, flash_range = weak, explosion_cause = src) 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 timed_explosion() @@ -95,7 +96,8 @@ sleep(delay*0.25) explosion(src, devastation_range = heavy, heavy_impact_range = medium, light_impact_range = weak, flame_range = weak, flash_range = weak, explosion_cause = src) 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 6f9c31a77b3..613d5b271ce 100644 --- a/code/game/objects/items/knives.dm +++ b/code/game/objects/items/knives.dm @@ -40,12 +40,11 @@ ) //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(span_suicide("[user] is slitting [user.p_their()] wrists with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide."), \ - span_suicide("[user] is slitting [user.p_their()] throat with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide."), \ - span_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) -///// + span_suicide("[user] is slitting [user.p_their()] throat with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide."), \ + span_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 /obj/item/knife/ritual name = "ritual knife" diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm index 7eb7e5700a3..7eea3d4d89f 100644 --- a/code/game/objects/items/manuals.dm +++ b/code/game/objects/items/manuals.dm @@ -414,7 +414,7 @@ starting_title = "Ordnance for Dummies or: How I Learned to Stop Worrying and Love the Maxcap" page_link = "Guide_to_toxins" -/obj/item/book/manual/wiki/ordnance/suicide_act(mob/user) +/obj/item/book/manual/wiki/ordnance/suicide_act(mob/living/user) var/mob/living/carbon/human/H = user user.visible_message(span_suicide("[user] starts dancing to the Rhumba Beat! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(loc, 'sound/effects/spray.ogg', 10, TRUE, -3) @@ -434,7 +434,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/baton.dm b/code/game/objects/items/melee/baton.dm index c03abf6eacd..5b536956162 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -311,7 +311,7 @@ attack_verb_simple_on = list("smack", "strike", "crack", "beat")) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, .proc/on_transform) -/obj/item/melee/baton/telescopic/suicide_act(mob/user) +/obj/item/melee/baton/telescopic/suicide_act(mob/living/user) var/mob/living/carbon/human/human_user = user var/obj/item/organ/internal/brain/our_brain = human_user.getorgan(/obj/item/organ/internal/brain) @@ -329,7 +329,7 @@ human_user.internal_organs -= our_brain qdel(our_brain) new /obj/effect/gibspawner/generic(human_user.drop_location(), human_user) - return (BRUTELOSS) + return BRUTELOSS /* * Signal proc for [COMSIG_TRANSFORMING_ON_TRANSFORM]. @@ -420,14 +420,14 @@ /obj/item/melee/baton/security/get_cell() return cell -/obj/item/melee/baton/security/suicide_act(mob/user) +/obj/item/melee/baton/security/suicide_act(mob/living/user) if(cell?.charge && active) user.visible_message(span_suicide("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!")) - . = (FIRELOSS) attack(user, user) + return FIRELOSS else user.visible_message(span_suicide("[user] is shoving the [name] down their throat! It looks like [user.p_theyre()] trying to commit suicide!")) - . = (OXYLOSS) + return OXYLOSS /obj/item/melee/baton/security/Destroy() if(cell) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index f3935a17cca..d19406f5029 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -57,7 +57,7 @@ attack_verb_simple_on = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, .proc/on_transform) -/obj/item/melee/energy/suicide_act(mob/user) +/obj/item/melee/energy/suicide_act(mob/living/user) if(!blade_active) attack_self(user) user.visible_message(span_suicide("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!")) @@ -155,7 +155,7 @@ w_class_on = active_w_class) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, .proc/on_transform) -/obj/item/melee/energy/axe/suicide_act(mob/user) +/obj/item/melee/energy/axe/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 1bb5f2716a5..7abb2bd4ccc 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -30,9 +30,9 @@ hitsound = 'sound/weapons/chainhit.ogg' custom_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(span_suicide("[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" @@ -256,7 +256,7 @@ consume_everything(projectile) 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(span_suicide("[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/skub.dm b/code/game/objects/items/skub.dm index 282cd87d27b..506bf4c91b9 100644 --- a/code/game/objects/items/skub.dm +++ b/code/game/objects/items/skub.dm @@ -13,7 +13,6 @@ /obj/item/skub/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] has declared themself as anti-skub! The skub tears them apart!")) - user.gib() playsound(src, 'sound/items/eatfood.ogg', 50, TRUE, -1) return MANUAL_SUICIDE diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index b49895f6fd8..5ce3d16ac68 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -116,9 +116,9 @@ grind_results = list(/datum/reagent/medicine/c2/libital = 10) merge_type = /obj/item/stack/medical/bruise_pack -/obj/item/stack/medical/bruise_pack/suicide_act(mob/user) +/obj/item/stack/medical/bruise_pack/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/gauze name = "medical gauze" @@ -385,14 +385,14 @@ to_chat(user, span_warning("Bone gel can only be used on fractured limbs!")) return -/obj/item/stack/medical/bone_gel/suicide_act(mob/user) +/obj/item/stack/medical/bone_gel/suicide_act(mob/living/user) if(!iscarbon(user)) return var/mob/living/carbon/C = user C.visible_message(span_suicide("[C] is squirting all of [src] into [C.p_their()] mouth! That's not proper procedure! It looks like [C.p_theyre()] trying to commit suicide!")) if(!do_after(C, 2 SECONDS)) C.visible_message(span_suicide("[C] screws up like an idiot and still dies anyway!")) - return (BRUTELOSS) + return BRUTELOSS C.emote("scream") for(var/i in C.bodyparts) @@ -406,7 +406,7 @@ var/obj/item/bodypart/bone = i bone.receive_damage(brute=60) use(1) - return (BRUTELOSS) + return BRUTELOSS /obj/item/stack/medical/bone_gel/four amount = 4 diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index ac286c45aef..af146234f23 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -281,11 +281,9 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( var/obj/item/stack/sheet/weld_material = /obj/item/stack/sheet/glass embedding = list("embed_chance" = 65) - -/obj/item/shard/suicide_act(mob/user) +/obj/item/shard/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 8f5591f5fac..e34f0734a1f 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -70,6 +70,7 @@ user.Stun(100, ignore_canstun = TRUE) sleep(2 SECONDS) playsound(src, SFX_RUSTLE, 50, TRUE, -5) + user.suicide_log() qdel(user) /obj/item/storage/backpack/santabag @@ -88,9 +89,9 @@ atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL atom_storage.max_total_storage = 60 -/obj/item/storage/backpack/santabag/suicide_act(mob/user) +/obj/item/storage/backpack/santabag/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/regenerate_presents), 30 SECONDS) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index b50341c1331..b16e247f6ac 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -50,10 +50,10 @@ atom_storage.max_slots = 30 atom_storage.set_holdable(cant_hold_list = list(/obj/item/disk/nuclear)) -/obj/item/storage/bag/trash/suicide_act(mob/user) +/obj/item/storage/bag/trash/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] puts [src] over [user.p_their()] head and starts chomping at the insides! Disgusting!")) playsound(loc, 'sound/items/eatfood.ogg', 50, TRUE, -1) - return (TOXLOSS) + return TOXLOSS /obj/item/storage/bag/trash/update_icon_state() switch(contents.len) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index de6069926ce..a7c8839b54f 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -49,9 +49,9 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL AddComponent(/datum/component/anti_magic, MAGIC_RESISTANCE_HOLY) -/obj/item/storage/book/bible/suicide_act(mob/user) +/obj/item/storage/book/bible/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/user) if(GLOB.bible_icon_state) diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm index 5c4dd535a39..9be54998bc1 100644 --- a/code/game/objects/items/storage/boxes/job_boxes.dm +++ b/code/game/objects/items/storage/boxes/job_boxes.dm @@ -126,9 +126,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(span_suicide("[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) ..() @@ -161,7 +161,7 @@ else return ..() -/obj/item/storage/box/clown/suicide_act(mob/user) +/obj/item/storage/box/clown/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] opens [src] and gets consumed by [p_them()]! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(user, 'sound/misc/scary_horn.ogg', 70, vary = TRUE) forceMove(user.drop_location()) diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index 2c61cb9199a..a884c3787bb 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -35,7 +35,7 @@ new /obj/item/stamp/law(src) ..() -/obj/item/storage/briefcase/suicide_act(mob/user) +/obj/item/storage/briefcase/suicide_act(mob/living/user) var/list/papers_found = list() var/turf/item_loc = get_turf(src) diff --git a/code/game/objects/items/storage/medkit.dm b/code/game/objects/items/storage/medkit.dm index 81c2827fe3c..fe29bb40cae 100644 --- a/code/game/objects/items/storage/medkit.dm +++ b/code/game/objects/items/storage/medkit.dm @@ -323,9 +323,9 @@ atom_storage.allow_quick_gather = TRUE atom_storage.set_holdable(list(/obj/item/reagent_containers/pill)) -/obj/item/storage/pill_bottle/suicide_act(mob/user) +/obj/item/storage/pill_bottle/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/multiver name = "bottle of multiver pills" diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 3c6921bfc9f..8dbcbc9a608 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -42,9 +42,9 @@ . = ..() atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL -/obj/item/storage/toolbox/suicide_act(mob/user) +/obj/item/storage/toolbox/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 102d6ace895..12f1573f78b 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -121,13 +121,13 @@ return null return loc -/obj/item/tank/jetpack/suicide_act(mob/user) +/obj/item/tank/jetpack/suicide_act(mob/living/user) if (!ishuman(user)) - return ..() + return var/mob/living/carbon/human/suffocater = user suffocater.say("WHAT THE FUCK IS CARBON DIOXIDE?") suffocater.visible_message(span_suicide("[user] is suffocating [user.p_them()]self with [src]! It looks like [user.p_they()] didn't read what that jetpack says!")) - return (OXYLOSS) + 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 ada95172adb..0208f359727 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -148,7 +148,7 @@ playsound(location, 'sound/effects/spray.ogg', 10, TRUE, -3) return ..() -/obj/item/tank/suicide_act(mob/user) +/obj/item/tank/suicide_act(mob/living/user) var/mob/living/carbon/human/human_user = user user.visible_message(span_suicide("[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, TRUE, -3) @@ -156,8 +156,7 @@ ADD_TRAIT(human_user, TRAIT_DISFIGURED, TRAIT_GENERIC) human_user.inflate_gib() return MANUAL_SUICIDE - else - to_chat(user, span_warning("There isn't enough pressure in [src] to commit suicide with...")) + to_chat(user, span_warning("There isn't enough pressure in [src] to commit suicide with...")) return SHAME /obj/item/tank/attackby(obj/item/attacking_item, mob/user, params) diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 8b5b109f9c9..1ef7ec58a05 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -295,7 +295,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(span_suicide("[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 @@ -307,7 +307,7 @@ itemUser.visible_message(span_suicide("The portal snaps closed taking [user]'s head with it!")) else itemUser.visible_message(span_suicide("[user] looks even further depressed as they realize they do not have a head...and suddenly dies of shame!")) - return (BRUTELOSS) + return BRUTELOSS /obj/item/syndicate_teleporter name = "experimental teleporter" @@ -475,6 +475,7 @@ to_chat(victim, span_userdanger("You teleport into [destination].")) destination.ex_act(EXPLODE_HEAVY) victim.unequip_everything() + victim.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS) victim.gib() ///Damage and stun all mobs in fragging_location turf, called after a teleport diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 1cf9a3236d7..a32e7b72ffe 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -35,9 +35,9 @@ flick(pulseicon, src) radiation_pulse(src, max_range = 2, threshold = RAD_EXTREME_INSULATION) -/obj/item/nuke_core/suicide_act(mob/user) +/obj/item/nuke_core/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 @@ -203,6 +203,7 @@ victim.visible_message(span_danger("As [victim] is hit by [src], both flash into dust and silence fills the room..."),\ span_userdanger("You're hit by [src] and everything suddenly goes silent.\n[src] flashes into dust, and soon as you can register this, you do as well."),\ span_hear("Everything suddenly goes silent.")) + victim.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS) victim.dust() radiation_pulse(src, max_range = 2, threshold = RAD_EXTREME_INSULATION, chance = 40) playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE) @@ -217,6 +218,7 @@ span_hear("Everything suddenly goes silent.")) radiation_pulse(user, max_range = 2, threshold = RAD_EXTREME_INSULATION, chance = 40) playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE) + user.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS) user.dust() /obj/item/nuke_core_container/supermatter @@ -316,6 +318,7 @@ var/mob/living/victim = AM if(victim.incorporeal_move || victim.status_flags & GODMODE) //try to keep this in sync with supermatter's consume fail conditions return + 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)].", INVESTIGATE_ENGINE) @@ -329,6 +332,7 @@ user.visible_message(span_danger("As [user] touches [AM] with \the [src], both flash into dust and silence fills the room..."),\ span_userdanger("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."),\ span_hear("Everything suddenly goes silent.")) + user.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS) user.dust() radiation_pulse(src, max_range = 2, threshold = RAD_EXTREME_INSULATION, chance = 40) playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE) diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 613c7f6571b..b1301c5fa30 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -24,10 +24,10 @@ armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30) var/force_opens = FALSE -/obj/item/crowbar/suicide_act(mob/user) +/obj/item/crowbar/suicide_act(mob/living/user) user.visible_message(span_suicide("[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, TRUE, -1) - return (BRUTELOSS) + return BRUTELOSS /obj/item/crowbar/red icon_state = "crowbar_red" @@ -130,7 +130,7 @@ . = ..() . += " It's fitted with a [tool_behaviour == TOOL_CROWBAR ? "prying" : "cutting"] head." -/obj/item/crowbar/power/suicide_act(mob/user) +/obj/item/crowbar/power/suicide_act(mob/living/user) if(tool_behaviour == TOOL_CROWBAR) user.visible_message(span_suicide("[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, TRUE, -1) @@ -143,7 +143,7 @@ if(target_bodypart) target_bodypart.drop_limb() playsound(loc, SFX_DESECRATION, 50, TRUE, -1) - return (BRUTELOSS) + return BRUTELOSS /obj/item/crowbar/power/attack(mob/living/carbon/attacked_carbon, mob/user) if(istype(attacked_carbon) && attacked_carbon.handcuffed && tool_behaviour == TOOL_WIRECUTTER) diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index e871451b2d4..e067c93de29 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -44,9 +44,9 @@ "yellow" = "#ffa500" ) -/obj/item/screwdriver/suicide_act(mob/user) +/obj/item/screwdriver/suicide_act(mob/living/user) user.visible_message(span_suicide("[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) @@ -124,13 +124,13 @@ . = ..() . += " It's fitted with a [tool_behaviour == TOOL_SCREWDRIVER ? "screw" : "bolt"] bit." -/obj/item/screwdriver/power/suicide_act(mob/user) +/obj/item/screwdriver/power/suicide_act(mob/living/user) if(tool_behaviour == TOOL_SCREWDRIVER) user.visible_message(span_suicide("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!")) else user.visible_message(span_suicide("[user] is pressing [src] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(loc, 'sound/items/drill_use.ogg', 50, TRUE, -1) - return(BRUTELOSS) + return BRUTELOSS /obj/item/screwdriver/cyborg name = "automated screwdriver" diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index b2258720c4e..347c6d424f4 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -97,9 +97,9 @@ open_flame() -/obj/item/weldingtool/suicide_act(mob/user) +/obj/item/weldingtool/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/screwdriver_act(mob/living/user, obj/item/tool) flamethrower_screwdriver(tool, user) diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 6d43fa5efa9..b352139b074 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -56,10 +56,10 @@ return ..() -/obj/item/wirecutters/suicide_act(mob/user) +/obj/item/wirecutters/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is cutting at [user.p_their()] arteries with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(loc, usesound, 50, TRUE, -1) - return (BRUTELOSS) + return BRUTELOSS /obj/item/wirecutters/abductor name = "alien wirecutters" diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index ec9ba4879d4..f34152be4c0 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -24,10 +24,10 @@ toolspeed = 1 armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30) -/obj/item/wrench/suicide_act(mob/user) +/obj/item/wrench/suicide_act(mob/living/user) user.visible_message(span_suicide("[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, TRUE, -1) - return (BRUTELOSS) + return BRUTELOSS /obj/item/wrench/abductor name = "alien wrench" diff --git a/code/game/objects/items/virgin_mary.dm b/code/game/objects/items/virgin_mary.dm index 71ee71ccfd8..6ac206549e0 100644 --- a/code/game/objects/items/virgin_mary.dm +++ b/code/game/objects/items/virgin_mary.dm @@ -54,4 +54,4 @@ /obj/item/virgin_mary/proc/manual_suicide(mob/living/user) user.adjustOxyLoss(200) - user.death(0) + user.death(FALSE) diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 5c00644db19..61eac01a174 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -19,9 +19,9 @@ . = ..() AddElement(/datum/element/kneejerk) -/obj/item/banhammer/suicide_act(mob/user) - user.visible_message(span_suicide("[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(span_suicide("[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. @@ -51,7 +51,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts") attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") -/obj/item/sord/suicide_act(mob/user) +/obj/item/sord/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty."), \ span_suicide("You try to impale yourself with [src], but it's USELESS...")) return SHAME @@ -84,9 +84,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 effectiveness = 105, \ ) -/obj/item/claymore/suicide_act(mob/user) +/obj/item/claymore/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!")) - return(BRUTELOSS) + return BRUTELOSS //statistically similar to e-cutlasses /obj/item/claymore/cutlass @@ -159,6 +159,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 user.fully_heal(admin_revive = FALSE) //STEAL THE LIFE OF OUR FALLEN FOES add_notch(user) target.visible_message(span_warning("[target] crumbles to dust beneath [user]'s blows!"), span_userdanger("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) @@ -271,9 +272,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50) resistance_flags = FIRE_PROOF -/obj/item/katana/suicide_act(mob/user) +/obj/item/katana/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/katana/cursed //used by wizard events, see the tendril_loot.dm file for the miner one slot_flags = null @@ -411,9 +412,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb_continuous_on = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts"), \ attack_verb_simple_on = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")) -/obj/item/switchblade/suicide_act(mob/user) +/obj/item/switchblade/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/extended start_extended = TRUE @@ -432,12 +433,12 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb_simple = list("call", "ring") 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(span_suicide("[user] begins to tie a noose with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!")) else user.visible_message(span_suicide("[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" @@ -536,9 +537,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(span_suicide("[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' @@ -872,6 +873,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 to_chat(user, span_warning("You easily splat [target].")) if(isliving(target)) var/mob/living/bug = target + bug.investigate_log("has been splatted by a flyswatter.", INVESTIGATE_DEATHS) bug.gib() else qdel(target) @@ -1042,6 +1044,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 log_combat(user, living_target, "slashed", src) if(living_target.stat == DEAD && prob(force*damage_mod*0.5)) living_target.visible_message(span_danger("[living_target] explodes in a shower of gore!"), blind_message = span_hear("You hear organic matter ripping and tearing!")) + living_target.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS) living_target.gib() log_combat(user, living_target, "gibbed", src) else if(target.uses_integrity) diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index d59d83e320a..9237fc72fb5 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, span_notice("Invoking the sacred ritual, you sacrifice [L].")) + 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 068e8bcd08e..bae3bde6a41 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -279,7 +279,9 @@ GLOBAL_LIST_EMPTY(crematoriums) 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 e22dd660646..592bbbf6a14 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -69,8 +69,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(span_danger("[src] shatters!.")) + visible_message(span_danger("[src] shatters!")) qdel(src) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 369d5474aa5..98da67c862b 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -16,6 +16,7 @@ INVESTIGATE_BOTANY, INVESTIGATE_CARGO, INVESTIGATE_CRAFTING, + INVESTIGATE_DEATHS, INVESTIGATE_ENGINE, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_GRAVITY, diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 3f583d491e9..f66bd32bf28 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -327,7 +327,7 @@ GLOBAL_PROTECT(admin_verbs_poll) log_admin("[key_name(usr)] admin ghosted.") message_admins("[key_name_admin(usr)] admin ghosted.") var/mob/body = mob - body.ghostize(1) + body.ghostize(TRUE) init_verbs() if(body && !body.key) body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm index 04baa88626f..cc7bfb1fffe 100644 --- a/code/modules/admin/verbs/adminfun.dm +++ b/code/modules/admin/verbs/adminfun.dm @@ -76,6 +76,7 @@ var/mob/living/living_victim = victim if (istype(living_victim)) + living_victim.investigate_log("has been gibbed by an admin.", INVESTIGATE_DEATHS) if(confirm == "Yes") living_victim.gib() else diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index e692d154e62..df76ef8dc29 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -189,7 +189,7 @@ GLOBAL_LIST_EMPTY(antagonists) var/mob/dead/observer/C = pick(candidates) to_chat(owner, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(owner)]) to replace a jobbanned player.") - owner.current.ghostize(0) + owner.current.ghostize(FALSE) owner.current.key = C.key /** diff --git a/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm b/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm index 204e81fb953..3bf5d323645 100644 --- a/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm +++ b/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm @@ -30,6 +30,7 @@ exposed_mob.apply_damage(0.6*reac_volume, TOX) if(overmind && ishuman(exposed_mob)) if(exposed_mob.stat == UNCONSCIOUS || exposed_mob.stat == HARD_CRIT) + exposed_mob.investigate_log("has been killed by distributed neurons (blob).", INVESTIGATE_DEATHS) exposed_mob.death() //sleeping in a fight? bad plan. if(exposed_mob.stat == DEAD && overmind.can_buy(5)) var/mob/living/simple_animal/hostile/blob/blobspore/spore = new/mob/living/simple_animal/hostile/blob/blobspore(get_turf(exposed_mob)) diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm index 4fe68388822..3f307a283f3 100644 --- a/code/modules/antagonists/blob/overmind.dm +++ b/code/modules/antagonists/blob/overmind.dm @@ -173,6 +173,8 @@ GLOBAL_LIST_EMPTY(blob_nodes) if(!(ROLE_BLOB in L.faction)) playsound(L, 'sound/effects/splat.ogg', 50, TRUE) + 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 d8ac784941a..34fb0602b15 100644 --- a/code/modules/antagonists/changeling/powers/absorb.dm +++ b/code/modules/antagonists/changeling/powers/absorb.dm @@ -57,7 +57,9 @@ changeling.adjust_chemicals(10) changeling.can_respec = TRUE - 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 b718db7c599..c0b63ca8f74 100644 --- a/code/modules/antagonists/changeling/powers/headcrab.dm +++ b/code/modules/antagonists/changeling/powers/headcrab.dm @@ -33,6 +33,8 @@ var/turf/user_turf = get_turf(user) user.transfer_observers_to(user_turf) // user is about to be deleted, store orbiters on the turf + if(user.stat != DEAD) + user.investigate_log("has been gibbed by headslug burst.", INVESTIGATE_DEATHS) user.gib() . = TRUE addtimer(CALLBACK(src, .proc/spawn_headcrab, stored_mind, user_turf, organs), 3 SECONDS) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 69164f77f2b..7d3f2a0a1ad 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -278,10 +278,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(span_suicide("[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/clown_ops/clown_weapons.dm b/code/modules/antagonists/clown_ops/clown_weapons.dm index 229e350baf8..551349c4c63 100644 --- a/code/modules/antagonists/clown_ops/clown_weapons.dm +++ b/code/modules/antagonists/clown_ops/clown_weapons.dm @@ -119,7 +119,7 @@ return TRUE return ..() -/obj/item/melee/energy/sword/bananium/suicide_act(mob/user) +/obj/item/melee/energy/sword/bananium/suicide_act(mob/living/user) if(!blade_active) attack_self(user) user.visible_message(span_suicide("[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!")) @@ -202,11 +202,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(span_suicide("[user] is deliberately slipping on the [src.name]! It looks like \he's trying to commit suicide.")) playsound(loc, 'sound/misc/slip.ogg', 50, TRUE, -1) bomb.arm_grenade(user, 0, FALSE) - return (BRUTELOSS) + return BRUTELOSS //TEARSTACHE GRENADE diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 8d582d39c5b..04f4a322ed1 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -347,6 +347,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(sacrificial) playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE) + sacrificial.investigate_log("has been sacrificially gibbed by the cult.", INVESTIGATE_DEATHS) sacrificial.gib() return TRUE @@ -616,7 +617,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/mob/dead/observer/C = pick(candidates) to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") - mob_to_revive.ghostize(0) + mob_to_revive.ghostize(FALSE) mob_to_revive.key = C.key else fail_invoke() @@ -890,7 +891,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(span_warning("[affecting] freezes statue-still, glowing an unearthly red."), \ span_cult("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 9ee71582914..1da0efd46e5 100644 --- a/code/modules/antagonists/heretic/influences.dm +++ b/code/modules/antagonists/heretic/influences.dm @@ -179,7 +179,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) explosion.start(src) 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 4340f680385..cb5904beb89 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -481,6 +481,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( span_danger("[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 676f1757e46..950a9ece769 100644 --- a/code/modules/antagonists/heretic/magic/mansus_grasp.dm +++ b/code/modules/antagonists/heretic/magic/mansus_grasp.dm @@ -81,7 +81,7 @@ . = span_notice("[user] effortlessly snaps [user.p_their()] fingers near [to_light], igniting it with eldritch energies. Fucking badass!") remove_hand_with_no_refund(user) -/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(span_suicide("[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 var/datum/action/cooldown/spell/touch/mansus_grasp/source = locate() in user.actions diff --git a/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm b/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm index bb00a99e863..589862ead7d 100644 --- a/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm +++ b/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm @@ -39,6 +39,7 @@ //This is essentially a death mark, use this to finish your opponent quicker. if(HAS_TRAIT(victim, TRAIT_CRITICAL_CONDITION) && !HAS_TRAIT(victim, TRAIT_NODEATH)) + victim.investigate_log("has been killed by fiery rebirth.", INVESTIGATE_DEATHS) victim.death() victim.apply_damage(20, BURN) diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm index f6b6453b285..3059af9b402 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm @@ -114,7 +114,7 @@ return ..() -/obj/item/disk/nuclear/suicide_act(mob/user) +/obj/item/disk/nuclear/suicide_act(mob/living/user) user.visible_message(span_suicide("[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) @@ -126,7 +126,7 @@ user.remove_atom_colour(ADMIN_COLOUR_PRIORITY) user.visible_message(span_suicide("[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/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm index 39c7ce89f34..acc0fba11f6 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm @@ -617,6 +617,7 @@ GLOBAL_VAR(station_nuke_source) return FALSE to_chat(gibbed, span_userdanger("You are shredded to atoms by [source]!")) + gibbed.investigate_log("has been gibbed by a nuclear blast.", INVESTIGATE_DEATHS) gibbed.gib() return TRUE diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 902542a0415..f7b66d5c998 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -491,10 +491,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(span_suicide("[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 b848d6618ad..d5efe2e7c6a 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -103,7 +103,9 @@ target.visible_message(span_warning("[target] slumps onto the ground."), \ span_revenwarning("Violets lights, dancing in your vision, getting clo--")) drained_mobs += REF(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, span_revenwarning("[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 02fb5d52bfa..62b7bba2480 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -226,6 +226,7 @@ /mob/living/simple_animal/hostile/imp/slaughter/laughter/ex_act(severity) switch(severity) if(EXPLODE_DEVASTATE) + investigate_log("has died from a devastating explosion.", INVESTIGATE_DEATHS) death() if(EXPLODE_HEAVY) adjustBruteLoss(60) diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index e4885c2a57e..56359c03cc9 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -338,6 +338,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) return FALSE to_chat(victim, span_userdanger("The blast wave from [source] tears you atom from atom!")) + victim.investigate_log("has been dusted by a doomsday device.", INVESTIGATE_DEATHS) victim.dust() return TRUE diff --git a/code/modules/antagonists/traitor/objectives/demoralise_graffiti.dm b/code/modules/antagonists/traitor/objectives/demoralise_graffiti.dm index 54b38546359..d29db73f969 100644 --- a/code/modules/antagonists/traitor/objectives/demoralise_graffiti.dm +++ b/code/modules/antagonists/traitor/objectives/demoralise_graffiti.dm @@ -210,8 +210,8 @@ user.balloon_alert(user, "all done!") /// Copying the functionality from normal spraycans, but doesn't need all the optional checks -/obj/item/traitor_spraycan/suicide_act(mob/user) - if (expended) +/obj/item/traitor_spraycan/suicide_act(mob/living/user) + if(expended) user.visible_message(span_suicide("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, but nothing happens!")) user.say("MEDIOCRE!!", forced="spraycan suicide") return SHAME @@ -221,8 +221,7 @@ user.say("WITNESS ME!!", forced="spraycan suicide") playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5) suicider.update_lips("spray_face", paint_color) - - return (OXYLOSS) + return OXYLOSS /obj/effect/decal/cleanable/traitor_rune name = "syndicate graffiti" diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index d3a409e064f..a396763940b 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -152,6 +152,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() #undef TEAR_IN_REALITY_CONSUME_RANGE diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 5415ec6b5af..425eacd959c 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -41,8 +41,7 @@ user.visible_message(span_suicide("[user]'s [src] receives a signal and [user.p_they()] die[user.p_s()] like a gamer!")) user.set_suicide(TRUE) user.adjustOxyLoss(200)//it sends an electrical pulse to their heart, killing them. or something. - user.death(0) - user.suicide_log() + user.death(FALSE) playsound(user, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) qdel(src) diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index d47c6f8fb88..9fef2ce84e6 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -22,7 +22,7 @@ /obj/item/assembly/timer/proc/manual_suicide(mob/living/user) user.visible_message(span_suicide("[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/capture_the_flag/ctf_game.dm b/code/modules/capture_the_flag/ctf_game.dm index 5daddbfe4d8..e1640b5f1f8 100644 --- a/code/modules/capture_the_flag/ctf_game.dm +++ b/code/modules/capture_the_flag/ctf_game.dm @@ -553,6 +553,7 @@ return if(!(src.team in L.faction)) to_chat(L, span_danger("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 69fd4ea0f7d..62bc667231a 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -69,12 +69,14 @@ 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) // Disallows reentering body and disassociates mind @@ -106,6 +108,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) ghostize(FALSE) // Disallows reentering body and disassociates mind @@ -217,6 +220,7 @@ ghostize(FALSE) // Disallows reentering body and disassociates mind /mob/living/proc/suicide_log() + investigate_log("has died from committing suicide.", INVESTIGATE_DEATHS) log_message("committed suicide as [src.type]", LOG_ATTACK) /mob/living/carbon/human/suicide_log() diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index f59e29aa959..fc452e2dc58 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -41,9 +41,9 @@ to_chat(user, span_warning("PZZTTPFFFT")) desc = "[desc] The display is flickering slightly." -/obj/item/clothing/glasses/hud/suicide_act(mob/user) - if(user.is_blind() || !isliving(user)) - return ..() +/obj/item/clothing/glasses/hud/suicide_act(mob/living/user) + if(user.is_blind()) + return SHAME var/mob/living/living_user = user user.visible_message(span_suicide("[user] looks through [src] and looks overwhelmed with the information! It looks like [user.p_theyre()] trying to commit suicide!")) if(living_user.getOrganLoss(ORGAN_SLOT_BRAIN) >= BRAIN_DAMAGE_SEVERE) diff --git a/code/modules/clothing/head/fedora.dm b/code/modules/clothing/head/fedora.dm index 6e0adb6e78d..eb5f916bc1a 100644 --- a/code/modules/clothing/head/fedora.dm +++ b/code/modules/clothing/head/fedora.dm @@ -21,15 +21,15 @@ icon_state = "fedora_beige" inhand_icon_state = null -/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(span_suicide("[user] is donning [src]! It looks like [user.p_theyre()] trying to be nice to girls.")) user.say("M'lady.", forced = "fedora suicide") sleep(1 SECONDS) H.facial_hairstyle = "Neckbeard" - return(BRUTELOSS) + return BRUTELOSS /obj/item/clothing/head/fedora/carpskin name = "carpskin fedora" diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 216b2113b6c..33d43beea94 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -26,14 +26,14 @@ desc = "The commander in chef's head wear. Upon closer inspection, there seem to be dozens of tiny levers, buttons, dials, and screens inside of this hat. What the hell...?" mouse_control_probability = 100 -/obj/item/clothing/head/utility/chefhat/suicide_act(mob/user) +/obj/item/clothing/head/utility/chefhat/suicide_act(mob/living/user) user.visible_message(span_suicide("[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(2 SECONDS) user.visible_message(span_suicide("[user] climbs into an imaginary oven!")) user.say("BOOORK!", forced = "chef hat suicide") playsound(user, 'sound/machines/ding.ogg', 50, TRUE) - return(FIRELOSS) + return FIRELOSS /obj/item/clothing/head/utility/chefhat/relaymove(mob/living/user, direction) if(!ismouse(user) || !isliving(loc) || !prob(mouse_control_probability)) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index a2ba930d9c1..aa95a5190de 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -24,7 +24,7 @@ var/datum/weakref/our_alert_ref /obj/item/clothing/shoes/suicide_act(mob/living/carbon/user) - if(rand(2)>1) + if(prob(50)) user.visible_message(span_suicide("[user] begins tying \the [src] up waaay too tightly! It looks like [user.p_theyre()] trying to commit suicide!")) var/obj/item/bodypart/leg/left = user.get_bodypart(BODY_ZONE_L_LEG) var/obj/item/bodypart/leg/right = user.get_bodypart(BODY_ZONE_R_LEG) @@ -39,7 +39,7 @@ for(var/i in 1 to 3) sleep(0.3 SECONDS) playsound(user, 'sound/weapons/genhit2.ogg', 50, TRUE) - return(BRUTELOSS) + return BRUTELOSS /obj/item/clothing/shoes/worn_overlays(mutable_appearance/standing, isinhands = FALSE) . = ..() diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 1374551829b..b061d4cb298 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -14,9 +14,9 @@ . = ..() AddComponent(/datum/component/surgery_initiator) -/obj/item/clothing/neck/cloak/suicide_act(mob/user) +/obj/item/clothing/neck/cloak/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/experisci/destructive_scanner.dm b/code/modules/experisci/destructive_scanner.dm index 0be450ff6bd..faad2b27994 100644 --- a/code/modules/experisci/destructive_scanner.dm +++ b/code/modules/experisci/destructive_scanner.dm @@ -81,6 +81,7 @@ movable_atom.forceMove(this_turf) if(isliving(movable_atom)) var/mob/living/fucked_up_thing = movable_atom + fucked_up_thing.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS) fucked_up_thing.gib() SEND_SIGNAL(src, COMSIG_MACHINERY_DESTRUCTIVE_SCAN, scanned_atoms) diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm index 81659c5181b..7ef056ffda2 100644 --- a/code/modules/food_and_drinks/machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm @@ -145,6 +145,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( var/cold_multiplier = 1 if(target_temp < TCMB + 10) // a tiny bit of leeway dunking_target.visible_message(span_userdanger("[dunking_target] explodes from the entropic difference! Holy fuck!")) + dunking_target.investigate_log("has been gibbed by entropic difference (being dunked into [src]).", INVESTIGATE_DEATHS) dunking_target.gib() log_combat(user, dunking_target, "blew up", null, "by dunking them into [src]") return diff --git a/code/modules/food_and_drinks/machinery/gibber.dm b/code/modules/food_and_drinks/machinery/gibber.dm index edb82137449..ae761640f4a 100644 --- a/code/modules/food_and_drinks/machinery/gibber.dm +++ b/code/modules/food_and_drinks/machinery/gibber.dm @@ -198,7 +198,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 601c51415ce..aa91d712272 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -51,18 +51,18 @@ peel.grind_results = list(/datum/reagent/medicine/coagulant/banana_peel = peel.seed.potency * 0.2) peel.juice_results = list(/datum/reagent/medicine/coagulant/banana_peel = peel.seed.potency * 0.2) -/obj/item/food/grown/banana/suicide_act(mob/user) +/obj/item/food/grown/banana/suicide_act(mob/living/user) user.visible_message(span_suicide("[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, TRUE, -1) sleep(2.5 SECONDS) if(!user) - return (OXYLOSS) + return OXYLOSS user.say("BANG!", forced = /datum/reagent/consumable/banana) sleep(2.5 SECONDS) 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 @@ -86,11 +86,10 @@ else icon_state = "[icon_state]_3" -/obj/item/grown/bananapeel/suicide_act(mob/user) +/obj/item/grown/bananapeel/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is deliberately slipping on [src]! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(loc, 'sound/misc/slip.ogg', 50, TRUE, -1) - return (BRUTELOSS) - + return BRUTELOSS // Mimana - invisible sprites are totally a feature! /obj/item/seeds/banana/mime diff --git a/code/modules/hydroponics/grown/weeds/kudzu.dm b/code/modules/hydroponics/grown/weeds/kudzu.dm index 45be37cd671..899036b7ed0 100644 --- a/code/modules/hydroponics/grown/weeds/kudzu.dm +++ b/code/modules/hydroponics/grown/weeds/kudzu.dm @@ -23,10 +23,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(span_suicide("[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/weeds/nettle.dm b/code/modules/hydroponics/grown/weeds/nettle.dm index e0326db78a2..deb16eab18f 100644 --- a/code/modules/hydroponics/grown/weeds/nettle.dm +++ b/code/modules/hydroponics/grown/weeds/nettle.dm @@ -51,7 +51,7 @@ attack_verb_continuous = list("stings") attack_verb_simple = list("sting") -/obj/item/food/grown/nettle/suicide_act(mob/user) +/obj/item/food/grown/nettle/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 8c9be1f995f..36febd0143b 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -393,9 +393,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(span_suicide("[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!" @@ -409,9 +409,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(span_suicide("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!")) - return (TOXLOSS) + return TOXLOSS /obj/item/cultivator name = "cultivator" @@ -430,9 +430,9 @@ attack_verb_simple = list("slash", "slice", "cut", "claw") hitsound = 'sound/weapons/bladeslice.ogg' -/obj/item/cultivator/suicide_act(mob/user) +/obj/item/cultivator/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/cultivator/rake name = "rake" @@ -492,10 +492,10 @@ effectiveness = 100, \ ) -/obj/item/hatchet/suicide_act(mob/user) +/obj/item/hatchet/suicide_act(mob/living/user) user.visible_message(span_suicide("[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, TRUE, -1) - return (BRUTELOSS) + return BRUTELOSS /obj/item/hatchet/wooden desc = "A crude axe blade upon a short wooden handle." @@ -530,7 +530,7 @@ effectiveness = 105, \ ) -/obj/item/scythe/suicide_act(mob/user) +/obj/item/scythe/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 @@ -538,7 +538,7 @@ if(BP) BP.drop_limb() playsound(src, SFX_DESECRATION ,50, TRUE, -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/industrial_lift/industrial_lift.dm b/code/modules/industrial_lift/industrial_lift.dm index e775da8f3c5..2a923f6bca2 100644 --- a/code/modules/industrial_lift/industrial_lift.dm +++ b/code/modules/industrial_lift/industrial_lift.dm @@ -307,6 +307,7 @@ GLOBAL_LIST_EMPTY(lifts) to_chat(crushed, span_userdanger("You are crushed by [src]!")) if(violent_landing) // Violent landing = gibbed. But the nicest kind of gibbing, keeping everything intact. + crushed.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS) crushed.gib(FALSE, FALSE, FALSE) else // Less violent landing simply crushes every bone in your body. diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm index 1dc2ffadbe0..c0b29c966ca 100644 --- a/code/modules/instruments/items.dm +++ b/code/modules/instruments/items.dm @@ -30,9 +30,9 @@ if(user.incapacitated() || !((loc == user) || (isturf(loc) && Adjacent(user)))) // sorry, no more TK playing. return STOP_PLAYING -/obj/item/instrument/suicide_act(mob/user) +/obj/item/instrument/suicide_act(mob/living/user) user.visible_message(span_suicide("[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(!ISADVANCEDTOOLUSER(user)) diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm b/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm index 507086be8fe..6dfe8203b5c 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm @@ -284,6 +284,7 @@ /obj/effect/sliding_puzzle/prison/Destroy() if(prisoner) to_chat(prisoner,span_userdanger("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/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm index f884cee7202..f8cbe5e3a39 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm @@ -52,7 +52,7 @@ if(!H.dropItemToGround(W)) qdel(W) if(issilicon(H)) //no advantage to sacrificing borgs... - H.gib() + H.investigate_log("has been gibbed by the necropolis tendril.", INVESTIGATE_DEATHS) visible_message(span_notice("Serrated tendrils eagerly pull [H] apart, but find nothing of interest.")) return @@ -82,6 +82,7 @@ if(deliverymob && (deliverymob.mind?.has_antag_datum(/datum/antagonist/ashwalker)) && (deliverykey in ashies.players_spawned) && (prob(40))) to_chat(deliverymob, span_warning("The Necropolis is pleased with your sacrifice. You feel confident your existence after death is secure.")) ashies.players_spawned -= deliverykey + H.investigate_log("has been gibbed by the necropolis tendril.", INVESTIGATE_DEATHS) H.gib() atom_integrity = min(atom_integrity + max_integrity*0.05,max_integrity)//restores 5% hp of tendril for(var/mob/living/L in view(src, 5)) diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm index b82a69aed90..043879f5f83 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm @@ -25,6 +25,7 @@ user.adjustCloneLoss(20) if(user.stat) to_chat(user, span_userdanger("No... just one more try...")) + user.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS) user.gib() else user.visible_message(span_warning("[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/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm index 59dbd3796ed..90adb67d335 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm @@ -381,6 +381,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) // Let's gib the last person to have selected a room number in it. if(unforeseen_consequences) to_chat(unforeseen_consequences, span_warning("\The [H] starts to resonate. Forcing it to enter itself induces a bluespace paradox, violently tearing your body apart.")) + unforeseen_consequences.investigate_log("has been gibbed by using [H] while inside of it.", INVESTIGATE_DEATHS) unforeseen_consequences.gib() var/turf/targetturf = find_safe_turf() diff --git a/code/modules/mining/equipment/kheiral_cuffs.dm b/code/modules/mining/equipment/kheiral_cuffs.dm index f53bde37f14..30553187402 100644 --- a/code/modules/mining/equipment/kheiral_cuffs.dm +++ b/code/modules/mining/equipment/kheiral_cuffs.dm @@ -104,12 +104,11 @@ . += emissive_appearance(icon, "strand_light", src, alpha = src.alpha) /obj/item/kheiral_cuffs/suicide_act(mob/living/carbon/user) - var/mob/living/carbon/human/victim - if(ishuman(user)) - victim = user - else - return ..() - user.visible_message(span_suicide("[user] locks [src] around their neck, wrinkles forming across their face. It looks like [user.p_theyre()] trying to commit suicide!")) + if(!ishuman(user)) + return + + var/mob/living/carbon/human/victim = user + victim.visible_message(span_suicide("[user] locks [src] around their neck, wrinkles forming across their face. It looks like [user.p_theyre()] trying to commit suicide!")) for(var/mult in 1 to 5) // Rapidly age if(!do_after(victim, 0.5 SECONDS)) // just to space out the aging, either way you still dust. break diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index aebf6d18e4f..41584bd0c87 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -865,7 +865,7 @@ . += span_notice("Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.") . += span_notice("Transforming it immediately after an attack causes the next attack to come out faster.") -/obj/item/melee/cleaving_saw/suicide_act(mob/user) +/obj/item/melee/cleaving_saw/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is [is_open ? "closing [src] on [user.p_their()] neck" : "opening [src] into [user.p_their()] chest"]! It looks like [user.p_theyre()] trying to commit suicide!")) attack_self(user) return BRUTELOSS diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index b2cb19fd130..2e183773d71 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -377,10 +377,10 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ /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(span_suicide("\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/mob/living/basic/basic_defense.dm b/code/modules/mob/living/basic/basic_defense.dm index d6dc450f08b..60ff41e4bf8 100644 --- a/code/modules/mob/living/basic/basic_defense.dm +++ b/code/modules/mob/living/basic/basic_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/blood.dm b/code/modules/mob/living/blood.dm index 80a16b603a3..08fca775680 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -38,6 +38,7 @@ if(BLOOD_VOLUME_EXCESS to BLOOD_VOLUME_MAX_LETHAL) if(DT_PROB(7.5, delta_time)) to_chat(src, span_userdanger("Blood starts to tear your skin apart. You're going to burst!")) + investigate_log("has been gibbed by having too much blood.", INVESTIGATE_DEATHS) inflate_gib() if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS) if(DT_PROB(5, delta_time)) @@ -58,6 +59,7 @@ to_chat(src, span_warning("You feel extremely [word].")) if(-INFINITY to BLOOD_VOLUME_SURVIVE) if(!HAS_TRAIT(src, TRAIT_NODEATH)) + investigate_log("has died of bloodloss.", INVESTIGATE_DEATHS) death() var/temp_bleed = 0 diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index e175be5cd9c..866496fb29e 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -34,8 +34,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 f3e0314f72a..bcc85603902 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -251,6 +251,7 @@ /obj/item/organ/internal/brain/on_life(delta_time, times_fired) if(damage >= BRAIN_DAMAGE_DEATH) //rip to_chat(owner, span_userdanger("The last spark of life in your brain fizzles out...")) + owner.investigate_log("has been killed by brain damage.", INVESTIGATE_DEATHS) owner.death() /obj/item/organ/internal/brain/check_damage_thresholds(mob/M) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index e3204007b4b..fde88ac4cb3 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -326,6 +326,7 @@ shake_camera(user, 1 SECONDS, 3) if(owner) shake_camera(owner, 2, 5) + owner.investigate_log("has been gibbed by something inside [owner.p_their()] stomach.", INVESTIGATE_DEATHS) owner.gib() qdel(src) 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 63528f6f208..d5832f623f1 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -125,6 +125,7 @@ new_xeno.visible_message(span_danger("[new_xeno] wriggles out of [owner]!"), span_userdanger("You exit [owner], your previous host.")) owner.adjustBruteLoss(40) owner.cut_overlay(overlay) + owner.investigate_log("has been gibbed by an alien larva.", 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 98ee19b4bc5..fd7839838f4 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -36,9 +36,27 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) if(SSticker.HasRoundStarted()) SSblackbox.ReportDeath(src) log_message("has died (BRUTE: [src.getBruteLoss()], BURN: [src.getFireLoss()], TOX: [src.getToxLoss()], OXY: [src.getOxyLoss()], CLONE: [src.getCloneLoss()])", LOG_ATTACK) - + investigate_log("[key_name(src)] 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()]
\ + Last attacker: [src.lastattacker] ([src.lastattackerckey || "none"])", INVESTIGATE_DEATHS) to_chat(src, span_warning("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) set_species(/datum/species/skeleton) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 0631d033ced..00923a23009 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -417,6 +417,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 50593c96663..2c233c3d79f 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -71,6 +71,7 @@ /datum/species/dullahan/spec_life(mob/living/carbon/human/human, delta_time, times_fired) if(QDELETED(my_head)) my_head = null + human.investigate_log("has been gibbed by the loss of [human.p_their()] head.", INVESTIGATE_DEATHS) human.gib() return @@ -83,6 +84,7 @@ var/obj/item/bodypart/head/illegal_head = human.get_bodypart(BODY_ZONE_HEAD) if(illegal_head) my_head = null + human.investigate_log("has been gibbed by having an illegal head put on [human.p_their()] shoulders.", INVESTIGATE_DEATHS) human.gib() // Yeah so giving them a head on their body is really not a good idea, so their original head will remain but uh, good luck fixing it after that. /datum/species/dullahan/proc/update_vision_perspective(mob/living/carbon/human/human) 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 b22ecf0799b..e31e584fea7 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -134,6 +134,7 @@ if(H.bodytemperature > 850 && H.on_fire && prob(25)) explosion(H, devastation_range = 1, heavy_impact_range = 2, light_impact_range = 4, flame_range = 5, explosion_cause = src) 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(0.5 * delta_time) 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 36ff24cb5ed..666f51e9c6b 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -56,6 +56,7 @@ vampire.blood_volume -= 0.125 * delta_time if(vampire.blood_volume <= BLOOD_VOLUME_SURVIVE) to_chat(vampire, span_danger("You ran out of blood!")) + vampire.investigate_log("has been dusted by a lack of blood (vampire).", INVESTIGATE_DEATHS) vampire.dust() var/area/A = get_area(vampire) if(istype(A, /area/station/service/chapel)) diff --git a/code/modules/mob/living/carbon/human/suicides.dm b/code/modules/mob/living/carbon/human/suicides.dm index 94c917ab6bc..5917659ede2 100644 --- a/code/modules/mob/living/carbon/human/suicides.dm +++ b/code/modules/mob/living/carbon/human/suicides.dm @@ -1,5 +1,6 @@ /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) // Disallows reentering body and disassociates mind diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d58aad07f74..faac4c120ba 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -445,6 +445,7 @@ updatehealth() if(!whispered) to_chat(src, span_notice("You have given up life and succumbed to death.")) + investigate_log("has succumbed to death.", INVESTIGATE_DEATHS) death() /** diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 8f6c2580706..5a3c9798f5d 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -405,6 +405,7 @@ ///Logs, gibs and returns point values of whatever mob is unfortunate enough to get eaten. /mob/living/singularity_act() investigate_log("([key_name(src)]) has been consumed by the singularity.", INVESTIGATE_ENGINE) //Oh that's where the clown ended up! + investigate_log("has been gibbed by the singularity.", INVESTIGATE_DEATHS) gib() return 20 @@ -433,6 +434,7 @@ if(4) new /mob/living/simple_animal/hostile/construct/proteon/hostile(get_turf(src)) spawn_dust() + investigate_log("has been gibbed by Nar'Sie.", INVESTIGATE_DEATHS) gib() return TRUE diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm index 81b75ce7be4..2cd8244aa18 100644 --- a/code/modules/mob/living/silicon/ai/ai_defense.dm +++ b/code/modules/mob/living/silicon/ai/ai_defense.dm @@ -42,6 +42,7 @@ /mob/living/silicon/ai/ex_act(severity, target) switch(severity) if(EXPLODE_DEVASTATE) + investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS) gib() if(EXPLODE_HEAVY) if (stat != DEAD) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3a60c8b2073..5886e46172b 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -397,6 +397,7 @@ explosion(src, devastation_range = 1, heavy_impact_range = 2, light_impact_range = 4, flame_range = 2) else explosion(src, devastation_range = -1, light_impact_range = 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 22dfc72cc6e..c84c65eb8e3 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -399,12 +399,14 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real 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(EXPLODE_DEVASTATE) + investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS) gib() return if(EXPLODE_HEAVY) diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index fc1a8921c06..16b6d02bc89 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -157,6 +157,7 @@ if(prob(bomb_armor)) adjustBruteLoss(500) else + investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS) gib() /// Called when a heavy explosive acts on this mob diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 5bc024bcf85..7297b30550a 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -971,7 +971,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 00261e534aa..7ff087357eb 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -552,6 +552,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 @@ -574,6 +575,7 @@ GLOBAL_LIST_INIT(strippable_corgi_items, create_strippable_list(list( "DELICIOUS SOULS") playsound(src, 'sound/magic/demon_attack1.ogg', 75, TRUE) narsie_act() + 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/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 56e9c3d7784..ff315e7186a 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -308,6 +308,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/ex_act(severity, target) switch(severity) if(EXPLODE_DEVASTATE) + investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS) gib() return TRUE if(EXPLODE_HEAVY) @@ -318,6 +319,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/gib() if(summoner) to_chat(summoner, "[span_danger("Your [src] was blown up!")]") + summoner.investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS) summoner.gib() ghostize() qdel(src) @@ -508,7 +510,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians to_chat(chosen_guardian, span_holoparasite("Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.")) to_chat(src, "Your [chosen_guardian.real_name] has been successfully reset.") message_admins("[key_name_admin(candidate)] has taken control of ([ADMIN_LOOKUPFLW(chosen_guardian)])") - chosen_guardian.ghostize(0) + chosen_guardian.ghostize(FALSE) chosen_guardian.guardianrecolor() chosen_guardian.guardianrename() //give it a new color and name, to show it's a new person chosen_guardian.key = candidate.key diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 71bdc4ae335..31545ef74de 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -353,7 +353,7 @@ to_chat(user, span_warning("You don't have enough units of that chemical to modify the bee's DNA!")) ..() -/obj/item/queen_bee/suicide_act(mob/user) +/obj/item/queen_bee/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] eats [src]! It looks like [user.p_theyre()] trying to commit suicide!")) user.say("IT'S HIP TO EAT BEES!") qdel(src) 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 1552bf6a318..0dc4b2f8e78 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -472,6 +472,7 @@ span_notice("You suck the nutriment out of [living_wrapped], feeding you enough to lay a cluster of enriched eggs."), ) ADD_TRAIT(living_wrapped, TRAIT_SPIDER_CONSUMED, TRAIT_GENERIC) + living_wrapped.investigate_log("has been killed by being wrapped in a cocoon.", INVESTIGATE_DEATHS) living_wrapped.death() //you just ate them, they're dead. log_combat(owner, living_wrapped, "spider cocooned") else diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 11cb2c9ca1c..c08ea528dab 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -87,7 +87,7 @@ var/datum/action/changeling/humanform/hf = new() changeling_datum.purchased_powers += hf changeling_datum.regain_powers() - + 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/_megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/_megafauna.dm index b0891e0d430..9f6361335e9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/_megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/_megafauna.dm @@ -140,6 +140,7 @@ span_userdanger("You feast on [L], restoring your health!")) if(!is_station_level(z) || client) //NPC monsters won't heal while on station adjustBruteLoss(-L.maxHealth/2) + L.investigate_log("has been devoured by [src].", INVESTIGATE_DEATHS) L.gib() return TRUE 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 dafa99b0890..c4238506abf 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 @@ -142,6 +142,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 fbf51441f16..7a68550c448 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -161,6 +161,7 @@ /mob/living/simple_animal/hostile/megafauna/colossus/devour(mob/living/victim) visible_message(span_colossus("[src] disintegrates [victim]!")) + victim.investigate_log("has been devoured by [src].", INVESTIGATE_DEATHS) victim.dust() /obj/effect/temp_visual/at_shield @@ -202,6 +203,7 @@ if(isliving(target)) var/mob/living/dust_mob = target if(dust_mob.stat == DEAD) + dust_mob.investigate_log("has been dusted by a death bolt (colossus).", INVESTIGATE_DEATHS) dust_mob.dust() return if(!explode_hit_objects || istype(target, /obj/vehicle/sealed)) @@ -571,6 +573,7 @@ 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 @@ -591,7 +594,7 @@ escape.Grant(holder_animal) remove_verb(holder_animal, /mob/living/verb/pulled) -/obj/structure/closet/stasis/dump_contents(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) @@ -601,7 +604,8 @@ holder_animal.mind.transfer_to(L) holder_animal.gib() 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/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 018788f5ba7..db733b440f5 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -436,6 +436,7 @@ Difficulty: Hard visible_message(span_hierophant_warning("\"[pick(kill_phrases)]\"")) visible_message(span_hierophant_warning("[src] annihilates [L]!"),span_userdanger("You annihilate [L], restoring your health!")) adjustHealth(-L.maxHealth*0.5) + L.investigate_log("has been devoured by [src].", INVESTIGATE_DEATHS) L.dust() /mob/living/simple_animal/hostile/megafauna/hierophant/CanAttack(atom/the_target) 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 3c1d5df32e5..274a54003e4 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 @@ -72,6 +72,7 @@ /mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target) switch(severity) if(EXPLODE_DEVASTATE) + investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS) gib() if(EXPLODE_HEAVY) adjustBruteLoss(140) 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 2ac8cd3d0bb..2ea51760457 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 @@ -222,6 +222,7 @@ visible_message(span_warning("[name] burrows into the flesh of [H]!")) var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L = make_legion(H) visible_message(span_warning("[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/living/simple_animal/hostile/smspider.dm b/code/modules/mob/living/simple_animal/hostile/smspider.dm index ec05f2e56d1..30e8362e985 100644 --- a/code/modules/mob/living/simple_animal/hostile/smspider.dm +++ b/code/modules/mob/living/simple_animal/hostile/smspider.dm @@ -37,6 +37,7 @@ playsound(get_turf(src), 'sound/effects/supermatter.ogg', 10, TRUE) visible_message(span_danger("[src] knocks into [target], turning them to dust in a brilliant flash of light!")) var/mob/living/victim = target + victim.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS) victim.dust() if(!overcharged) death() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 19578f74ff7..54b416053c5 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -359,7 +359,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 M.client?.init_verbs() return TRUE diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm index 24e9beb8fc7..3ccdf03202c 100644 --- a/code/modules/mod/modules/modules_maint.dm +++ b/code/modules/mod/modules/modules_maint.dm @@ -53,6 +53,7 @@ mod.wearer.client?.give_award(/datum/award/achievement/misc/springlock, mod.wearer) mod.wearer.apply_damage(500, BRUTE, forced = TRUE, spread_damage = TRUE, sharpness = SHARP_POINTY) //boggers, bogchamp, etc if(!HAS_TRAIT(mod.wearer, TRAIT_NODEATH)) + mod.wearer.investigate_log("has been killed by [src].", INVESTIGATE_DEATHS) mod.wearer.death() //just in case, for some reason, they're still alive flash_color(mod.wearer, flash_color = "#FF0000", flash_time = 10 SECONDS) @@ -329,6 +330,7 @@ you_fucked_up = TRUE playsound(src, 'sound/effects/whirthunk.ogg', 75) to_chat(mod.wearer, span_userdanger("That was stupid.")) + investigate_log("has flown off into space due to the [src].", INVESTIGATE_DEATHS) mod.wearer.Stun(FLY_TIME, ignore_canstun = TRUE) animate(mod.wearer, FLY_TIME, pixel_z = 256, alpha = 0) QDEL_IN(mod.wearer, FLY_TIME) diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm index 5737bbb4332..7b9cceaaf1d 100644 --- a/code/modules/mod/modules/modules_ninja.dm +++ b/code/modules/mod/modules/modules_ninja.dm @@ -262,6 +262,7 @@ return var/mob/living/living_user = user to_chat(living_user, span_danger("fATaL EERRoR: 382200-*#00CODE RED\nUNAUTHORIZED USE DETECteD\nCoMMENCING SUB-R0UTIN3 13...\nTERMInATING U-U-USER...")) + living_user.investigate_log("has been gibbed by using a MODsuit equipped with [src].", INVESTIGATE_DEATHS) living_user.gib() /obj/item/mod/module/dna_lock/reinforced/on_emp(datum/source, severity) diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index d575eb58d93..d86d8420701 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -8,7 +8,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(span_suicide("[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 f2de001afb0..4ce5a54cff7 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(span_suicide("[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 5e0351a346b..d645a9dd9ca 100644 --- a/code/modules/paperwork/paper_cutter.dm +++ b/code/modules/paperwork/paper_cutter.dm @@ -18,7 +18,7 @@ update_appearance() -/obj/item/papercutter/suicide_act(mob/user) +/obj/item/papercutter/suicide_act(mob/living/user) if(storedcutter) user.visible_message(span_suicide("[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, SFX_DESECRATION ,50, TRUE, -1) - return (BRUTELOSS) + return BRUTELOSS else user.visible_message(span_suicide("[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, TRUE, -1) - return (BRUTELOSS) + return BRUTELOSS /obj/item/papercutter/update_icon_state() diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 53b40ea8014..ef550ed6464 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -53,7 +53,7 @@ if(eyes) eyes.applyOrganDamage(rand(6,8)) sleep(1 SECONDS) - return (BRUTELOSS) + return BRUTELOSS /obj/item/paperplane/update_overlays() . = ..() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index a4cf6d61bb1..317e1416e0b 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -32,9 +32,9 @@ embedding = list(embed_chance = 50) sharpness = SHARP_POINTY -/obj/item/pen/suicide_act(mob/user) +/obj/item/pen/suicide_act(mob/living/user) user.visible_message(span_suicide("[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." @@ -275,13 +275,13 @@ w_class_on = WEIGHT_CLASS_NORMAL) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, .proc/on_transform) -/obj/item/pen/edagger/suicide_act(mob/user) - . = BRUTELOSS +/obj/item/pen/edagger/suicide_act(mob/living/user) if(extended) user.visible_message(span_suicide("[user] forcefully rams the pen into their mouth!")) else user.visible_message(span_suicide("[user] is holding a pen up to their mouth! It looks like [user.p_theyre()] trying to commit suicide!")) attack_self(user) + return BRUTELOSS /* * Signal proc for [COMSIG_TRANSFORMING_ON_TRANSFORM]. diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 8a8108a7905..899a0124923 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -13,9 +13,9 @@ attack_verb_continuous = list("stamps") attack_verb_simple = list("stamp") -/obj/item/stamp/suicide_act(mob/user) +/obj/item/stamp/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.")) - return (OXYLOSS) + return OXYLOSS /obj/item/stamp/get_writing_implement_details() var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/paper) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index b21f2523715..09339df157c 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -477,12 +477,12 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri icon_state = "[base_icon_state][amount < 3 ? amount : ""]" inhand_icon_state = "coil_[cable_color]" -/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(span_suicide("[user] is making a noose with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) else user.visible_message(span_suicide("[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/proc/check_menu(mob/living/user) if(!istype(user)) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index b0387348137..6614ea4be87 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -167,9 +167,9 @@ else . += "The charge meter reads [CEILING(percent(), 0.1)]%." //so it doesn't say 0% charge when the overlay indicates it still has charge -/obj/item/stock_parts/cell/suicide_act(mob/user) +/obj/item/stock_parts/cell/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/proc/on_reagent_change(datum/reagents/holder, ...) SIGNAL_HANDLER diff --git a/code/modules/power/lighting/light_items.dm b/code/modules/power/lighting/light_items.dm index 202a937964d..7354025b23a 100644 --- a/code/modules/power/lighting/light_items.dm +++ b/code/modules/power/lighting/light_items.dm @@ -21,11 +21,10 @@ /obj/item/light/suicide_act(mob/living/carbon/user) if (status == LIGHT_BROKEN) user.visible_message(span_suicide("[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(span_suicide("[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/pipecleaners.dm b/code/modules/power/pipecleaners.dm index 25f1c19b54f..091bbc89fcd 100644 --- a/code/modules/power/pipecleaners.dm +++ b/code/modules/power/pipecleaners.dm @@ -250,12 +250,12 @@ By design, d1 is the smallest direction and d2 is the highest pipecleaner_color = new_color update_appearance() -/obj/item/stack/pipe_cleaner_coil/suicide_act(mob/user) +/obj/item/stack/pipe_cleaner_coil/suicide_act(mob/living/user) if(locate(/obj/structure/chair/stool) in get_turf(user)) user.visible_message(span_suicide("[user] is making a noose with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) else user.visible_message(span_suicide("[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/pipe_cleaner_coil/Initialize(mapload, new_amount = null, list/mat_override=null, mat_amt=1, param_color = null) . = ..() diff --git a/code/modules/power/supermatter/supermatter_hit_procs.dm b/code/modules/power/supermatter/supermatter_hit_procs.dm index c99279013ed..4d669d049b9 100644 --- a/code/modules/power/supermatter/supermatter_hit_procs.dm +++ b/code/modules/power/supermatter/supermatter_hit_procs.dm @@ -63,6 +63,7 @@ return var/mob/living/carbon/jedi = user to_chat(jedi, span_userdanger("That was a really dense idea.")) + jedi.investigate_log("had [jedi.p_their()] brain dusted by touching [src] with telekinesis.", INVESTIGATE_DEATHS) jedi.ghostize() var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.internal_organs if(rip_u) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index b8e72eb9ade..12daa3b7aa0 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -168,6 +168,7 @@ jedi.ghostize(jedi) if(rip_u) qdel(rip_u) + jedi.investigate_log("had [jedi.p_their()] brain dusted by touching [src] with telekinesis.", INVESTIGATE_DEATHS) jedi.death() return COMPONENT_CANCEL_ATTACK_CHAIN @@ -196,6 +197,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() /proc/tesla_zap(atom/source, zap_range = 3, power, zap_flags = ZAP_DEFAULT_FLAGS, list/shocked_targets = list()) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 50ddd9c2a95..cb80cbb7845 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -538,7 +538,7 @@ #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/internal/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN) if (B && chambered && chambered.loaded_projectile && can_trigger_gun(user) && !chambered.loaded_projectile.nodamage) user.visible_message(span_suicide("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!")) @@ -552,14 +552,14 @@ B.forceMove(T) var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, /proc/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(span_suicide("[user] panics and starts choking to death!")) - return(OXYLOSS) + return OXYLOSS else user.visible_message(span_suicide("[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 adfe57ae0c0..74350a69c9d 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -254,7 +254,7 @@ // Sets the ratio to 0 if the gun doesn't have enough charge to fire, or if its power cell is removed. /obj/item/gun/energy/suicide_act(mob/living/user) - if (istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD)) + if(istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD)) user.visible_message(span_suicide("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!")) sleep(2.5 SECONDS) if(user.is_holding(src)) @@ -263,15 +263,14 @@ var/obj/item/ammo_casing/energy/shot = ammo_type[select] cell.use(shot.e_cost) update_appearance() - return(FIRELOSS) + return FIRELOSS else user.visible_message(span_suicide("[user] panics and starts choking to death!")) - return(OXYLOSS) + return OXYLOSS else user.visible_message(span_suicide("[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) switch(var_name) diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 97eb494af3c..4541ea22ee2 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -120,10 +120,10 @@ /obj/item/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj) to_chat(user, span_warning("The [name] whizzles quietly.")) -/obj/item/gun/magic/suicide_act(mob/user) +/obj/item/gun/magic/suicide_act(mob/living/user) user.visible_message(span_suicide("[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, TRUE, -1) - return (FIRELOSS) + return FIRELOSS /obj/item/gun/magic/vv_edit_var(var_name, var_value) . = ..() diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 2798fd04791..18174cbe69c 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -122,7 +122,8 @@ to_chat(user, "You irradiate yourself with pure positive energy! \ [pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You die...","Do you want your possessions identified?")]\ ") - user.death(0) + user.investigate_log("has been killed by a bolt of resurrection.", INVESTIGATE_DEATHS) + user.death(FALSE) return user.revive(full_heal = TRUE, admin_revive = TRUE) to_chat(user, span_notice("You feel great!")) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 98bdae7adcd..0ea51e341a1 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -44,6 +44,7 @@ else if(victim.stat != DEAD) to_chat(victim, span_notice("You feel great!")) return + victim.investigate_log("has been killed by a bolt of death.", INVESTIGATE_DEATHS) victim.death() if(istype(target, /obj/machinery/hydroponics)) @@ -67,6 +68,7 @@ var/mob/living/victim = target if(victim.mob_biotypes & MOB_UNDEAD) //positive energy harms the undead + victim.investigate_log("has been killed by a bolt of life.", INVESTIGATE_DEATHS) victim.death() return diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index 1facb269e9d..8f1efd59462 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -64,6 +64,7 @@ reaping = FALSE else if(RockPaperScissors[RPSchoice] == grim) //You lost! to_chat(M, span_hierophant("You lose, and the malevolent spirits smirk eerily as they surround your body.")) + M.investigate_log("has lost rock paper scissors with the grim reaper and been dusted.", INVESTIGATE_DEATHS) M.dust() return else //VICTORY ROYALE diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index a2286ddc247..094c7066e35 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -217,6 +217,7 @@ /datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M, delta_time, times_fired) if(HAS_TRAIT(M, TRAIT_FAT)) + M.investigate_log("has been gibbed by consuming [src] while fat.", INVESTIGATE_DEATHS) M.inflate_gib() return ..() diff --git a/code/modules/reagents/reagent_containers/condiment.dm b/code/modules/reagents/reagent_containers/condiment.dm index 139d86e784d..c7060759e4a 100644 --- a/code/modules/reagents/reagent_containers/condiment.dm +++ b/code/modules/reagents/reagent_containers/condiment.dm @@ -139,14 +139,14 @@ list_reagents = list(/datum/reagent/consumable/salt = 20) fill_icon_thresholds = null -/obj/item/reagent_containers/condiment/saltshaker/suicide_act(mob/user) +/obj/item/reagent_containers/condiment/saltshaker/suicide_act(mob/living/user) user.visible_message(span_suicide("[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]" user.name = newname user.real_name = newname desc = "Salt. From dead crew, presumably." - return (TOXLOSS) + return TOXLOSS /obj/item/reagent_containers/condiment/saltshaker/afterattack(obj/target, mob/living/user, proximity) . = ..() diff --git a/code/modules/reagents/reagent_containers/misc.dm b/code/modules/reagents/reagent_containers/misc.dm index b8ebc89fafe..47b0fdcaa7e 100644 --- a/code/modules/reagents/reagent_containers/misc.dm +++ b/code/modules/reagents/reagent_containers/misc.dm @@ -133,9 +133,9 @@ . = ..() AddComponent(/datum/component/cleaner, 3 SECONDS, pre_clean_callback=CALLBACK(src, .proc/should_clean)) -/obj/item/reagent_containers/cup/rag/suicide_act(mob/user) +/obj/item/reagent_containers/cup/rag/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/cup/rag/afterattack(atom/target, mob/living/user, proximity_flag, click_parameters) if(!proximity_flag) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index a819ff9d9c7..53d308937d0 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -173,7 +173,7 @@ amount_per_transfer_from_this = 2 possible_transfer_amounts = list(2,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(span_suicide("[user] is putting the nozzle of \the [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!")) if(do_mob(user,user,30)) if(reagents.total_volume >= amount_per_transfer_from_this)//if not empty diff --git a/code/modules/research/anomaly/anomaly_core.dm b/code/modules/research/anomaly/anomaly_core.dm index b293b5993e0..87d59b59d89 100644 --- a/code/modules/research/anomaly/anomaly_core.dm +++ b/code/modules/research/anomaly/anomaly_core.dm @@ -23,7 +23,6 @@ /obj/item/assembly/signaler/anomaly/manual_suicide(mob/living/carbon/user) user.visible_message(span_suicide("[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/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 6966a79ff14..7827913008b 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -63,6 +63,8 @@ Note: Must be placed within 3 tiles of the R&D Console for(var/obj/item/innerthing in food) destroy_item(innerthing, TRUE) 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() qdel(thing) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 0bcf046b501..cf2a0d2184d 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -459,6 +459,7 @@ if(do_after(user, 60, target = user)) to_chat(user, span_userdanger("You explode!")) explosion(user, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 6, explosion_cause = src) + user.investigate_log("has been gibbed by an oil slime extract explosion.", INVESTIGATE_DEATHS) user.gib() return to_chat(user, span_notice("You stop feeding [src], and the feeling passes.")) diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 144a5db2709..2ca4a01109b 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -34,6 +34,7 @@ All ShuttleMove procs go here M.visible_message(span_warning("[shuttle] slams into [M]!")) SSblackbox.record_feedback("tally", "shuttle_gib", 1, M.type) log_shuttle("[key_name(M)] was shuttle gibbed by [shuttle].") + investigate_log("has been gibbed by [shuttle].", INVESTIGATE_DEATHS) M.gib() diff --git a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm index 388fc3c3595..3031f73a0e6 100644 --- a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm +++ b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm @@ -222,6 +222,8 @@ // No defib possible after laughter victim.apply_damage(1000, BRUTE, wound_bonus = CANT_WOUND) + if(victim.stat != DEAD) + victim.investigate_log("has been killed by being consumed by a slaugter demon.", INVESTIGATE_DEATHS) victim.death() on_victim_consumed(victim, jaunter) diff --git a/code/modules/spells/spell_types/self/soultap.dm b/code/modules/spells/spell_types/self/soultap.dm index db39a0616a0..0d416179458 100644 --- a/code/modules/spells/spell_types/self/soultap.dm +++ b/code/modules/spells/spell_types/self/soultap.dm @@ -52,6 +52,7 @@ ADD_TRAIT(cast_on, TRAIT_NO_SOUL, MAGIC_TRAIT) cast_on.visible_message(span_danger("[cast_on] suddenly dies!"), ignored_mobs = cast_on) + cast_on.investigate_log("has been killed by soul tap.", INVESTIGATE_DEATHS) cast_on.death() // If the next tap will kill us, give us a heads-up diff --git a/code/modules/spells/spell_types/shapeshift/_shapeshift.dm b/code/modules/spells/spell_types/shapeshift/_shapeshift.dm index befb05aa8f6..dfdfde2f2a9 100644 --- a/code/modules/spells/spell_types/shapeshift/_shapeshift.dm +++ b/code/modules/spells/spell_types/shapeshift/_shapeshift.dm @@ -127,6 +127,7 @@ priority_announce("We detected a pipe blockage around [get_area(get_turf(cast_on))], please dispatch someone to investigate.", "Central Command") // Gib our caster, and make sure to leave nothing behind // (If we leave something behind, it'll drop on the turf of the pipe, which is kinda wrong.) + cast_on.investigate_log("has been gibbed by shapeshifting while ventcrawling.", INVESTIGATE_DEATHS) cast_on.gib(TRUE, TRUE, TRUE) /// Callback for the radial that allows the user to choose their species. diff --git a/code/modules/spells/spell_types/touch/smite.dm b/code/modules/spells/spell_types/touch/smite.dm index d39ddb3e30c..6a7c17aae5a 100644 --- a/code/modules/spells/spell_types/touch/smite.dm +++ b/code/modules/spells/spell_types/touch/smite.dm @@ -45,6 +45,7 @@ new /obj/effect/gibspawner(get_turf(victim)) return TRUE + living_victim.investigate_log("has been gibbed by the smite spell.", INVESTIGATE_DEATHS) living_victim.gib() return TRUE diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 8bc0643a43d..bb4efd37f11 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -35,6 +35,8 @@ 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() START_PROCESSING(SSobj, src) diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 5cf68c14938..cb78b7e15e2 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -134,12 +134,12 @@ . = ..() AddElement(/datum/element/eyestab) -/obj/item/surgicaldrill/suicide_act(mob/user) +/obj/item/surgicaldrill/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] rams [src] into [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!")) addtimer(CALLBACK(user, /mob/living/carbon.proc/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 desc = "Effectively a small power drill contained within your arm. May or may not pierce the heavens." @@ -147,7 +147,6 @@ w_class = WEIGHT_CLASS_SMALL toolspeed = 0.5 - /obj/item/scalpel name = "scalpel" desc = "Cut, cut, and once more cut." @@ -187,10 +186,9 @@ desc = "Ultra-sharp blade attached directly to your bone for extra-accuracy." toolspeed = 0.5 -/obj/item/scalpel/suicide_act(mob/user) +/obj/item/scalpel/suicide_act(mob/living/user) user.visible_message(span_suicide("[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/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 06b5e723ca2..76dd493b94c 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -297,6 +297,7 @@ var/mob/living/silicon/ai/ai = occupant if(!ai.linked_core) // we probably shouldnt gib AIs with a core unlucky_ai = occupant + ai.investigate_log("has been gibbed by having their mech destroyed.", INVESTIGATE_DEATHS) ai.gib() //No wreck, no AI to recover else mob_exit(ai,silent = TRUE, forced = TRUE) // so we dont ghost the AI diff --git a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm index 4f5a8b49dcb..7aae9bd224c 100644 --- a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm +++ b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm @@ -197,6 +197,7 @@ continue to_chat(crushed_victim, span_userdanger("[chassis] crashes down on you from above!")) if(crushed_victim.stat != CONSCIOUS) + crushed_victim.investigate_log("has been gibbed by a falling Savannah Ivanov mech.", INVESTIGATE_DEATHS) crushed_victim.gib(FALSE, FALSE, FALSE) continue crushed_victim.adjustBruteLoss(80) diff --git a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm index 32b5cea8a77..24ad39a9bf5 100644 --- a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm @@ -121,6 +121,7 @@ if(LAZYLEN(target.butcher_results) || LAZYLEN(target.guaranteed_butcher_results)) SEND_SIGNAL(src, COMSIG_MECHA_DRILL_MOB, 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/modules/vehicles/mecha/mecha_mob_interaction.dm b/code/modules/vehicles/mecha/mecha_mob_interaction.dm index 05b8b5588f5..fb7266973fb 100644 --- a/code/modules/vehicles/mecha/mecha_mob_interaction.dm +++ b/code/modules/vehicles/mecha/mecha_mob_interaction.dm @@ -117,6 +117,7 @@ AI.eyeobj?.forceMove(newloc) //kick the eye out as well if(forced)//This should only happen if there are multiple AIs in a round, and at least one is Malf. if(!AI.linked_core) //if the victim AI has no core + AI.investigate_log("has been gibbed by being forced out of their mech by another AI.", INVESTIGATE_DEATHS) AI.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. AI = null mecha_flags &= ~SILICON_PILOT diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm index a2799634833..996556cd069 100644 --- a/code/modules/vehicles/vehicle_key.dm +++ b/code/modules/vehicles/vehicle_key.dm @@ -62,7 +62,7 @@ if(user.mind?.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_LEGENDARY) //Janny janny janny janny janny playsound(src, 'sound/effects/adminhelp.ogg', 50, TRUE, -1) user.adjustOxyLoss(200) - user.death(0) + user.death(FALSE) /obj/item/key/lasso name = "bone lasso" diff --git a/code/modules/wiremod/core/usb_cable.dm b/code/modules/wiremod/core/usb_cable.dm index e0f0a82a4c3..f46fe91d5c9 100644 --- a/code/modules/wiremod/core/usb_cable.dm +++ b/code/modules/wiremod/core/usb_cable.dm @@ -82,7 +82,7 @@ return FALSE -/obj/item/usb_cable/suicide_act(mob/user) +/obj/item/usb_cable/suicide_act(mob/living/user) user.visible_message(span_suicide("[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 4c3268fe28d..bd59eb3033e 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -58,20 +58,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(span_suicide("[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)