sanity and logging for death() (#34616)

* sanity and logging for death()

* null to FALSE
This commit is contained in:
nervere
2023-07-14 19:21:48 -04:00
committed by GitHub
parent 7b0fb39d35
commit 69f0e9abd1
2 changed files with 37 additions and 28 deletions

View File

@@ -34,34 +34,42 @@
/mob/proc/death(gibbed)
timeofdeath = world.time
INVOKE_EVENT(src, /event/death, "user" = src, "body_destroyed" = gibbed)
living_mob_list -= src
dead_mob_list += src
stat_collection.add_death_stat(src)
if(runescape_skull_display && ticker)//we died, begone skull
if ("\ref[src]" in ticker.runescape_skulls)
var/datum/runescape_skull_data/the_data = ticker.runescape_skulls["\ref[src]"]
ticker.runescape_skulls -= "\ref[src]"
qdel(the_data)
if(client)
client.color = initial(client.color)
for(var/obj/item/I in src)
I.OnMobDeath(src)
for(var/atom/A in arcane_tampered_atoms)
A.bless()
if(spell_masters && spell_masters.len)
for(var/obj/abstract/screen/movable/spell_master/spell_master in spell_masters)
spell_master.on_holder_death(src)
if(transmogged_from)
transmog_death()
if(client || mind)
var/mindname = (src.mind && src.mind.name) ? "[src.mind.name]" : "[real_name]"
var/died_as = (mindname == real_name) ? "" : " (died as [real_name])"
for(var/mob/M in get_deadchat_hearers())
var/rendered = "\proper<a href='?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a><span class='game deadsay'> \The <span class='name'>[mindname][died_as]</span> has died at \the <span class='name'>[get_area(src)]</span>.</span>"
to_chat(M, rendered)
log_game("[key_name(src)] has died at [get_area(src)]. Coordinates: ([get_coordinates_string(src)])")
spawn()
if(is_dying)
var/deathstring = "[src] at ([get_coordinates_string(src)]) had death() called (with var/gibbed = [gibbed]) while already dying!"
log_debug(deathstring)
message_admins(deathstring)
return
is_dying = TRUE
timeofdeath = world.time
INVOKE_EVENT(src, /event/death, "user" = src, "body_destroyed" = gibbed)
living_mob_list -= src
dead_mob_list += src
stat_collection.add_death_stat(src)
if(runescape_skull_display && ticker)//we died, begone skull
if ("\ref[src]" in ticker.runescape_skulls)
var/datum/runescape_skull_data/the_data = ticker.runescape_skulls["\ref[src]"]
ticker.runescape_skulls -= "\ref[src]"
qdel(the_data)
if(client)
client.color = initial(client.color)
for(var/obj/item/I in src)
I.OnMobDeath(src)
for(var/atom/A in arcane_tampered_atoms)
A.bless()
if(spell_masters && spell_masters.len)
for(var/obj/abstract/screen/movable/spell_master/spell_master in spell_masters)
spell_master.on_holder_death(src)
if(transmogged_from)
transmog_death()
if(client || mind)
var/mindname = (src.mind && src.mind.name) ? "[src.mind.name]" : "[real_name]"
var/died_as = (mindname == real_name) ? "" : " (died as [real_name])"
for(var/mob/M in get_deadchat_hearers())
var/rendered = "\proper<a href='?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a><span class='game deadsay'> \The <span class='name'>[mindname][died_as]</span> has died at \the <span class='name'>[get_area(src)]</span>.</span>"
to_chat(M, rendered)
log_game("[key_name(src)] has died at [get_area(src)]. Coordinates: ([get_coordinates_string(src)])")
is_dying = FALSE
/mob/proc/transmog_death()
var/obj/transmog_body_container/C = transmogged_from

View File

@@ -75,6 +75,7 @@
/// Set to TRUE when the mob is being transformed into something else or gibbed.
/// Can be checked to avoid running expensive code for mobs that are about to not exist.
var/monkeyizing = null
var/is_dying = FALSE
var/other = 0.0
var/eye_blind = null //Carbon
var/eye_blurry = null //Carbon