diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index d8a13a2ef3..ec7f4176b7 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -1,15 +1,16 @@ #define DRYING_TIME 5 * 60*10 //for 1 unit of depth in puddle (amount var) +var/global/list/image/splatter_cache=list() + /obj/effect/decal/cleanable/blood name = "blood" - desc = "It's red and gooey. Perhaps it's the chef's cooking?" + desc = "It's thick and gooey. Perhaps it's the chef's cooking?" gender = PLURAL density = 0 anchored = 1 layer = 2 - icon = 'icons/effects/blood.dmi' icon_state = "floor1" - random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") + random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") var/list/viruses = list() blood_DNA = list() var/basecolor="#A10808" // Color when wet. @@ -37,6 +38,18 @@ spawn(DRYING_TIME * (amount+1)) dry() +/obj/effect/decal/cleanable/blood/update_icon() + + var/cache_key="[basecolor]|[icon_state]" + var/icon/I=null + if(cache_key in splatter_cache) + I = splatter_cache[cache_key] + else + I = new /icon('icons/effects/blood.dmi', icon_state=icon_state) + I.SwapColor("#000000",basecolor); + splatter_cache[cache_key]=I + icon = I + /obj/effect/decal/cleanable/blood/HasEntered(mob/living/carbon/human/perp) if (!istype(perp)) return @@ -91,7 +104,7 @@ layer = 2 icon = 'icons/effects/blood.dmi' icon_state = "gibbl5" - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + random_icon_states = list("mgib1", "mgib2", "mgib3", "mgib4", "mgib5", "mgib6") /obj/effect/decal/cleanable/blood/gibs/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index c8293f98b5..c02775c1c0 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -143,8 +143,12 @@ //Species-specific blood. if(M.species) newblood.basecolor = M.species.blood_color + else + newblood.basecolor = "#A10808" newblood.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type + newblood.update_icon() + return 1 //we bloodied the floor @@ -154,14 +158,20 @@ var/obj/effect/decal/cleanable/blood/this = new /obj/effect/decal/cleanable/blood(src) this.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type + this.basecolor = "#A10808" + this.update_icon() else if(istype(M,/mob/living/carbon/human)) var/obj/effect/decal/cleanable/blood/this = new /obj/effect/decal/cleanable/blood(src) var/mob/living/carbon/human/H = M + //Species-specific blood. if(H.species) this.basecolor = H.species.blood_color + else + this.basecolor = "#A10808" + this.update_icon() this.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type