progress, just need to fiddle with footprints again

This commit is contained in:
Poojawa
2019-05-07 13:23:49 -05:00
parent d14943d4b0
commit 69eca2ae4b
19 changed files with 196 additions and 81 deletions
+2 -2
View File
@@ -28,8 +28,8 @@
var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object
blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent)
blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant
blood_splatter_icon.Blend(I.blood_DNA_to_color(), ICON_MULTIPLY) //Color the blood with our dna stuff
pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state))
GET_COMPONENT(D, /datum/component/forensics)
blood_splatter_icon.Blend(D.blood_DNA_to_color(), ICON_MULTIPLY)
blood_splatter_appearances[index] = pic
return TRUE
+27 -3
View File
@@ -11,6 +11,7 @@
blood_DNA = blood_DNA | F.blood_DNA
fibers = fibers | F.fibers
check_blood()
blood_DNA_to_color()
return ..()
/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers)
@@ -21,6 +22,7 @@
blood_DNA = new_blood_DNA
fibers = new_fibers
check_blood()
blood_DNA_to_color()
RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act)
/datum/component/forensics/proc/wipe_fingerprints()
@@ -32,8 +34,6 @@
/datum/component/forensics/proc/wipe_blood_DNA()
blood_DNA = null
if(isitem(parent))
qdel(parent.GetComponent(/datum/component/decal/blood))
return TRUE
/datum/component/forensics/proc/wipe_fibers()
@@ -149,6 +149,7 @@
for(var/i in dna)
blood_DNA[i] = dna[i]
check_blood()
blood_DNA_to_color()
return TRUE
/datum/component/forensics/proc/check_blood()
@@ -156,4 +157,27 @@
return
if(!length(blood_DNA))
return
parent.LoadComponent(/datum/component/decal/blood)
/datum/component/forensics/proc/blood_DNA_to_color()
var/list/colors = list()//first we make a list of all bloodtypes present
for(var/bloop in blood_DNA)
if(colors[blood_DNA[bloop]])
colors[blood_DNA[bloop]]++
else
colors[blood_DNA[bloop]] = 1
var/final_rgb = "#940000"
if(colors.len)
var/sum = 0 //this is all shitcode, but it works; trust me
final_rgb = bloodtype_to_color(colors[1])
sum = colors[colors[1]]
if(colors.len > 1)
var/i = 2
while(i <= colors.len)
var/tmp = colors[colors[i]]
final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum))
sum += tmp
i++
return final_rgb