mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-09 00:13:55 +00:00
Planting a bug down in a room will transfer the fibers and prints from the held bug to the placed bug Adds some warnings for newer players that they may be leaving fingerprints, and lets them know how to deal with it Puts in a missing doc comment Docced + better var names for old helpers
115 lines
4.0 KiB
Plaintext
115 lines
4.0 KiB
Plaintext
//CONTAINS: Suit fibers and Detective's Scanning Computer
|
|
|
|
/atom/proc/return_fingerprints()
|
|
var/datum/component/forensics/D = GetComponent(/datum/component/forensics)
|
|
if(D)
|
|
. = D.fingerprints
|
|
|
|
/atom/proc/return_hiddenprints()
|
|
var/datum/component/forensics/D = GetComponent(/datum/component/forensics)
|
|
if(D)
|
|
. = D.hiddenprints
|
|
|
|
/atom/proc/return_blood_DNA()
|
|
var/datum/component/forensics/D = GetComponent(/datum/component/forensics)
|
|
if(D)
|
|
. = D.blood_DNA
|
|
|
|
/atom/proc/blood_DNA_length()
|
|
var/datum/component/forensics/D = GetComponent(/datum/component/forensics)
|
|
if(D)
|
|
. = length(D.blood_DNA)
|
|
|
|
/atom/proc/return_fibers()
|
|
var/datum/component/forensics/D = GetComponent(/datum/component/forensics)
|
|
if(D)
|
|
. = D.fibers
|
|
|
|
/atom/proc/add_fingerprint_list(list/fingerprints) //ASSOC LIST FINGERPRINT = FINGERPRINT
|
|
if(length(fingerprints))
|
|
. = AddComponent(/datum/component/forensics, fingerprints)
|
|
|
|
//Set ignoregloves to add prints irrespective of the mob having gloves on.
|
|
/atom/proc/add_fingerprint(mob/M, ignoregloves = FALSE)
|
|
if (QDELING(src))
|
|
return
|
|
var/datum/component/forensics/D = AddComponent(/datum/component/forensics)
|
|
. = D?.add_fingerprint(M, ignoregloves)
|
|
|
|
/atom/proc/add_fiber_list(list/fibertext) //ASSOC LIST FIBERTEXT = FIBERTEXT
|
|
if(length(fibertext))
|
|
. = AddComponent(/datum/component/forensics, null, null, null, fibertext)
|
|
|
|
/atom/proc/add_fibers(mob/living/carbon/human/M)
|
|
var/old = 0
|
|
if(M.gloves && istype(M.gloves, /obj/item/clothing))
|
|
var/obj/item/clothing/gloves/G = M.gloves
|
|
old = length(G.return_blood_DNA())
|
|
if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects
|
|
if(add_blood_DNA(G.return_blood_DNA()) && length(G.return_blood_DNA()) > old) //only reduces the bloodiness of our gloves if the item wasn't already bloody
|
|
G.transfer_blood--
|
|
else if(M.blood_in_hands > 1)
|
|
old = length(M.return_blood_DNA())
|
|
if(add_blood_DNA(M.return_blood_DNA()) && length(M.return_blood_DNA()) > old)
|
|
M.blood_in_hands--
|
|
var/datum/component/forensics/D = AddComponent(/datum/component/forensics)
|
|
. = D.add_fibers(M)
|
|
|
|
/atom/proc/add_hiddenprint_list(list/hiddenprints) //NOTE: THIS IS FOR ADMINISTRATION FINGERPRINTS, YOU MUST CUSTOM SET THIS TO INCLUDE CKEY/REAL NAMES! CHECK FORENSICS.DM
|
|
if(length(hiddenprints))
|
|
. = AddComponent(/datum/component/forensics, null, hiddenprints)
|
|
|
|
/atom/proc/add_hiddenprint(mob/M)
|
|
var/datum/component/forensics/D = AddComponent(/datum/component/forensics)
|
|
. = D.add_hiddenprint(M)
|
|
|
|
/atom/proc/add_blood_DNA(list/dna) //ASSOC LIST DNA = BLOODTYPE
|
|
return FALSE
|
|
|
|
/obj/add_blood_DNA(list/dna)
|
|
. = ..()
|
|
if(length(dna))
|
|
. = AddComponent(/datum/component/forensics, null, null, dna)
|
|
|
|
/obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
|
|
. = ..()
|
|
transfer_blood = rand(2, 4)
|
|
|
|
/turf/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
|
|
var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src
|
|
if(!B)
|
|
B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases)
|
|
if(!QDELETED(B))
|
|
B.add_blood_DNA(blood_dna) //give blood info to the blood decal.
|
|
return TRUE //we bloodied the floor
|
|
|
|
/mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
|
|
if(wear_suit)
|
|
wear_suit.add_blood_DNA(blood_dna)
|
|
update_inv_wear_suit()
|
|
else if(w_uniform)
|
|
w_uniform.add_blood_DNA(blood_dna)
|
|
update_inv_w_uniform()
|
|
if(gloves)
|
|
var/obj/item/clothing/gloves/G = gloves
|
|
G.add_blood_DNA(blood_dna)
|
|
else if(length(blood_dna))
|
|
AddComponent(/datum/component/forensics, null, null, blood_dna)
|
|
blood_in_hands = rand(2, 4)
|
|
update_inv_gloves() //handles bloody hands overlays and updating
|
|
return TRUE
|
|
|
|
/*
|
|
* Transfer all the fingerprints and hidden prints from [src] to [transfer_to].
|
|
*/
|
|
/atom/proc/transfer_fingerprints_to(atom/transfer_to)
|
|
transfer_to.add_fingerprint_list(return_fingerprints())
|
|
transfer_to.add_hiddenprint_list(return_hiddenprints())
|
|
transfer_to.fingerprintslast = fingerprintslast
|
|
|
|
/*
|
|
* Transfer all the fibers from [src] to [transfer_to].
|
|
*/
|
|
/atom/proc/transfer_fibers_to(atom/transfer_to)
|
|
transfer_to.add_fiber_list(return_fibers())
|