diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index a3a874f9f07..557e6198750 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -571,3 +571,13 @@ return FALSE return TRUE + +#define LAZY_LISTS_OR(left_list, right_list)\ + ( length(left_list)\ + ? length(right_list)\ + ? (left_list | right_list)\ + : left_list.Copy()\ + : length(right_list)\ + ? right_list.Copy()\ + : null\ + ) diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index a45c0f4bb72..55244d83a7d 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -7,10 +7,10 @@ var/list/fibers //assoc print = print /datum/component/forensics/InheritComponent(datum/component/forensics/F, original) //Use of | and |= being different here is INTENTIONAL. - fingerprints = fingerprints | F.fingerprints - hiddenprints = hiddenprints | F.hiddenprints - blood_DNA = blood_DNA | F.blood_DNA - fibers = fibers | F.fibers + fingerprints = LAZY_LISTS_OR(fingerprints, F.fingerprints) + hiddenprints = LAZY_LISTS_OR(hiddenprints, F.hiddenprints) + blood_DNA = LAZY_LISTS_OR(blood_DNA, F.blood_DNA) + fibers = LAZY_LISTS_OR(fibers, F.fibers) check_blood() return ..()