diff --git a/code/modules/detectivework/tools/swabs.dm b/code/modules/detectivework/tools/swabs.dm index fa3a5574d4c..887231a2b9f 100644 --- a/code/modules/detectivework/tools/swabs.dm +++ b/code/modules/detectivework/tools/swabs.dm @@ -81,7 +81,7 @@ var/list/choices = list() if(A.forensic_data?.has_blooddna()) - choices |= "Blood" + choices |= "DNA" if(istype(A, /obj/item/clothing)) choices |= "Gunshot Residue" @@ -98,10 +98,10 @@ return var/sample_type - if(choice == "Blood") + if(choice == "DNA") if(!A.forensic_data?.has_blooddna()) return dna = A.forensic_data?.get_blooddna().Copy() - sample_type = "blood" + sample_type = "DNA" else if(choice == "Gunshot Residue") var/obj/item/clothing/B = A diff --git a/code/modules/vore/eating/belly_obj.dm b/code/modules/vore/eating/belly_obj.dm index 6011a2833f1..89d81780b4b 100644 --- a/code/modules/vore/eating/belly_obj.dm +++ b/code/modules/vore/eating/belly_obj.dm @@ -889,7 +889,7 @@ if(I) M.unEquip(I,force = TRUE) if(contaminates) - I.gurgle_contaminate(contents, contamination_flavor, contamination_color) //We do an initial contamination pass to get stuff like IDs wet. + I.gurgle_contaminate(contents, contamination_flavor, contamination_color, src) //We do an initial contamination pass to get stuff like IDs wet. if(item_digest_mode == IM_HOLD) items_preserved |= I else if(item_digest_mode == IM_DIGEST_FOOD && !(istype(I,/obj/item/reagent_containers/food) || istype(I,/obj/item/organ))) @@ -1119,10 +1119,10 @@ if(isitem(content)) var/obj/item/I = content if(istype(I,/obj/item/card/id)) - I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color) + I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color, src) if(I.gurgled && target.contaminates) I.wash(CLEAN_WASH) - I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color) + I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color, src) items_preserved -= content if(!silent) handle_visual_update() diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index e41a362f75d..ca9268c74b2 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -284,7 +284,7 @@ var/did_an_item = FALSE // We always contaminate IDs. if(contaminates || istype(I, /obj/item/card/id)) - I.gurgle_contaminate(src, contamination_flavor, contamination_color) + I.gurgle_contaminate(src, contamination_flavor, contamination_color, src) switch(item_digest_mode) if(IM_HOLD) diff --git a/code/modules/vore/eating/contaminate_vr.dm b/code/modules/vore/eating/contaminate_vr.dm index 6ffde3e904c..829b76ab449 100644 --- a/code/modules/vore/eating/contaminate_vr.dm +++ b/code/modules/vore/eating/contaminate_vr.dm @@ -16,7 +16,7 @@ GLOBAL_LIST_INIT(gurgled_overlays, list( "pink" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "pink") )) -/obj/item/proc/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green") +/obj/item/proc/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) if(!can_gurgle()) return FALSE @@ -34,6 +34,10 @@ GLOBAL_LIST_INIT(gurgled_overlays, list( cleandesc = src.desc name = "[gurgleflavor] [cleanname]" desc = "[cleandesc] It seems to be covered in ominously foul residue and needs a wash." + if(contamination_source && contamination_source.owner) //Add something to track back the owner. Until we get various 'dna sources' we'll just settle on blooddna + if(ishuman(contamination_source.owner)) + var/mob/living/carbon/human/stomach_owner = contamination_source.owner + add_blooddna(stomach_owner.dna, stomach_owner) // for(var/obj/item/O in contents) //Yeah, no. This contaminates stuff that should never be contaminated in places that should not be reached. Handle it for specific cases instead. // O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) return TRUE @@ -62,62 +66,62 @@ GLOBAL_LIST_INIT(gurgled_overlays, list( ////////////// // Special handling of gurgle_contaminate ////////////// -/obj/item/card/id/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/card/id/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) digest_act(item_storage) //Contamination and digestion does same thing to these return TRUE -/obj/item/pda/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/pda/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) return FALSE -/obj/item/reagent_containers/food/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/reagent_containers/food/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) return FALSE -/obj/item/storage/vore_egg/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/storage/vore_egg/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) return FALSE -/obj/item/holder/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/holder/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) if(isbelly(loc)) digest_act(item_storage) return TRUE return FALSE -/obj/item/organ/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/organ/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) return FALSE -/obj/item/cell/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/cell/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) if(!gurgled) //Don't make them wet, just drain var/obj/item/cell/C = src C.charge = 0 return TRUE -/obj/item/storage/box/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/storage/box/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) if((. = ..())) name = "soggy [cleanname]" desc = "This soggy box is about to fall apart any time." //Storages that contaminate contents -/obj/item/storage/backpack/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green") +/obj/item/storage/backpack/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) if(contents) for(var/obj/item/O in contents) - O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) + O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color, contamination_source) ..() -/obj/item/storage/belt/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green") +/obj/item/storage/belt/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) if(contents) for(var/obj/item/O in contents) - O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) + O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color, contamination_source) ..() -/obj/item/storage/belt/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green") +/obj/item/storage/belt/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) if(contents) for(var/obj/item/O in contents) - O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) + O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color, contamination_source) ..() -/obj/item/clothing/suit/storage/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green") +/obj/item/clothing/suit/storage/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) if(pockets) if(pockets.contents) for(var/obj/item/O in pockets.contents) - O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) + O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color, contamination_source) ..() diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index e109800a9ed..fe81d33d1ec 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -73,7 +73,7 @@ wash(CLEAN_ALL) if(istype(B)) gurgled_color = B.contamination_color //Apply the correct color setting so uncontaminable things can still have the right overlay. - gurgle_contaminate(B, B.contamination_flavor, B.contamination_color) + gurgle_contaminate(B, B.contamination_flavor, B.contamination_color, B) if(digest_stage <= 0) if(istype(src, /obj/item/pda)) var/obj/item/pda/P = src diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 9306838aeb8..20b870042bb 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -674,7 +674,7 @@ /obj/item/clothing/head/fluff/pompom/digest_act(atom/movable/item_storage = null) return FALSE -/obj/item/clothing/head/fluff/pompom/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/clothing/head/fluff/pompom/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) return FALSE /obj/item/clothing/head/fluff/pompom/attack_self(mob/user) @@ -1592,7 +1592,7 @@ Departamental Swimsuits, for general use /obj/item/clothing/accessory/bracer/fluff/xander_sthasha/digest_act(atom/movable/item_storage = null) return FALSE -/obj/item/clothing/accessory/bracer/fluff/xander_sthasha/gurgle_contaminate(atom/movable/item_storage = null) +/obj/item/clothing/accessory/bracer/fluff/xander_sthasha/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green", obj/belly/contamination_source = null) return FALSE //Heroman3003:Lauren Zackson diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 62eeac68c57..422bd54188d 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ