mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:49:19 +00:00
* Does some code standardization/consistency. * fixes merge conflict generation * Missed a few, oops * Update pierrot_throat.dm
120 lines
3.7 KiB
Plaintext
120 lines
3.7 KiB
Plaintext
//CONTAINS: Suit fibers and Detective's Scanning Computer
|
|
|
|
/atom/var/list/suit_fibers
|
|
|
|
/atom/proc/add_fibers(mob/living/carbon/human/M)
|
|
if(M.gloves && istype(M.gloves, /obj/item/clothing/))
|
|
var/obj/item/clothing/gloves/G = M.gloves
|
|
if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects
|
|
if(add_blood(G.blood_DNA)) //only reduces the bloodiness of our gloves if the item wasn't already bloody
|
|
G.transfer_blood--
|
|
else if(M.bloody_hands > 1)
|
|
if(add_blood(M.blood_DNA))
|
|
M.bloody_hands--
|
|
if(!suit_fibers)
|
|
suit_fibers = list()
|
|
var/fibertext
|
|
var/item_multiplier = isitem(src)?1.2:1
|
|
if(M.wear_suit)
|
|
fibertext = "Material from \a [M.wear_suit]."
|
|
if(prob(10*item_multiplier) && !(fibertext in suit_fibers))
|
|
suit_fibers += fibertext
|
|
if(!(M.wear_suit.body_parts_covered & CHEST))
|
|
if(M.w_uniform)
|
|
fibertext = "Fibers from \a [M.w_uniform]."
|
|
if(prob(12*item_multiplier) && !(fibertext in suit_fibers)) //Wearing a suit means less of the uniform exposed.
|
|
suit_fibers += fibertext
|
|
if(!(M.wear_suit.body_parts_covered & HANDS))
|
|
if(M.gloves)
|
|
fibertext = "Material from a pair of [M.gloves.name]."
|
|
if(prob(20*item_multiplier) && !(fibertext in suit_fibers))
|
|
suit_fibers += fibertext
|
|
else if(M.w_uniform)
|
|
fibertext = "Fibers from \a [M.w_uniform]."
|
|
if(prob(15*item_multiplier) && !(fibertext in suit_fibers))
|
|
// "Added fibertext: [fibertext]"
|
|
suit_fibers += fibertext
|
|
if(M.gloves)
|
|
fibertext = "Material from a pair of [M.gloves.name]."
|
|
if(prob(20*item_multiplier) && !(fibertext in suit_fibers))
|
|
suit_fibers += "Material from a pair of [M.gloves.name]."
|
|
else if(M.gloves)
|
|
fibertext = "Material from a pair of [M.gloves.name]."
|
|
if(prob(20*item_multiplier) && !(fibertext in suit_fibers))
|
|
suit_fibers += "Material from a pair of [M.gloves.name]."
|
|
|
|
|
|
/atom/proc/add_hiddenprint(mob/living/M)
|
|
if(!M || !M.key)
|
|
return
|
|
|
|
if(!fingerprintshidden) //Add the list if it does not exist
|
|
fingerprintshidden = list()
|
|
|
|
var/hasgloves = ""
|
|
if(ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
if(H.gloves)
|
|
hasgloves = "(gloves)"
|
|
|
|
var/current_time = time_stamp()
|
|
if(!fingerprintshidden[M.key])
|
|
fingerprintshidden[M.key] = "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]"
|
|
else
|
|
var/laststamppos = findtext(fingerprintshidden[M.key], " Last: ")
|
|
if(laststamppos)
|
|
fingerprintshidden[M.key] = copytext(fingerprintshidden[M.key], 1, laststamppos)
|
|
fingerprintshidden[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]"
|
|
|
|
fingerprintslast = M.ckey
|
|
|
|
|
|
//Set ignoregloves to add prints irrespective of the mob having gloves on.
|
|
/atom/proc/add_fingerprint(mob/living/M, ignoregloves = 0)
|
|
if(!M || !M.key)
|
|
return
|
|
|
|
add_hiddenprint(M)
|
|
|
|
if(ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
|
|
add_fibers(H)
|
|
|
|
if(H.gloves) //Check if the gloves (if any) hide fingerprints
|
|
var/obj/item/clothing/gloves/G = H.gloves
|
|
if(G.transfer_prints)
|
|
ignoregloves = 1
|
|
|
|
if(!ignoregloves)
|
|
H.gloves.add_fingerprint(H, 1) //ignoregloves = 1 to avoid infinite loop.
|
|
return
|
|
|
|
if(!fingerprints) //Add the list if it does not exist
|
|
fingerprints = list()
|
|
var/full_print = md5(H.dna.uni_identity)
|
|
fingerprints[full_print] = full_print
|
|
|
|
|
|
|
|
|
|
/atom/proc/transfer_fingerprints_to(atom/A)
|
|
|
|
// Make sure everything are lists.
|
|
if(!islist(A.fingerprints))
|
|
A.fingerprints = list()
|
|
if(!islist(A.fingerprintshidden))
|
|
A.fingerprintshidden = list()
|
|
|
|
if(!islist(fingerprints))
|
|
fingerprints = list()
|
|
if(!islist(fingerprintshidden))
|
|
fingerprintshidden = list()
|
|
|
|
// Transfer
|
|
if(fingerprints)
|
|
A.fingerprints |= fingerprints.Copy() //detective
|
|
if(fingerprintshidden)
|
|
A.fingerprintshidden |= fingerprintshidden.Copy() //admin
|
|
A.fingerprintslast = fingerprintslast
|