ok
This commit is contained in:
+19
-29
@@ -444,10 +444,10 @@
|
|||||||
return
|
return
|
||||||
var/list/blood_dna = list()
|
var/list/blood_dna = list()
|
||||||
if(dna)
|
if(dna)
|
||||||
blood_dna["color"] = list(dna.species.exotic_blood_color) //so when combined, the list grows with the number of colors
|
blood_dna["color"] = dna.species.exotic_blood_color //so when combined, the list grows with the number of colors
|
||||||
blood_dna[dna.unique_enzymes] = dna.blood_type
|
blood_dna[dna.unique_enzymes] = dna.blood_type
|
||||||
else
|
else
|
||||||
blood_dna["color"] = list(BLOOD_COLOR_HUMAN)
|
blood_dna["color"] = BLOOD_COLOR_HUMAN
|
||||||
blood_dna["UNKNOWN DNA"] = "X*"
|
blood_dna["UNKNOWN DNA"] = "X*"
|
||||||
return blood_dna
|
return blood_dna
|
||||||
|
|
||||||
@@ -461,25 +461,35 @@
|
|||||||
if(!new_blood_dna)
|
if(!new_blood_dna)
|
||||||
return FALSE
|
return FALSE
|
||||||
LAZYINITLIST(blood_DNA) //if our list of DNA doesn't exist yet, initialise it.
|
LAZYINITLIST(blood_DNA) //if our list of DNA doesn't exist yet, initialise it.
|
||||||
LAZYINITLIST(blood_DNA["color"])
|
|
||||||
var/old_length = blood_DNA.len
|
var/old_length = blood_DNA.len
|
||||||
blood_DNA |= new_blood_dna
|
blood_DNA |= new_blood_dna
|
||||||
blood_DNA["color"] += new_blood_dna["color"]
|
var/changed = FALSE
|
||||||
|
if(!blood_DNA["color"])
|
||||||
|
blood_DNA["color"] = new_blood_dna["color"]
|
||||||
|
changed = TRUE
|
||||||
|
else
|
||||||
|
var/old = blood_DNA["color"]
|
||||||
|
blood_DNA["color"] = BlendRGB(blood_DNA["color"], new_blood_dna["color"])
|
||||||
|
changed = old != blood_DNA["color"]
|
||||||
if(blood_DNA.len == old_length)
|
if(blood_DNA.len == old_length)
|
||||||
return FALSE
|
return FALSE
|
||||||
return TRUE
|
return changed
|
||||||
|
|
||||||
//to add blood dna info to the object's blood_DNA list
|
//to add blood dna info to the object's blood_DNA list
|
||||||
/atom/proc/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases)
|
/atom/proc/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases)
|
||||||
LAZYINITLIST(blood_DNA)
|
LAZYINITLIST(blood_DNA)
|
||||||
LAZYINITLIST(blood_dna["color"])
|
|
||||||
|
|
||||||
var/old_length = blood_DNA.len
|
var/old_length = blood_DNA.len
|
||||||
blood_DNA |= blood_dna
|
blood_DNA |= blood_dna
|
||||||
if(blood_DNA.len > old_length)
|
if(blood_DNA.len > old_length)
|
||||||
blood_DNA["color"] += blood_dna["color"]
|
. = TRUE
|
||||||
return TRUE
|
|
||||||
//some new blood DNA was added
|
//some new blood DNA was added
|
||||||
|
if(!blood_dna["color"])
|
||||||
|
return
|
||||||
|
if(!blood_DNA["color"])
|
||||||
|
blood_DNA["color"] = blood_dna["color"]
|
||||||
|
else
|
||||||
|
blood_DNA["color"] = BlendRGB(blood_DNA["color"], blood_dna["color"])
|
||||||
|
|
||||||
//to add blood from a mob onto something, and transfer their dna info
|
//to add blood from a mob onto something, and transfer their dna info
|
||||||
/atom/proc/add_mob_blood(mob/living/M)
|
/atom/proc/add_mob_blood(mob/living/M)
|
||||||
@@ -548,27 +558,7 @@
|
|||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/atom/proc/blood_DNA_to_color()
|
/atom/proc/blood_DNA_to_color()
|
||||||
var/list/colors = list()//first we make a list of all bloodtypes present
|
return (blood_DNA && blood_DNA["color"]) || BLOOD_COLOR_HUMAN
|
||||||
for(var/blood_color in blood_DNA["color"])
|
|
||||||
if(colors[blood_color])
|
|
||||||
colors[blood_color]++
|
|
||||||
else
|
|
||||||
colors[blood_color] = 1
|
|
||||||
|
|
||||||
var/final_rgb = BLOOD_COLOR_HUMAN //a default so we don't have white blood graphics if something messed up
|
|
||||||
if(colors.len)
|
|
||||||
var/sum = 0 //this is all shitcode, but it works; trust me
|
|
||||||
final_rgb = 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, colors[i], tmp/(tmp+sum))
|
|
||||||
sum += tmp
|
|
||||||
i++
|
|
||||||
|
|
||||||
return final_rgb
|
|
||||||
|
|
||||||
/atom/proc/clean_blood()
|
/atom/proc/clean_blood()
|
||||||
. = blood_DNA? TRUE : FALSE
|
. = blood_DNA? TRUE : FALSE
|
||||||
|
|||||||
@@ -85,8 +85,11 @@
|
|||||||
FP.entered_dirs |= dir
|
FP.entered_dirs |= dir
|
||||||
FP.bloodiness = S.bloody_shoes[S.blood_state]
|
FP.bloodiness = S.bloody_shoes[S.blood_state]
|
||||||
if(S.last_bloodtype)
|
if(S.last_bloodtype)
|
||||||
FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype)
|
FP.blood_DNA[S.last_blood_DNA] = S.last_bloodtype
|
||||||
FP.blood_DNA["color"] += S.last_blood_color
|
if(!FP.blood_DNA["color"])
|
||||||
|
FP.blood_DNA["color"] = S.last_blood_color
|
||||||
|
else
|
||||||
|
FP.blood_DNA["color"] = BlendRGB(FP.blood_DNA["color"], S.last_blood_color)
|
||||||
FP.update_icon()
|
FP.update_icon()
|
||||||
update_inv_shoes()
|
update_inv_shoes()
|
||||||
//End bloody footprints
|
//End bloody footprints
|
||||||
|
|||||||
@@ -71,7 +71,9 @@
|
|||||||
if(data["blood_DNA"])
|
if(data["blood_DNA"])
|
||||||
B.blood_DNA[data["blood_DNA"]] = data["blood_type"]
|
B.blood_DNA[data["blood_DNA"]] = data["blood_type"]
|
||||||
if(!B.blood_DNA["color"])
|
if(!B.blood_DNA["color"])
|
||||||
B.blood_DNA["color"] = list(data["bloodcolor"])
|
B.blood_DNA["color"] = data["bloodcolor"]
|
||||||
|
else
|
||||||
|
B.blood_DNA["color"] = BlendRGB(B.blood_DNA["color"], data["bloodcolor"])
|
||||||
if(B.reagents)
|
if(B.reagents)
|
||||||
B.reagents.add_reagent(type, reac_volume)
|
B.reagents.add_reagent(type, reac_volume)
|
||||||
B.update_icon()
|
B.update_icon()
|
||||||
|
|||||||
Reference in New Issue
Block a user