diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 8c8902aa5b3b..a2201e36b820 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -14,6 +14,31 @@ C.bloodiness += bloodiness return ..() +/obj/effect/decal/cleanable/whiteblood + name = "\"blood\"" + desc = "It's an unsettling colour. Maybe it's the chef's cooking?" + icon = 'icons/effects/blood.dmi' + icon_state = "genericsplatter1" + random_icon_states = list("genericsplatter1", "genericsplatter2", "genericsplatter3", "genericsplatter4", "genericsplatter5", "genericsplatter6") + +/obj/effect/decal/cleanable/whiteblood/ethereal + name = "glowing \"blood\"" + desc = "It has a fading glow. Surely it's just the chef's cooking?" + light_power = 1 + light_range = 2 + light_color = "#eef442" + +/obj/effect/decal/cleanable/whiteblood/ethereal/Initialize(mapload, list/datum/disease/diseases) + . = ..() + add_atom_colour(light_color, FIXED_COLOUR_PRIORITY) + addtimer(CALLBACK(src, PROC_REF(Fade)), 1 MINUTES) + +/obj/effect/decal/cleanable/whiteblood/ethereal/proc/Fade() + name = "faded \"blood\"" + light_power = 0 + light_range = 0 + update_light() + /obj/effect/decal/cleanable/blood/old name = "dried blood" desc = "Looks like it's been here a while. Eew." @@ -53,6 +78,21 @@ /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE +/obj/effect/decal/cleanable/trail_holder/proc/Etherealify() + name = "glowing \"blood\"" + light_power = 1 + light_range = 2 + light_color = "#eef442" + update_light() + add_atom_colour(light_color, FIXED_COLOUR_PRIORITY) + addtimer(CALLBACK(src, PROC_REF(Fade)), 1 MINUTES) + +/obj/effect/decal/cleanable/trail_holder/proc/Fade() + name = "faded \"blood\"" + light_power = 0 + light_range = 0 + update_light() + /obj/effect/decal/cleanable/blood/gibs name = "gibs" desc = "They look bloody and gruesome." diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 0c5d065ce298..9f4d093d4f67 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -350,6 +350,12 @@ B = new(T) B.transfer_mob_blood_dna(src) return + if(isethereal(src)) + var/obj/effect/decal/cleanable/whiteblood/ethereal/B = locate() in T.contents + if(!B) + B = new(T) + B.transfer_mob_blood_dna(src) + return if(get_blood_id() != /datum/reagent/blood) return var/list/temp_blood_DNA diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5751418ba145..9822bc01f2f3 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -692,7 +692,9 @@ if((newdir in GLOB.cardinals) && (prob(50))) newdir = turn(get_dir(target_turf, start), 180) if(!blood_exists) - new /obj/effect/decal/cleanable/trail_holder(start, get_static_viruses()) + var/obj/effect/decal/cleanable/trail_holder/TH = new(start, get_static_viruses()) + if(isethereal(src))//ethereal blood glows + TH.Etherealify() for(var/obj/effect/decal/cleanable/trail_holder/TH in start) if((!(newdir in TH.existing_dirs) || trail_type == "trails_1" || trail_type == "trails_2") && TH.existing_dirs.len <= 16) //maximum amount of overlays is 16 (all light & heavy directions filled) @@ -721,10 +723,14 @@ if(getBruteLoss() < 300) if(ispolysmorph(src)) return pick("xltrails_1", "xltrails_2") + if(isethereal(src)) + return pick("wltrails_1", "wltrails_2") return pick("ltrails_1", "ltrails_2") else if(ispolysmorph(src)) return pick("xttrails_1", "xttrails_2") + if(isethereal(src)) + return pick("wttrails_1", "wttrails_2") return pick("trails_1", "trails_2") /mob/living/experience_pressure_difference(pressure_difference, direction, pressure_resistance_prob_delta = 0) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index bd89db8b9f89..3478bb068f3c 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -750,6 +750,16 @@ if(istype(stomach)) stomach.adjust_charge(reac_volume * REM * ETHEREAL_CHARGE_SCALING_MULTIPLIER) +/datum/reagent/consumable/liquidelectricity/reaction_turf(turf/T, reac_volume)//splash the electric "blood" all over the place + if(!istype(T)) + return + if(reac_volume < 3) + return + + var/obj/effect/decal/cleanable/whiteblood/ethereal/B = locate() in T //find some blood here + if(!B) + B = new(T) + /datum/reagent/consumable/liquidelectricity/on_mob_life(mob/living/carbon/M) if(prob(25) && !isethereal(M)) M.electrocute_act(rand(10,15), "Liquid Electricity in their body", 1) //lmao at the newbs who eat energy bars diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index d2d0290dc9de..232d46dd37f0 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ