mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 20:47:10 +01:00
Fucking hell. Makes the detective backend shit non-retarded. <3 Hashtables.
This commit is contained in:
+48
-74
@@ -2,17 +2,6 @@
|
||||
return
|
||||
|
||||
/atom/proc/attack_hand(mob/user as mob)
|
||||
if(ishuman(user) || ismonkey(user))
|
||||
if (user.hand)
|
||||
var/datum/organ/external/temp = user:organs["l_hand"]
|
||||
if(temp.destroyed)
|
||||
user << "\red Yo- wait a minute."
|
||||
return
|
||||
else
|
||||
var/datum/organ/external/temp = user:organs["r_hand"]
|
||||
if(temp.destroyed)
|
||||
user << "\red Yo- wait a minute."
|
||||
return
|
||||
return
|
||||
|
||||
/atom/proc/attack_paw(mob/user as mob)
|
||||
@@ -115,68 +104,68 @@
|
||||
if(isnull(M.key)) return
|
||||
if (!( flags ) & 256)
|
||||
return
|
||||
//Smudge up dem prints some
|
||||
for(var/P in fingerprints)
|
||||
var/test_print = stars(fingerprints[P], rand(85,95))
|
||||
if(stringpercent(test_print) == 32) //She's full of stars! (No actual print left)
|
||||
fingerprints.Remove(P)
|
||||
else
|
||||
fingerprints[P] = test_print
|
||||
if (ishuman(M))
|
||||
//Add the list if it does not exist.
|
||||
if(!fingerprintshidden)
|
||||
fingerprintshidden = list()
|
||||
//Fibers~
|
||||
add_fibers(M)
|
||||
//He has no prints!
|
||||
if (M.mutations2 & mFingerprints)
|
||||
if(fingerprintslast != M.key)
|
||||
fingerprintshidden += "(Has no fingerprints) Real name: [M.real_name], Key: [M.key]"
|
||||
fingerprintslast = M.key
|
||||
return 0
|
||||
//Now, lets get to the dirty work.
|
||||
//First, make sure their DNA makes sense.
|
||||
var/mob/living/carbon/human/H = M
|
||||
if (!istype(H.dna, /datum/dna) || !H.dna.uni_identity || (length(H.dna.uni_identity) != 32))
|
||||
if(!istype(H.dna, /datum/dna))
|
||||
H.dna = new /datum/dna(null)
|
||||
H.check_dna()
|
||||
//Now, deal with gloves.
|
||||
if (H.gloves && H.gloves != src)
|
||||
if(fingerprintslast != H.key)
|
||||
fingerprintshidden += text("(Wearing gloves). Real name: [], Key: []",H.real_name, H.key)
|
||||
fingerprintslast = H.key
|
||||
H.gloves.add_fingerprint(M)
|
||||
//Deal with gloves the pass finger/palm prints.
|
||||
if(H.gloves != src)
|
||||
if(prob(75) && istype(H.gloves, /obj/item/clothing/gloves/latex))
|
||||
return 0
|
||||
else if(H.gloves && !istype(H.gloves, /obj/item/clothing/gloves/latex) && !istype(H.gloves, /obj/item/clothing/gloves/fingerless))
|
||||
return 0
|
||||
//More adminstuffz
|
||||
if(fingerprintslast != H.key)
|
||||
fingerprintshidden += text("Real name: [], Key: []",H.real_name, H.key)
|
||||
fingerprintslast = H.key
|
||||
//Make the list if it does not exist.
|
||||
if(!fingerprints)
|
||||
fingerprints = list()
|
||||
var/new_prints = 0
|
||||
var/prints
|
||||
for(var/i = 1, i <= fingerprints.len, i++)
|
||||
var/list/L = params2list(fingerprints[i])
|
||||
if(L[num2text(1)] == md5(H.dna.uni_identity))
|
||||
new_prints = i
|
||||
prints = L[num2text(2)]
|
||||
break
|
||||
else
|
||||
var/test_print = stars(L[num2text(2)], rand(80,90))
|
||||
if(stringpercent(test_print) == 32)
|
||||
if(fingerprints.len == 1)
|
||||
fingerprints = list()
|
||||
else
|
||||
fingerprints.Cut(i,i+1)
|
||||
else
|
||||
fingerprints[i] = "1=[L[num2text(1)]]&2=[test_print]"
|
||||
if(new_prints)
|
||||
fingerprints[new_prints] = text("1=[]&2=[]", md5(H.dna.uni_identity), stringmerge(prints,stars(md5(H.dna.uni_identity), (H.gloves ? rand(10,20) : rand(25,40)))))
|
||||
//Hash this shit.
|
||||
var/full_print = md5(H.dna.uni_identity)
|
||||
var/print = fingerprints[full_print] //Find if the print is already there.
|
||||
//It is not! We need to add it!
|
||||
if(!print)
|
||||
fingerprints[full_print] = stars(full_print, H.gloves ? rand(10,20) : rand(25,40))
|
||||
//It's there, lets merge this shit!
|
||||
else
|
||||
if(!fingerprints || !fingerprints.len)
|
||||
fingerprints = list(text("1=[]&2=[]", md5(H.dna.uni_identity), stars(md5(H.dna.uni_identity), H.gloves ? rand(10,20) : rand(25,40))))
|
||||
else
|
||||
fingerprints += text("1=[]&2=[]", md5(H.dna.uni_identity), stars(md5(H.dna.uni_identity), H.gloves ? rand(10,20) : rand(25,40)))
|
||||
for(var/i = 1, i <= fingerprints.len, i++)
|
||||
if(length(fingerprints[i]) != 69)
|
||||
fingerprints.Remove(fingerprints[i])
|
||||
if(fingerprints && !fingerprints.len) del(fingerprints)
|
||||
fingerprints[full_print] = stringmerge(print, stars(full_print, (H.gloves ? rand(10,20) : rand(25,40))))
|
||||
return 1
|
||||
else
|
||||
if(fingerprintslast != M.key)
|
||||
fingerprintshidden += text("Real name: [], Key: []",M.real_name, M.key)
|
||||
fingerprintslast = M.key
|
||||
//Cleaning up shit.
|
||||
if(fingerprints && !fingerprints.len)
|
||||
del(fingerprints)
|
||||
return
|
||||
|
||||
//returns 1 if made bloody, returns 0 otherwise
|
||||
@@ -211,11 +200,9 @@
|
||||
O.overlays += O.blood_overlay
|
||||
|
||||
//if this blood isn't already in the list, add it
|
||||
for(var/i = 1, i <= O.blood_DNA.len, i++)
|
||||
if((O.blood_DNA[i][1] == M.dna.unique_enzymes) && (O.blood_DNA[i][2] == M.dna.b_type))
|
||||
return 0 //already bloodied with this blood. Cannot add more.
|
||||
O.blood_DNA.len++
|
||||
O.blood_DNA[O.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type)
|
||||
if(blood_DNA[M.dna.unique_enzymes])
|
||||
return 0 //already bloodied with this blood. Cannot add more.
|
||||
blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
|
||||
return 1 //we applied blood to the item
|
||||
|
||||
//adding blood to turfs
|
||||
@@ -224,8 +211,8 @@
|
||||
|
||||
//get one blood decal and infect it with virus from M.viruses
|
||||
for(var/obj/effect/decal/cleanable/blood/B in T.contents)
|
||||
B.blood_DNA.len++
|
||||
B.blood_DNA[B.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type)
|
||||
if(!B.blood_DNA[M.dna.unique_enzymes])
|
||||
B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
|
||||
B.virus2 += M.virus2
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
var/datum/disease/newDisease = new D.type
|
||||
@@ -235,7 +222,7 @@
|
||||
|
||||
//if there isn't a blood decal already, make one.
|
||||
var/obj/effect/decal/cleanable/blood/newblood = new /obj/effect/decal/cleanable/blood(T)
|
||||
newblood.blood_DNA = list(list(M.dna.unique_enzymes, M.dna.b_type))
|
||||
newblood.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
|
||||
newblood.blood_owner = M
|
||||
newblood.virus2 = M.virus2
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
@@ -248,11 +235,9 @@
|
||||
else if (istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
//if this blood isn't already in the list, add it
|
||||
for(var/i = 1, i <= H.blood_DNA.len, i++)
|
||||
if((H.blood_DNA[i][1] == M.dna.unique_enzymes) && (H.blood_DNA[i][2] == M.dna.b_type))
|
||||
return 0 //already bloodied with this blood. Cannot add more.
|
||||
H.blood_DNA.len++
|
||||
H.blood_DNA[H.blood_DNA.len] = list(M.dna.unique_enzymes,M.dna.b_type)
|
||||
if(blood_DNA[H.dna.unique_enzymes])
|
||||
return 0 //already bloodied with this blood. Cannot add more.
|
||||
blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
return 1 //we applied blood to the item
|
||||
return
|
||||
|
||||
@@ -275,7 +260,7 @@
|
||||
if( istype(src, /turf/simulated) )
|
||||
var/turf/simulated/source1 = src
|
||||
var/obj/effect/decal/cleanable/blood/this = new /obj/effect/decal/cleanable/blood(source1)
|
||||
this.blood_DNA = list(M.dna.unique_enzymes, M.dna.b_type)
|
||||
this.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
|
||||
this.OriginalMob = M.dna.original_name
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
var/datum/disease/newDisease = new D.type
|
||||
@@ -286,7 +271,7 @@
|
||||
if( istype(src, /turf/simulated) )
|
||||
var/turf/simulated/source2 = src
|
||||
var/obj/effect/decal/cleanable/xenoblood/this = new /obj/effect/decal/cleanable/xenoblood(source2)
|
||||
this.blood_DNA = list(list("UNKNOWN BLOOD","X*"))
|
||||
this.blood_DNA["UNKNOWN BLOOD"] = "X*"
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
var/datum/disease/newDisease = new D.type
|
||||
this.viruses += newDisease
|
||||
@@ -305,9 +290,9 @@
|
||||
|
||||
/atom/proc/clean_blood()
|
||||
|
||||
if (!( src.flags ) & 256)
|
||||
if (!flags & 256)
|
||||
return
|
||||
if ( src.blood_DNA )
|
||||
if (blood_DNA )
|
||||
|
||||
//Cleaning blood off of mobs
|
||||
if (istype (src, /mob/living/carbon))
|
||||
@@ -340,25 +325,14 @@
|
||||
|
||||
if(blood_DNA && istype(blood_DNA, /list) && !blood_DNA.len)
|
||||
del(blood_DNA)
|
||||
if(src.fingerprints && src.fingerprints.len)
|
||||
var/done = 0
|
||||
while(!done)
|
||||
done = 1
|
||||
for(var/i = 1, i < (src.fingerprints.len + 1), i++)
|
||||
var/list/prints = params2list(src.fingerprints[i])
|
||||
var/test_print = prints["2"]
|
||||
var/new_print = stars(test_print, rand(1,20))
|
||||
if(stringpercent(new_print) == 32)
|
||||
if(src.fingerprints.len == 1)
|
||||
src.fingerprints = list()
|
||||
else
|
||||
for(var/j = (i + 1), j < (src.fingerprints.len), j++)
|
||||
src.fingerprints[j-1] = src.fingerprints[j]
|
||||
src.fingerprints.len--
|
||||
done = 0
|
||||
break
|
||||
else
|
||||
src.fingerprints[i] = "1=" + prints["1"] + "&2=" + new_print
|
||||
if(fingerprints && fingerprints.len)
|
||||
//Smudge up dem prints some
|
||||
for(var/P in fingerprints)
|
||||
var/test_print = stars(fingerprints[P], rand(10,20))
|
||||
if(stringpercent(test_print) == 32) //She's full of stars! (No actual print left)
|
||||
fingerprints.Remove(P)
|
||||
else
|
||||
fingerprints[P] = test_print
|
||||
if(fingerprints && !fingerprints.len)
|
||||
del(fingerprints)
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
|
||||
@@ -801,7 +801,7 @@
|
||||
H.apply_damage(0.5*damage, BRUTE, "r_arm")
|
||||
|
||||
var/obj/effect/decal/cleanable/blood/B = new(src.loc)
|
||||
B.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type))
|
||||
B.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
|
||||
bloodiness += 4
|
||||
|
||||
|
||||
@@ -562,7 +562,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
R.word2 = w2
|
||||
R.word3 = w3
|
||||
R.check_icon()
|
||||
R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type))
|
||||
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
return
|
||||
else
|
||||
user << "The book seems full of illegible scribbles. Is this a joke?"
|
||||
@@ -607,7 +607,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
var/obj/effect/rune/R = new /obj/effect/rune
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
R.blood_DNA = list(list(H.dna.unique_enzymes, H.dna.b_type))
|
||||
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
switch(r)
|
||||
if("teleport")
|
||||
var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri")
|
||||
|
||||
@@ -814,9 +814,8 @@
|
||||
else
|
||||
user << "\blue Blood found on [C]. Analysing..."
|
||||
spawn(15)
|
||||
for(var/i = 1, i < C:blood_DNA.len, i++)
|
||||
var/list/templist = C:blood_DNA[i]
|
||||
user << "\blue Blood type: [templist[2]]\nDNA: [templist[1]]"
|
||||
for(var/blood in C:blood_DNA)
|
||||
user << "\blue Blood type: [C:blood_DNA[blood]]\nDNA: [blood]"
|
||||
|
||||
if(4)
|
||||
for (var/mob/O in viewers(C, null))
|
||||
@@ -838,16 +837,15 @@
|
||||
var/list/prints = A:fingerprints
|
||||
var/list/complete_prints = list()
|
||||
for(var/i in prints)
|
||||
var/list/templist = params2list(i)
|
||||
var/temp = stringpercent(templist["2"])
|
||||
if(temp <= 6)
|
||||
complete_prints += templist["2"]
|
||||
var/print = prints[i]
|
||||
if(stringpercent(print) <= FINGERPRINT_COMPLETE)
|
||||
complete_prints += print
|
||||
if(complete_prints.len < 1)
|
||||
user << "\blue No intact prints found"
|
||||
else
|
||||
user << "\blue Found [complete_prints.len] intact prints"
|
||||
for(var/i in complete_prints)
|
||||
user << "\blue " + i
|
||||
user << "\blue [i]"
|
||||
|
||||
if(3)
|
||||
if(!isnull(A.reagents))
|
||||
|
||||
@@ -85,7 +85,7 @@ MASS SPECTROMETER
|
||||
src.amount += W.amount
|
||||
//W = null
|
||||
del(W)
|
||||
src.add_fingerprint(user)
|
||||
add_fingerprint(user)
|
||||
if (W)
|
||||
W.add_fingerprint(user)
|
||||
return
|
||||
@@ -110,9 +110,6 @@ MASS SPECTROMETER
|
||||
else
|
||||
if (src.amount < 1)
|
||||
user << text("\blue Fingerprints scanned on [M]. Need more cards to print.")
|
||||
// src.printing = 0
|
||||
// src.icon_state = text("forensic[]", src.printing)
|
||||
// if (src.printing)
|
||||
else
|
||||
src.amount--
|
||||
var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc )
|
||||
@@ -122,7 +119,7 @@ MASS SPECTROMETER
|
||||
F.name = text("FPrintC- '[M.name]'")
|
||||
|
||||
user << "\blue Done printing."
|
||||
user << text("\blue [M]'s Fingerprints: [md5(M.dna.uni_identity)]")
|
||||
user << "\blue [M]'s Fingerprints: [md5(M.dna.uni_identity)]"
|
||||
if ( !M.blood_DNA || !M.blood_DNA.len )
|
||||
user << "\blue No blood found on [M]"
|
||||
if(M.blood_DNA)
|
||||
@@ -130,16 +127,15 @@ MASS SPECTROMETER
|
||||
else
|
||||
user << "\blue Blood found on [M]. Analysing..."
|
||||
spawn(15)
|
||||
for(var/i = 1, i <= M.blood_DNA.len, i++)
|
||||
var/list/templist = M.blood_DNA[i]
|
||||
user << "\blue Blood type: [templist[2]]\nDNA: [templist[1]]"
|
||||
for(var/blood in M.blood_DNA)
|
||||
user << "\blue Blood type: [M.blood_DNA[blood]]\nDNA: [blood]"
|
||||
return
|
||||
|
||||
afterattack(atom/A as obj|turf|area, mob/user as mob)
|
||||
if(!(locate(A) in oview(1,user)))
|
||||
return
|
||||
if(src.loc != user)
|
||||
return 0
|
||||
return
|
||||
if(istype(A,/obj/machinery/computer/forensic_scanning)) //breaks shit.
|
||||
return
|
||||
if(istype(A,/obj/item/weapon/f_card))
|
||||
@@ -147,17 +143,21 @@ MASS SPECTROMETER
|
||||
return
|
||||
if(!A.fingerprints)
|
||||
A.fingerprints = list()
|
||||
src.add_fingerprint(user)
|
||||
add_fingerprint(user)
|
||||
|
||||
//Special case for blood splaters.
|
||||
if (istype(A, /obj/effect/decal/cleanable/blood) || istype(A, /obj/effect/rune))
|
||||
if(!isnull(A.blood_DNA))
|
||||
for(var/i = 1, i <= A.blood_DNA.len, i++)
|
||||
var/list/templist = A.blood_DNA[i]
|
||||
user << "\blue Blood type: [templist[2]]\nDNA: [templist[1]]"
|
||||
for(var/blood in A.blood_DNA)
|
||||
user << "\blue Blood type: [A.blood_DNA[blood]]\nDNA: [blood]"
|
||||
return
|
||||
var/duplicate = 0
|
||||
//General
|
||||
if ((!A.fingerprints || !A.fingerprints.len) && !A.suit_fibers && !A.blood_DNA)
|
||||
user << "\blue Unable to locate any fingerprints, materials, fibers, or blood on [A]!"
|
||||
return 0
|
||||
|
||||
//BLOOD
|
||||
else if (A.blood_DNA)
|
||||
user << "\blue Blood found on [A]. Analysing..."
|
||||
sleep(15)
|
||||
@@ -166,11 +166,12 @@ MASS SPECTROMETER
|
||||
var/i = add_data(A)
|
||||
if(i)
|
||||
user << "\blue Blood already in memory."
|
||||
for(var/i = 1, i < (A.blood_DNA.len + 1), i++)
|
||||
var/list/templist = A.blood_DNA[i]
|
||||
user << "\blue Blood type: [templist[2]]\nDNA: [templist[1]]"
|
||||
for(var/blood in A.blood_DNA)
|
||||
user << "\blue Blood type: [A.blood_DNA[blood]]\nDNA: [blood]"
|
||||
else
|
||||
user << "\blue No Blood Located"
|
||||
|
||||
//PRINTS
|
||||
if(!A.fingerprints || !A.fingerprints.len)
|
||||
user << "\blue No Fingerprints Located."
|
||||
if(A.fingerprints)
|
||||
@@ -182,6 +183,8 @@ MASS SPECTROMETER
|
||||
var/i = add_data(A)
|
||||
if(i)
|
||||
user << "\blue Fingerprints already in memory."
|
||||
|
||||
//FIBERS
|
||||
if(!A.suit_fibers)
|
||||
user << "\blue No Fibers/Materials Located."
|
||||
else
|
||||
@@ -192,78 +195,44 @@ MASS SPECTROMETER
|
||||
var/i = add_data(A)
|
||||
if(i)
|
||||
user << "\blue Fibers/Materials already in memory."
|
||||
// else
|
||||
// if ((src.amount < 1 && src.printing))
|
||||
// user << "\blue Fingerprints found. Need more cards to print."
|
||||
// src.printing = 0
|
||||
// src.icon_state = text("forensic[]", src.printing)
|
||||
// if (src.printing)
|
||||
// src.amount--
|
||||
// var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc )
|
||||
// F.amount = 1
|
||||
// F.fingerprints = A.fingerprints
|
||||
// F.icon_state = "fingerprint1"
|
||||
// user << "\blue Done printing."
|
||||
// for(var/i in L)
|
||||
// user << text("\blue \t [i]")
|
||||
// //Foreach goto(186)
|
||||
return
|
||||
|
||||
proc/add_data(atom/A as mob|obj|turf|area)
|
||||
var/merged = 0
|
||||
for(var/i = 1, i < (stored.len + 1), i++) //Lets see if the object is already in there!
|
||||
var/list/temp = stored[i]
|
||||
var/atom/checker = temp[1]
|
||||
var/atom_checker_scan = (A.original_atom ? checker.original_atom[1] == A.original_atom[1] : 0)
|
||||
if(checker.original_atom[1] == A || atom_checker_scan) //It is! Merge!
|
||||
merged = 1
|
||||
var/list/prints = temp[2]
|
||||
if(!prints)
|
||||
prints = list()
|
||||
if(A.fingerprints && A.fingerprints.len)
|
||||
for(var/j = 1, j <= A.fingerprints.len, j++) //Fingerprints~~~
|
||||
var/list/print_test1 = params2list(A.fingerprints[j])
|
||||
var/test_print1 = print_test1[num2text(1)]
|
||||
var/found = 0
|
||||
for(var/k = 1, k <= prints.len, k++) //Lets see if the print is already in there
|
||||
var/list/print_test2 = params2list(prints[k])
|
||||
var/test_print2 = print_test2[num2text(1)]
|
||||
if(test_print2 == test_print1) //It is! Merge!
|
||||
prints[k] = test_print2 + "&" + stringmerge(print_test2[num2text(2)],print_test1[num2text(2)])
|
||||
found = 1
|
||||
break //We found it, we're done here.
|
||||
if(!found) //It isn't! Add!
|
||||
prints += A.fingerprints[j]
|
||||
var/list/fibers = temp[3]
|
||||
if(!fibers)
|
||||
fibers = list()
|
||||
if(A.suit_fibers && A.suit_fibers.len)
|
||||
for(var/j = 1, j <= A.suit_fibers.len, j++) //Fibers~~~
|
||||
if(!fibers.Find(A.suit_fibers[j])) //It isn't! Add!
|
||||
fibers += A.suit_fibers[j]
|
||||
var/list/blood = temp[4]
|
||||
if(!blood)
|
||||
blood = list()
|
||||
if(A.blood_DNA && A.blood_DNA.len)
|
||||
for(var/j = 1, j <= A.blood_DNA.len, j++) //Blood~~~
|
||||
if(!blood.Find(A.blood_DNA[j])) //It isn't! Add!
|
||||
blood += A.blood_DNA[j]
|
||||
var/list/sum_list[4] //Pack it back up!
|
||||
sum_list[1] = checker
|
||||
sum_list[2] = prints
|
||||
sum_list[3] = fibers
|
||||
sum_list[4] = blood
|
||||
stored[i] = sum_list //Store it!
|
||||
break //We found it, we're done here.
|
||||
if(!merged) //Uh, oh! New data point!
|
||||
var/list/sum_list[4] //Pack it back up!
|
||||
sum_list[1] = A.get_duplicate(src)
|
||||
sum_list[2] = A.fingerprints
|
||||
sum_list[3] = A.suit_fibers
|
||||
sum_list[4] = A.blood_DNA
|
||||
stored.len++
|
||||
stored[stored.len] = sum_list
|
||||
return merged
|
||||
//I love hashtables.
|
||||
var/list/data_entry = stored["\ref [A]"]
|
||||
if(islist(data_entry)) //Yay, it was already stored!
|
||||
//Merge the fingerprints.
|
||||
var/list/data_prints = data_entry[1]
|
||||
for(var/print in A.fingerprints)
|
||||
var/merged_print = data_prints[print]
|
||||
if(!merged_print)
|
||||
data_prints[print] = A.fingerprints[print]
|
||||
else
|
||||
data_prints[print] = stringmerge(data_prints[print],A.fingerprints[print])
|
||||
|
||||
//Now the fibers
|
||||
var/list/fibers = data_entry[2]
|
||||
if(!fibers)
|
||||
fibers = list()
|
||||
if(A.suit_fibers && A.suit_fibers.len)
|
||||
for(var/j = 1, j <= A.suit_fibers.len, j++) //Fibers~~~
|
||||
if(!fibers.Find(A.suit_fibers[j])) //It isn't! Add!
|
||||
fibers += A.suit_fibers[j]
|
||||
var/list/blood = data_entry[3]
|
||||
if(!blood)
|
||||
blood = list()
|
||||
if(A.blood_DNA && A.blood_DNA.len)
|
||||
for(var/main_blood in A.blood_DNA)
|
||||
if(!blood[main_blood])
|
||||
blood[main_blood] = A.blood_DNA[blood]
|
||||
return 1
|
||||
var/list/sum_list[4] //Pack it back up!
|
||||
sum_list[1] = A.fingerprints
|
||||
sum_list[2] = A.suit_fibers
|
||||
sum_list[3] = A.blood_DNA
|
||||
sum_list[4] = "\The [A] in [get_area(A)]"
|
||||
stored["\ref [A]"] = sum_list
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/device/healthanalyzer
|
||||
|
||||
@@ -51,13 +51,13 @@
|
||||
viruus.holder = gib
|
||||
viruus.spread_type = CONTACT_FEET
|
||||
if(MobDNA)
|
||||
gib.blood_DNA = list(list(MobDNA.unique_enzymes, MobDNA.b_type))
|
||||
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.b_type
|
||||
if(MobDNA.original_name != "Unknown")
|
||||
gib.OriginalMob = MobDNA.original_name
|
||||
else if(istype(src, /obj/effect/gibspawner/xeno))
|
||||
gib.blood_DNA = list(list("UNKNOWN DNA", "X*"))
|
||||
gib.blood_DNA["UNKNOWN DNA"] = "X*"
|
||||
else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey
|
||||
gib.blood_DNA = list(list("Non-human DNA", "A+"))
|
||||
gib.blood_DNA["Non-human DNA"] = "A+"
|
||||
var/list/directions = gibdirections[i]
|
||||
if(directions.len)
|
||||
gib.streak(directions)
|
||||
|
||||
@@ -207,13 +207,10 @@ FINGERPRINT CARD
|
||||
|
||||
/obj/item/weapon/f_card/proc/display()
|
||||
if(!fingerprints) return
|
||||
if (!istype(src.fingerprints, /list))
|
||||
src.fingerprints = params2list(src.fingerprints)
|
||||
if (length(src.fingerprints))
|
||||
if (length(fingerprints))
|
||||
var/dat = "<B>Fingerprints on Card</B><HR>"
|
||||
for(var/i = 1, i < (src.fingerprints.len + 1), i++)
|
||||
var/list/L = params2list(src.fingerprints[i])
|
||||
dat += text("[]<BR>", L["1"])
|
||||
for(var/name in fingerprints)
|
||||
dat += "[name]<BR>"
|
||||
//Foreach goto(41)
|
||||
return dat
|
||||
else
|
||||
@@ -273,7 +270,7 @@ FINGERPRINT CARD
|
||||
else
|
||||
src.name = "Finger Print Card"
|
||||
W.add_fingerprint(user)
|
||||
src.add_fingerprint(user)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/f_card/add_fingerprint()
|
||||
|
||||
@@ -159,8 +159,8 @@
|
||||
var/pressure = air_contents.return_pressure()
|
||||
if(pressure > TANK_FRAGMENT_PRESSURE)
|
||||
if(!istype(src.loc,/obj/item/device/transfer_valve))
|
||||
message_admins("Explosive tank rupture! last key to touch the tank was [src.fingerprintslast].")
|
||||
log_game("Explosive tank rupture! last key to touch the tank was [src.fingerprintslast].")
|
||||
message_admins("Explosive tank rupture! last key to touch the tank was [fingerprintslast].")
|
||||
log_game("Explosive tank rupture! last key to touch the tank was [fingerprintslast].")
|
||||
//world << "\blue[x],[y] tank is exploding: [pressure] kPa"
|
||||
//Give the gas a chance to build up more pressure through reacting
|
||||
air_contents.react()
|
||||
|
||||
Reference in New Issue
Block a user