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