Death Stats Fix (#18100)

* Death Stats Fix

Changes how the coordinates for the death stats are stored.
-> One column for x,y,z instead of all mashed into one column

* Add missing GLOB

* convert indentation

* Rebase to latest master

* Adds the attackers char id aswell.

* Slight reformatting and add constraint

* Fix indentation

* Adds another check

---------

Co-authored-by: Werner <Arrow768@users.noreply.github.com>
This commit is contained in:
Werner
2024-01-06 15:16:25 +00:00
committed by GitHub
co-authored by Werner
parent 7c00488b35
commit 9c18c99c37
3 changed files with 79 additions and 24 deletions
+29 -24
View File
@@ -241,36 +241,41 @@ GENERAL_PROTECT_DATUM(/datum/controller/subsystem/statistics)
return
if(!istype(H, /mob/living/carbon/human) && !istype(H, /mob/living/silicon/robot))
return
if(!H.key || !H.mind)
return
var/area/placeofdeath = get_area(H)
var/podname = placeofdeath ? "[placeofdeath]" : "Unknown area"
if(!establish_db_connection(GLOB.dbcon))
log_game("SQL ERROR during death reporting. Failed to connect.")
else
var/DBQuery/query = GLOB.dbcon.NewQuery("INSERT INTO ss13_death (name, ckey, char_id, job, special, pod, tod, laname, lackey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES \
(:name:, :ckey:, :char_id:, :job:, :special:, :pod:, :tod:, :laname:, :lackey:, :gender:, :bruteloss:, :fireloss:, :brainloss:, :oxyloss:, :coord:')")
if(!query.Execute(list(
"name"=H.real_name,
"ckey"=H.ckey,
"char_id"=H.character_id,
"job"=H?.mind.assigned_role,
"special"=H?.mind.special_role,
"pod"=podname,
"tod"=time2text(world.realtime, "YYYY-MM-DD hh:mm:ss"),
"laname"=H?.lastattacker?.real_name,
"lackey"=H?.lastattacker?.ckey,
"gender"=H.gender,
"bruteloss"=H.getBruteLoss(),
"fireloss"=H.getFireLoss(),
"brainloss"=H.getBrainLoss(),
"oxyloss"=H.getOxyLoss(),
"coord"="[H.x], [H.y], [H.z]")
))
var/err = query.ErrorMsg()
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
return
//Prepare location data
var/turf/T = get_turf(H)
var/DBQuery/query = GLOB.dbcon.NewQuery("INSERT INTO ss13_death (name, ckey, char_id, job, special, pod, tod, laname, lackey, lachar_id, gender, bruteloss, fireloss, brainloss, oxyloss, loc_x, loc_y, loc_z) VALUES \
(:name:, :ckey:, :char_id:, :job:, :special:, :pod:, :tod:, :laname:, :lackey:, :lachar_id:, :gender:, :bruteloss:, :fireloss:, :brainloss:, :oxyloss:, :loc_x:, :loc_y:, :loc_z:)")
if(!query.Execute(list(
"name"=H.real_name,
"ckey"=H.ckey,
"char_id"=H.character_id,
"job"=H?.mind?.assigned_role,
"special"=H?.mind?.special_role,
"pod"=podname,
"tod"=time2text(world.realtime, "YYYY-MM-DD hh:mm:ss"),
"laname"=H?.lastattacker?.real_name,
"lackey"=H?.lastattacker?.ckey,
"lachar_id"=H?.lastattacker?.character_id,
"gender"=H.gender,
"bruteloss"=H.getBruteLoss(),
"fireloss"=H.getFireLoss(),
"brainloss"=H.getBrainLoss(),
"oxyloss"=H.getOxyLoss(),
"loc_x"=T?.x,
"loc_y"=T?.y,
"loc_z"=T?.z)
))
var/err = query.ErrorMsg()
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
/datum/controller/subsystem/statistics/proc/IncrementSimpleStat(stat)
. = TRUE