diff --git a/code/game/objects/effects/decals/Cleanable/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm index 957369f3bf..1df3acb2b7 100644 --- a/code/game/objects/effects/decals/Cleanable/aliens.dm +++ b/code/game/objects/effects/decals/Cleanable/aliens.dm @@ -11,6 +11,9 @@ random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") basecolor = "#05EE05" +/obj/effect/decal/cleanable/blood/gibs/xeno/update_icon() + color = "#FFFFFF" + /obj/effect/decal/cleanable/blood/gibs/xeno/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 f971cb45c6..af0a3e65e1 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -12,6 +12,7 @@ var/global/list/image/splatter_cache=list() icon = 'icons/effects/blood.dmi' icon_state = "mfloor1" random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") + var/base_icon = 'icons/effects/blood.dmi' var/list/viruses = list() blood_DNA = list() var/basecolor="#A10808" // Color when wet. @@ -137,12 +138,22 @@ var/global/list/image/splatter_cache=list() icon = 'icons/effects/blood.dmi' icon_state = "gibbl5" random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + var/fleshcolor = "#FFFFFF" /obj/effect/decal/cleanable/blood/gibs/update_icon() - color = "#FFFFFF" - //overlays.Cut() - //..() - //overlays += image(icon, src, "[icon_state]_flesh") + + var/image/giblets = new(base_icon, "[icon_state]_flesh", dir) + if(!fleshcolor || fleshcolor == "rainbow") + fleshcolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + giblets.color = fleshcolor + + var/icon/blood = new(base_icon,"[icon_state]",dir) + if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + blood.Blend(basecolor,ICON_MULTIPLY) + + icon = blood + overlays.Cut() + overlays += giblets /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/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index 43a6c1954e..150197347d 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -6,6 +6,9 @@ basecolor="#030303" random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") +/obj/effect/decal/cleanable/blood/gibs/robot/update_icon() + color = "#FFFFFF" + /obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like return diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm index ae8fc7220a..619935b8b2 100644 --- a/code/game/objects/effects/gibs.dm +++ b/code/game/objects/effects/gibs.dm @@ -1,8 +1,8 @@ /proc/gibs(atom/location, var/list/viruses, var/datum/dna/MobDNA) //CARN MARKER new /obj/effect/gibspawner/generic(get_turf(location),viruses,MobDNA) -/proc/hgibs(atom/location, var/list/viruses, var/datum/dna/MobDNA) - new /obj/effect/gibspawner/human(get_turf(location),viruses,MobDNA) +/proc/hgibs(atom/location, var/list/viruses, var/datum/dna/MobDNA, var/fleshcolor, var/bloodcolor) + new /obj/effect/gibspawner/human(get_turf(location),viruses,MobDNA,fleshcolor,bloodcolor) /proc/xgibs(atom/location, var/list/viruses) new /obj/effect/gibspawner/xeno(get_turf(location),viruses) @@ -16,10 +16,15 @@ var/list/gibtypes = list() var/list/gibamounts = list() var/list/gibdirections = list() //of lists + var/fleshcolor //Used for gibbed humans. + var/bloodcolor //Used for gibbed humans. - New(location, var/list/viruses, var/datum/dna/MobDNA) + New(location, var/list/viruses, var/datum/dna/MobDNA, var/fleshcolor, var/bloodcolor) ..() + if(fleshcolor) src.fleshcolor = fleshcolor + if(bloodcolor) src.bloodcolor = bloodcolor + if(istype(loc,/turf)) //basically if a badmin spawns it Gib(loc,viruses,MobDNA) @@ -44,6 +49,14 @@ var/gibType = gibtypes[i] gib = new gibType(location) + // Apply human species colouration to masks. + if(fleshcolor) + gib.fleshcolor = fleshcolor + if(bloodcolor) + gib.basecolor = bloodcolor + + gib.update_icon() + if(viruses.len > 0) for(var/datum/disease/D in viruses) if(prob(virusProb)) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 95ebdf2011..289ecf67ac 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -20,7 +20,10 @@ E.droplimb(1,1) flick("gibbed-h", animation) - hgibs(loc, viruses, dna) + if(species) + hgibs(loc, viruses, dna, species.flesh_color, species.blood_color) + else + hgibs(loc, viruses, dna) spawn(15) if(animation) del(animation) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 25531def83..416d1d9324 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -40,6 +40,7 @@ var/list/abilities = list() // For species-derived or admin-given powers var/blood_color = "#A10808" //Red. + var/flesh_color = "#FFC896" //Pink. /datum/species/human name = "Human" @@ -72,6 +73,8 @@ flags = WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL + flesh_color = "#34AF10" + /datum/species/tajaran name = "Tajaran" icobase = 'icons/mob/human_races/r_tajaran.dmi' @@ -94,6 +97,8 @@ flags = WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL + flesh_color = "#AFA59E" + /datum/species/skrell name = "Skrell" icobase = 'icons/mob/human_races/r_skrell.dmi' @@ -103,6 +108,8 @@ flags = WHITELISTED | HAS_LIPS | HAS_UNDERWEAR + flesh_color = "#8CD7A3" + /datum/species/vox name = "Vox" icobase = 'icons/mob/human_races/r_vox.dmi' @@ -121,6 +128,9 @@ flags = NO_SCAN + blood_color = "#2299FC" + flesh_color = "#808D11" + /datum/species/diona name = "Diona" icobase = 'icons/mob/human_races/r_plant.dmi' @@ -130,7 +140,6 @@ punch_damage = 5 primitive = /mob/living/carbon/monkey/diona - blood_color = "rainbow" warning_low_pressure = 50 hazard_low_pressure = -1 @@ -142,4 +151,8 @@ heat_level_2 = 3000 heat_level_3 = 4000 - flags = WHITELISTED | NO_BREATHE | REQUIRE_LIGHT | NON_GENDERED | NO_SCAN | IS_PLANT | RAD_ABSORB \ No newline at end of file + flags = WHITELISTED | NO_BREATHE | REQUIRE_LIGHT | NON_GENDERED | NO_SCAN | IS_PLANT | RAD_ABSORB + + blood_color = "#004400" + flesh_color = "#907E4A" + diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 6f634b9447..c254397a20 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ