diff --git a/code/defines/atom.dm b/code/defines/atom.dm index 5db2913830a..fde7511d3bb 100644 --- a/code/defines/atom.dm +++ b/code/defines/atom.dm @@ -5,7 +5,7 @@ var/list/fingerprints = list() var/list/fingerprintshidden = new/list() var/fingerprintslast = null - var/list/blood_DNA = null + var/list/blood_DNA = list() var/last_bumped = 0 var/pass_flags = 0 diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index b40b1ab18b4..52b1520b2c2 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -149,8 +149,15 @@ I.Blend(new /icon(src.icon, src.icon_state),ICON_UNDERLAY) src.icon = I if(src.blood_DNA.len) - src.blood_DNA.len++ - src.blood_DNA[src.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) + var/inthere = 0 + for(var/i = 1, i <= src.blood_DNA.len, i++) + var/list/templist = src.blood_DNA[i] + if(templist[1] == M.dna.unique_enzymes && templist[2] == M.dna.b_type) + inthere = 1 + break + if(!inthere) + src.blood_DNA.len++ + src.blood_DNA[src.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) else var/list/blood_DNA_temp[1] blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.dna.b_type) @@ -173,8 +180,15 @@ newDisease.holder = this else if (istype(src, /mob/living/carbon/human)) if(src.blood_DNA.len) - src.blood_DNA.len++ - src.blood_DNA[src.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) + var/inthere = 0 + for(var/i = 1, i <= src.blood_DNA.len, i++) + var/list/templist = src.blood_DNA[i] + if(templist[1] == M.dna.unique_enzymes && templist[2] == M.dna.b_type) + inthere = 1 + break + if(!inthere) + src.blood_DNA.len++ + src.blood_DNA[src.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type) else var/list/blood_DNA_temp[1] blood_DNA_temp[1] = list(M.dna.unique_enzymes, M.dna.b_type) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index e0273fb85fd..8e115145391 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -96,7 +96,7 @@ pass_flags = PASSTABLE | PASSGRILLE /obj/effect/meteor/Move() - var/turf/T = src.loc +// var/turf/T = src.loc //FUCK YOU. FUCK YOU ALL, METEORS. ~Hawk. /*if (istype(T, /turf)) T.hotspot_expose(METEOR_TEMPERATURE, 1000) */ diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 9e0b575c3f5..7e725290846 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -805,8 +805,7 @@ H.apply_damage(0.5*damage, BRUTE, "r_arm") var/obj/effect/decal/cleanable/blood/B = new(src.loc) - B.blood_DNA.len++ - B.blood_DNA[B.blood_DNA.len] = list(H.dna.unique_enzymes, H.dna.b_type) + B.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) bloodiness += 4 diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index 919c535d74d..671cec059e5 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -555,11 +555,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", R.word2 = w2 R.word3 = w3 R.check_icon() - if(R.blood_DNA.len) - R.blood_DNA.len++ - R.blood_DNA[R.blood_DNA.len] = list(H.dna.unique_enzymes, H.dna.b_type) - else - R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) + R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type)) return else user << "The book seems full of illegible scribbles. Is this a joke?" diff --git a/code/game/objects/gibs.dm b/code/game/objects/gibs.dm index f60aaa89e2c..f8815de6ff8 100644 --- a/code/game/objects/gibs.dm +++ b/code/game/objects/gibs.dm @@ -51,8 +51,7 @@ viruus.holder = gib viruus.spread_type = CONTACT_FEET if(MobDNA) - gib.blood_DNA.len++ - gib.blood_DNA[gib.blood_DNA.len] = list(MobDNA.unique_enzymes, MobDNA.b_type) + gib.blood_DNA = list(list(MobDNA.unique_enzymes, MobDNA.b_type)) if(MobDNA.original_name != "Unknown") gib.OriginalMob = MobDNA.original_name var/list/directions = gibdirections[i] diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index fb7b81f6dde..aec2e126350 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -155,8 +155,7 @@ datum var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T //find some blood here if(!blood_prop) //first blood! blood_prop = new(T) - blood_prop.blood_DNA.len++ - blood_prop.blood_DNA[blood_prop.blood_DNA.len] = list(self.data["blood_DNA"], self.data["blood_type"]) + blood_prop.blood_DNA = list(list(self.data["blood_DNA"], self.data["blood_type"])) for(var/datum/disease/D in self.data["viruses"]) var/datum/disease/newVirus = new D.type diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index dcd3740215a..ea52c8b1cae 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -16,8 +16,8 @@ t_him = "her" if (src.w_uniform) - if (src.w_uniform.blood_DNA) - usr << "\red [src.name] is wearing a[src.w_uniform.blood_DNA ? " bloody " : " "] \icon[src.w_uniform] [src.w_uniform.name]!" + if (src.w_uniform.blood_DNA.len) + usr << "\red [src.name] is wearing a[src.w_uniform.blood_DNA.len ? " bloody " : " "] \icon[src.w_uniform] [src.w_uniform.name]!" else usr << "\blue [src.name] is wearing a \icon[src.w_uniform] [src.w_uniform.name]." @@ -25,8 +25,8 @@ usr << "\blue [src.name] is \icon[src.handcuffed] handcuffed!" if (src.wear_suit) - if (src.wear_suit.blood_DNA) - usr << "\red [src.name] has a[src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name] on!" + if (src.wear_suit.blood_DNA.len) + usr << "\red [src.name] has a[src.wear_suit.blood_DNA.len ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name] on!" else usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on." @@ -37,44 +37,44 @@ usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear." if (src.wear_mask) - if (src.wear_mask.blood_DNA) - usr << "\red [src.name] has a[src.wear_mask.blood_DNA ? " bloody " : " "] \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face!" + if (src.wear_mask.blood_DNA.len) + usr << "\red [src.name] has a[src.wear_mask.blood_DNA.len ? " bloody " : " "] \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face!" else usr << "\blue [src.name] has a \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face." if (src.l_hand) - if (src.l_hand.blood_DNA) - usr << "\red [src.name] has a[src.l_hand.blood_DNA ? " bloody " : " "] \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand!" + if (src.l_hand.blood_DNA.len) + usr << "\red [src.name] has a[src.l_hand.blood_DNA.len ? " bloody " : " "] \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand!" else usr << "\blue [src.name] has a \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand." if (src.r_hand) - if (src.r_hand.blood_DNA) - usr << "\red [src.name] has a[src.r_hand.blood_DNA ? " bloody " : " "] \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand!" + if (src.r_hand.blood_DNA.len) + usr << "\red [src.name] has a[src.r_hand.blood_DNA.len ? " bloody " : " "] \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand!" else usr << "\blue [src.name] has a \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand." if (src.belt) - if (src.belt.blood_DNA) - usr << "\red [src.name] has a[src.belt.blood_DNA ? " bloody " : " "] \icon[src.belt] [src.belt.name] on [t_his] belt!" + if (src.belt.blood_DNA.len) + usr << "\red [src.name] has a[src.belt.blood_DNA.len ? " bloody " : " "] \icon[src.belt] [src.belt.name] on [t_his] belt!" else usr << "\blue [src.name] has a \icon[src.belt] [src.belt.name] on [t_his] belt." if(src.s_store) - if(src.s_store.blood_DNA) - usr << "\red [src.name] has a[src.s_store.blood_DNA ? " bloody " : " "] \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]!" + if(src.s_store.blood_DNA.len) + usr << "\red [src.name] has a[src.s_store.blood_DNA.len ? " bloody " : " "] \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA.len ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]!" else - usr << "\blue [src.name] has a \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]." + usr << "\blue [src.name] has a \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA.len ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]." if (src.shoes) - usr << "[src.shoes.blood_DNA ? "\red" : "\blue"] [src.name] has a[src.shoes.blood_DNA ? " bloody " : " "] \icon[src.shoes] [src.shoes.name] on [t_his] feet." + usr << "[src.shoes.blood_DNA.len ? "\red" : "\blue"] [src.name] has a[src.shoes.blood_DNA.len ? " bloody " : " "] \icon[src.shoes] [src.shoes.name] on [t_his] feet." if (src.gloves) - if (src.gloves.blood_DNA) + if (src.gloves.blood_DNA.len) usr << "\red [src.name] has bloody \icon[src.gloves] [src.gloves.name] on [t_his] hands!" else usr << "\blue [src.name] has \icon[src.gloves] [src.gloves.name] on [t_his] hands." - else if (src.blood_DNA) - usr << "\red [src.name] has[src.blood_DNA ? " bloody " : " "] hands!" + else if (src.blood_DNA.len) + usr << "\red [src.name] has[src.blood_DNA.len ? " bloody " : " "] hands!" if (src.back) usr << "\blue [src.name] has a \icon[src.back] [src.back.name] on [t_his] back." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 86cd2b9d4f0..003e72341d4 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -875,7 +875,7 @@ overlays += image("icon" = 'uniform_fat.dmi', "icon_state" = "[t1][!lying ? "_s" : "_l"]", "layer" = MOB_LAYER) else*/ overlays += image("icon" = 'uniform.dmi', "icon_state" = text("[][]",t1, (!(lying) ? "_s" : "_l")), "layer" = MOB_LAYER) - if (w_uniform.blood_DNA) + if (w_uniform.blood_DNA.len) var/icon/stain_icon = icon('blood.dmi', "uniformblood[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) @@ -905,14 +905,14 @@ else if(ro.destroyed) gloves_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) overlays += image(gloves_icon, "layer" = MOB_LAYER) - if (gloves.blood_DNA) + if (gloves.blood_DNA.len) var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]") if(lo.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) else if(ro.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) - else if (blood_DNA) + else if (blood_DNA.len) var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]") if(lo.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) @@ -941,7 +941,7 @@ else if(ro.destroyed && !lying) shoes_icon.Blend(new /icon('limb_mask.dmi', "left[lying?"_l":""]"), ICON_MULTIPLY) overlays += image(shoes_icon, "layer" = MOB_LAYER) - if (shoes.blood_DNA) + if (shoes.blood_DNA.len) var/icon/stain_icon = icon('blood.dmi', "shoesblood[!lying ? "" : "2"]") if(lo.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) @@ -1000,7 +1000,7 @@ var/t1 = wear_suit.icon_state overlays += image("icon" = 'suit.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) if (wear_suit) - if (wear_suit.blood_DNA) + if (wear_suit.blood_DNA.len) var/icon/stain_icon = null if (istype(wear_suit, /obj/item/clothing/suit/armor/vest || /obj/item/clothing/suit/storage/wcoat)) stain_icon = icon('blood.dmi', "armorblood[!lying ? "" : "2"]") @@ -1036,7 +1036,7 @@ var/t1 = wear_mask.icon_state overlays += image("icon" = 'mask.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) if (!istype(wear_mask, /obj/item/clothing/mask/cigarette)) - if (wear_mask.blood_DNA) + if (wear_mask.blood_DNA.len) var/icon/stain_icon = icon('blood.dmi', "maskblood[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) wear_mask.screen_loc = ui_mask @@ -1050,7 +1050,7 @@ overlays += image("icon" = head_icon, "layer" = MOB_LAYER) if(gimmick_hat) overlays += image("icon" = icon('gimmick_head.dmi', "[gimmick_hat][!lying ? "" : "2"]"), "layer" = MOB_LAYER) - if (head.blood_DNA) + if (head.blood_DNA.len) var/icon/stain_icon = icon('blood.dmi', "helmetblood[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) head.screen_loc = ui_head diff --git a/code/modules/mob/organ/organ_external.dm b/code/modules/mob/organ/organ_external.dm index 29f89d6e251..75423e961cc 100644 --- a/code/modules/mob/organ/organ_external.dm +++ b/code/modules/mob/organ/organ_external.dm @@ -92,7 +92,7 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H) if(!istype(H)) return if(H.dna) - if(blood_DNA) + if(blood_DNA.len) blood_DNA.len++ blood_DNA[blood_DNA.len] = list(H.dna.unique_enzymes, H.dna.b_type) else diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 0de55b026ed..aaa19ce3694 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -439,7 +439,7 @@ del(H) CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if (istype(mover,/obj/item)) + if (istype(mover,/obj/item) && !istype(mover,/obj/item/weapon/dummy)) var/obj/item/I = mover if(prob(75)) I.loc = src