From fb1aa593741e7f027a92933649ee9d5f7b34cb7c Mon Sep 17 00:00:00 2001 From: Will <7099514+Willburd@users.noreply.github.com> Date: Wed, 18 Jun 2025 02:34:22 -0400 Subject: [PATCH] allow nondna blood smearing (#17880) * allow nondna blood smearing * use lazyor --- code/datums/forensics_crime.dm | 35 ++++---------------------- code/game/objects/effects/gibs.dm | 6 ++--- code/modules/reagents/reagents/core.dm | 3 +++ 3 files changed, 10 insertions(+), 34 deletions(-) diff --git a/code/datums/forensics_crime.dm b/code/datums/forensics_crime.dm index 2236c2b98f4..dadc3f26890 100644 --- a/code/datums/forensics_crime.dm +++ b/code/datums/forensics_crime.dm @@ -82,12 +82,7 @@ /datum/forensics_crime/proc/merge_prints(var/datum/forensics_crime/origin) if(!islist(origin?.fingerprints)) return - if(!fingerprints) - fingerprints = list() - if(fingerprints) - fingerprints |= origin.fingerprints - else - fingerprints = origin.fingerprints.Copy() + LAZYOR(fingerprints,origin.fingerprints) /// Clears data to default state, wiping all evidence /datum/forensics_crime/proc/clear_prints() @@ -148,12 +143,7 @@ /datum/forensics_crime/proc/merge_hiddenprints(var/datum/forensics_crime/origin) if(!islist(origin?.fingerprintshidden)) return - if(!fingerprintshidden) - fingerprintshidden = list() - if(fingerprintshidden) - fingerprintshidden |= origin.fingerprintshidden - else - fingerprintshidden = origin.fingerprintshidden.Copy() + LAZYOR(fingerprintshidden,origin.fingerprintshidden) ////////////////////////////////////////////////////////////////////////////////////// @@ -205,12 +195,7 @@ /datum/forensics_crime/proc/merge_fibres(var/datum/forensics_crime/origin) if(!islist(origin?.suit_fibres)) return - if(!suit_fibres) - suit_fibres = list() - if(suit_fibres) - suit_fibres |= origin.suit_fibres - else - suit_fibres = origin.suit_fibres.Copy() + LAZYOR(suit_fibres,origin.suit_fibres) /// Clears data to default state, wiping all evidence /datum/forensics_crime/proc/clear_fibres() @@ -268,22 +253,12 @@ /datum/forensics_crime/proc/merge_blooddna(var/datum/forensics_crime/origin, var/list/raw_list = null) // Copying from a list, blood on a mob's feet is stored as a list outside of forensics data if(raw_list) - if(!blood_DNA) - blood_DNA = list() - if(blood_DNA) - blood_DNA |= raw_list - else - blood_DNA = raw_list.Copy() + LAZYOR(blood_DNA,raw_list) return // Copying from another datums if(!islist(origin?.blood_DNA)) return - if(!blood_DNA) - blood_DNA = list() - if(blood_DNA) - blood_DNA |= origin.blood_DNA - else - blood_DNA = origin.blood_DNA.Copy() + LAZYOR(blood_DNA,origin.blood_DNA) /// Clears data to default state, wiping all evidence /datum/forensics_crime/proc/clear_blooddna() diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm index 5e2f58fdc1b..8021ef414b7 100644 --- a/code/game/objects/effects/gibs.dm +++ b/code/game/objects/effects/gibs.dm @@ -47,10 +47,8 @@ gib.update_icon() gib.init_forensic_data() - if(MobDNA) - gib.add_blooddna(MobDNA,null) - else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey - gib.add_blooddna(null,null) + gib.add_blooddna(MobDNA,null) + if(istype(location,/turf/)) var/list/directions = gibdirections[i] if(directions.len) diff --git a/code/modules/reagents/reagents/core.dm b/code/modules/reagents/reagents/core.dm index 400e04edd01..49df4025515 100644 --- a/code/modules/reagents/reagents/core.dm +++ b/code/modules/reagents/reagents/core.dm @@ -41,6 +41,9 @@ var/mob/living/carbon/alien/A = data["donor"] var/obj/effect/decal/cleanable/blood/B = blood_splatter(T, src, 1) B.add_blooddna(A.dna,A) + else + var/obj/effect/decal/cleanable/blood/B = blood_splatter(T, src, 1) + B.add_blooddna(null,null) /datum/reagent/blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)