/obj/item/weapon/forensics/swab name = "swab kit" desc = "A sterilized cotton swab and vial used to take forensic samples." icon_state = "swab" var/gsr = 0 var/list/dna var/used /obj/item/weapon/forensics/swab/proc/is_used() return used /obj/item/weapon/forensics/swab/attack(var/mob/living/M, var/mob/user) if(!ishuman(M)) return ..() if(is_used()) return 0 var/mob/living/carbon/human/H = M var/sample_type if(H.wear_mask) user << "\The [H] is wearing a mask." return 1 if(!H.dna || !H.dna.unique_enzymes) user << "They don't seem to have DNA!" return 1 if(user != H && H.a_intent != "help" && !H.lying) user.visible_message("\The [user] tries to take a swab sample from \the [H], but they move away.") return 1 if(user.zone_sel.selecting == "mouth") if(!H.organs_by_name["head"]) user << "They don't have a head." return 1 if(!H.check_has_mouth()) user << "They don't have a mouth." return 1 user.visible_message("[user] swabs \the [H]'s mouth for a saliva sample.") dna = list(H.dna.unique_enzymes) sample_type = "DNA" else if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand") var/has_hand var/obj/item/organ/external/O = H.organs_by_name["r_hand"] if(istype(O) && !O.is_stump()) has_hand = 1 else O = H.organs_by_name["l_hand"] if(istype(O) && !O.is_stump()) has_hand = 1 if(!has_hand) user << "They don't have any hands." return 1 user.visible_message("[user] swabs [H]'s palm for a sample.") sample_type = "GSR" gsr = H.gunshot_residue else return 0 if(sample_type) used = 1 name = "[initial(name)] ([sample_type] - [H])" desc = "[initial(desc)] The label on the vial reads 'Sample of [sample_type] from [H].'." icon_state = "swab_used" return 1 return 0 /obj/item/weapon/forensics/swab/afterattack(var/atom/A, var/mob/user, var/proximity) if(!proximity || istype(A, /obj/item/weapon/forensics/slide)) return if(is_used()) user << "This swab has already been used." return add_fingerprint(user) var/list/choices = list() if(A.blood_DNA) choices |= "Blood" if(istype(A, /obj/item/clothing)) choices |= "Gunshot Residue" var/choice if(!choices.len) user << "There is no evidence on \the [A]." return else if(choices.len == 1) choice = choices[1] else choice = input("What kind of evidence are you looking for?","Evidence Collection") as null|anything in choices if(!choice) return var/sample_type if(choice == "Blood") if(!A.blood_DNA || !A.blood_DNA.len) return dna = A.blood_DNA.Copy() sample_type = "blood" else if(choice == "Gunshot Residue") var/obj/item/clothing/B = A if(!istype(B) || !B.gunshot_residue) user << "There is no residue on \the [A]." return gsr = B.gunshot_residue sample_type = "residue" if(sample_type) user.visible_message("\The [user] swabs \the [A] for a sample.", "You swab \the [A] for a sample.") name = "[initial(name)] ([sample_type] - [A])" desc = "[initial(desc)] The label on the vial reads 'Sample of [sample_type] from [A].'." icon_state = "swab_used"