diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index f71620d562..2b30454379 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -171,17 +171,18 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
#define BLOOD_LOSS_IN_SPREAD 20
//Bloody shoe blood states
-#define BLOOD_STATE_HUMAN "blood"
-#define BLOOD_STATE_XENO "xeno"
+#define BLOOD_STATE_BLOOD "blood"
#define BLOOD_STATE_OIL "oil"
#define BLOOD_STATE_NOT_BLOODY "no blood whatsoever"
#define BLOOD_AMOUNT_PER_DECAL 20
//Blood Decal Colors
-#define BLOOD_COLOR_HUMAN "#C80000"
+#define BLOOD_COLOR_HUMAN "#dc0000"
#define BLOOD_COLOR_XENO "#94a83c"
-#define BLOOD_COLOR_OIL "#000000"
+#define BLOOD_COLOR_OIL "#301d02"
#define BLOOD_COLOR_SYNTHETIC "#0b0730"
+#define BLOOD_COLOR_SLIME "#00ff90"
+#define BLOOD_COLOR_LIZARD "#db004D"
//suit sensors: sensor_mode defines
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 2d1b922db8..7c591c1249 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -336,6 +336,15 @@
/mob/living/carbon/alien/get_blood_dna_list()
return list("UNKNOWN DNA" = "X*")
+//to add blood dna info to the object's blood_DNA list
+/atom/proc/transfer_blood_dna(list/blood_dna)
+ if(!blood_DNA)
+ blood_DNA = list()
+ var/old_length = blood_DNA.len
+ blood_DNA |= blood_dna
+ if(blood_DNA.len > old_length)
+ return TRUE//some new blood DNA was added
+
//to add a mob's dna info into an object's blood_DNA list.
/atom/proc/transfer_mob_blood_dna(mob/living/L)
// Returns 0 if we have that blood already
diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm
index 6dee6b5e7b..65da4a7d14 100644
--- a/code/game/objects/effects/decals/cleanable/aliens.dm
+++ b/code/game/objects/effects/decals/cleanable/aliens.dm
@@ -3,7 +3,7 @@
/obj/effect/decal/cleanable/blood/xenoblood
name = "xeno blood"
desc = "It's green and acidic. It looks like... blood?"
- blood_state = BLOOD_STATE_XENO
+ blood_state = BLOOD_STATE_BLOOD
color = BLOOD_COLOR_XENO
/obj/effect/decal/cleanable/blood/xenoblood/Initialize()
@@ -14,16 +14,6 @@
name = "xeno gibs"
desc = "Gnarly..."
-/obj/effect/decal/cleanable/blood/xenoblood/gibs/proc/streak(list/directions)
- set waitfor = 0
- var/direction = pick(directions)
- for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
- sleep(2)
- if(i > 0)
- new /obj/effect/decal/cleanable/blood/splatter(loc)
- if(!step_to(src, get_step(src, direction), 0))
- break
-
/obj/effect/decal/cleanable/blood/xenoblood/gibs/up
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm
index 01b397fafc..250391fa54 100644
--- a/code/game/objects/effects/decals/cleanable/humans.dm
+++ b/code/game/objects/effects/decals/cleanable/humans.dm
@@ -4,21 +4,20 @@
icon = 'icons/effects/blood.dmi'
icon_state = "floor1"
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
- blood_state = BLOOD_STATE_HUMAN
+ blood_state = BLOOD_STATE_BLOOD
+ color = BLOOD_COLOR_HUMAN
blood_DNA = list()
bloodiness = BLOOD_AMOUNT_PER_DECAL
-/obj/effect/cleanable/blood/Initialize()
- . = ..()
- update_icon()
-
/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C)
- C.add_blood_DNA(return_blood_DNA())
- if (bloodiness)
- if (C.bloodiness < MAX_SHOE_BLOODINESS)
- C.bloodiness += bloodiness
+ if (C.blood_DNA)
+ blood_DNA |= C.blood_DNA.Copy()
+ update_icon()
+ ..()
+
+/obj/effect/decal/cleanable/blood/transfer_blood_dna()
+ ..()
update_icon()
- return ..()
/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna()
. = ..()
@@ -29,13 +28,13 @@
/obj/effect/decal/cleanable/blood/old
name = "dried blood"
- desc = "Looks like it's been here a while. Eew."
+ desc = "Looks like it's been here a while. Eew."
bloodiness = 0
/obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases)
+ . = ..()
icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization.
- add_blood_DNA(list("Non-human DNA" = "A+")) // Needs to happen before ..()
- return ..()
+ add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/blood/splatter
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
@@ -47,7 +46,7 @@
/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters
name = "blood"
- icon_state = "trails_1"
+ icon_state = "ltrails_1"
desc = "Your instincts say you shouldn't be following these."
random_icon_states = null
var/list/existing_dirs = list()
@@ -63,7 +62,7 @@
/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in()
return TRUE
-/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna()
+/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna()
..()
update_icon()
@@ -162,7 +161,7 @@
random_icon_states = null
var/entered_dirs = 0
var/exited_dirs = 0
- blood_state = BLOOD_STATE_HUMAN //the icon state to load images from
+ blood_state = BLOOD_STATE_BLOOD //the icon state to load images from
var/list/shoe_types = list()
/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O)
@@ -191,7 +190,6 @@
exited_dirs |= H.dir
update_icon()
-
/obj/effect/decal/cleanable/blood/footprints/update_icon()
..()
cut_overlays()
@@ -210,13 +208,14 @@
alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness
+
/obj/effect/decal/cleanable/blood/footprints/examine(mob/user)
. = ..()
if(shoe_types.len)
. += "You recognise the footprints as belonging to:\n"
for(var/shoe in shoe_types)
var/obj/item/clothing/shoes/S = shoe
- . += "[icon2html(initial(S.icon), user)] Some [initial(S.name)].\n"
+ . += "some [initial(S.name)] [icon2html(initial(S.icon), user)]\n"
to_chat(user, .)
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index f810e95400..e52722b077 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -11,7 +11,7 @@
permeability_coefficient = 0.5
slowdown = SHOES_SLOWDOWN
var/blood_state = BLOOD_STATE_NOT_BLOODY
- var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
+ var/list/bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
var/offset = 0
var/equipped_before_drop = FALSE
var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans
@@ -57,7 +57,7 @@
IF_HAS_BLOOD_DNA(src)
bloody = TRUE
else
- bloody = bloody_shoes[BLOOD_STATE_HUMAN]
+ bloody = bloody_shoes[BLOOD_STATE_BLOOD]
if(damaged_clothes)
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
@@ -104,7 +104,7 @@
/obj/item/clothing/shoes/proc/clean_blood(datum/source, strength)
if(strength < CLEAN_STRENGTH_BLOOD)
return
- bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
+ bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
blood_state = BLOOD_STATE_NOT_BLOODY
if(ismob(loc))
var/mob/M = loc
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 38954c4b67..7fc4003667 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -490,15 +490,15 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
. = BLOOD_COLOR_HUMAN
switch(type)
if("U")//Universal blood; a bit orange
- . = "#DB3300"
+ . = "#db3300"
if("SY")//Synthetics blood; blue
. = BLOOD_COLOR_SYNTHETIC
if("L")//lizard, a bit pink/purple
- . = "#DB004D"
+ . = BLOOD_COLOR_LIZARD
if("X*")//xeno blood; greenish yellow
. = BLOOD_COLOR_XENO
if("HF")// Oil/Hydraulic blood. something something why not. reee
. = BLOOD_COLOR_OIL
if("GEL")// slimepeople blood, rgb 0, 255, 144
- . = "#00FF90"
+ . = BLOOD_COLOR_SLIME
//add more stuff to the switch if you have more blood colors for different types
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 3ac628a6dc..52ab8f98d3 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -123,7 +123,7 @@
name = "Slime Jelly Blood"
id = "jellyblood"
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
- color = "#00FF90"
+ color = BLOOD_COLOR_SLIME
taste_description = "slime"
taste_mult = 1.3