From 3bbb25074973854d92c8d4f3be343f1f7b112d52 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 1 Jun 2013 14:30:05 +0400 Subject: [PATCH] Added bloody footprints. --- .../effects/decals/Cleanable/humans.dm | 37 ++++++++++++++++++- code/game/turfs/simulated.dm | 25 +++++++++++++ .../DetectiveWork/footprints_and_rag.dm | 7 ++-- code/modules/mob/living/carbon/human/human.dm | 8 +++- 4 files changed, 72 insertions(+), 5 deletions(-) diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 29f02fedfa7..172eca9ae97 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -27,15 +27,40 @@ if(src.loc && isturf(src.loc)) for(var/obj/effect/decal/cleanable/blood/B in src.loc) if(B != src) + if (B.blood_DNA) + blood_DNA |= B.blood_DNA.Copy() del(B) spawn(DRYING_TIME * (amount+1)) dry() +/obj/effect/decal/cleanable/blood/HasEntered(mob/living/carbon/human/perp) + if (!istype(perp)) + return + if(amount < 1) + return + + if(perp.shoes) + perp.shoes:track_blood = max(amount,perp.shoes:track_blood) //Adding blood to shoes + if(!perp.shoes.blood_overlay) + perp.shoes.generate_blood_overlay() + if(!perp.shoes.blood_DNA) + perp.shoes.blood_DNA = list() + perp.shoes.overlays += perp.shoes.blood_overlay + perp.update_inv_shoes(1) + perp.shoes.blood_DNA |= blood_DNA.Copy() + else + perp.track_blood = max(amount,perp.track_blood) //Or feet + if(!perp.feet_blood_DNA) + perp.feet_blood_DNA = list() + perp.feet_blood_DNA |= blood_DNA.Copy() + + amount-- + /obj/effect/decal/cleanable/blood/proc/dry() name = "dried [src]" desc = "It's dark red and crusty. Someone is not doing their job." var/icon/I = icon(icon,icon_state) - I.SetIntensity(0.5) + I.SetIntensity(0.7) icon = I amount = 0 @@ -43,11 +68,20 @@ random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") amount = 2 +/obj/effect/decal/cleanable/blood/footprints + name = "bloody footprints" + desc = "Whoops..." + icon='icons/effects/footprints.dmi' + icon_state = "blood1" + amount = 0 + random_icon_states = null + /obj/effect/decal/cleanable/blood/tracks icon_state = "tracks" desc = "They look like tracks left by wheels." gender = PLURAL random_icon_states = null + amount = 0 /obj/effect/decal/cleanable/blood/drip name = "drips of blood" @@ -55,6 +89,7 @@ gender = PLURAL icon = 'drip.dmi' icon_state = "1" + amount = 0 /obj/effect/decal/cleanable/blood/gibs name = "gibs" diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 0fb777c6b4c..16d88a0ea0b 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -34,6 +34,31 @@ else playsound(src, "clownstep", 20, 1) + var/list/bloodDNA = null + if(H.shoes) + var/obj/item/clothing/shoes/S = H.shoes + if(S.track_blood && S.blood_DNA) + bloodDNA = S.blood_DNA + S.track_blood-- + else + if(H.track_blood && H.feet_blood_DNA) + bloodDNA = H.feet_blood_DNA + H.track_blood-- + + if (bloodDNA) + var/obj/effect/decal/cleanable/blood/footprints/here = new(src) + here.icon_state = "blood1" + here.dir = H.dir + here.blood_DNA |= bloodDNA.Copy() + var/turf/simulated/from = get_step(H,reverse_direction(H.dir)) + if(from) + var/obj/effect/decal/cleanable/blood/footprints/there = new(from) + there.icon_state = "blood2" + there.dir = H.dir + there.blood_DNA |= bloodDNA.Copy() + + bloodDNA = null + switch (src.wet) if(1) if(istype(M, /mob/living/carbon/human)) // Added check since monkeys don't have shoes diff --git a/code/modules/DetectiveWork/footprints_and_rag.dm b/code/modules/DetectiveWork/footprints_and_rag.dm index 7671dc543aa..6a1fd7abffe 100644 --- a/code/modules/DetectiveWork/footprints_and_rag.dm +++ b/code/modules/DetectiveWork/footprints_and_rag.dm @@ -1,15 +1,16 @@ /mob - var/bloody_hands = 0 var/mob/living/carbon/human/bloody_hands_mob - var/track_blood - var/mob/living/carbon/human/track_blood_mob + var/track_blood = 0 + var/list/feet_blood_DNA var/track_blood_type /obj/item/clothing/gloves var/transfer_blood = 0 var/mob/living/carbon/human/bloody_hands_mob +/obj/item/clothing/shoes/ + var/track_blood = 0 /obj/item/weapon/reagent_containers/glass/rag name = "damp rag" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e0a54658d7f..f20f5955d58 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1095,4 +1095,10 @@ return 0 //already bloodied with this blood. Cannot add more. blood_DNA[M.dna.unique_enzymes] = M.dna.b_type src.update_inv_gloves() //handles bloody hands overlays and updating - return 1 //we applied blood to the item \ No newline at end of file + return 1 //we applied blood to the item + +/mob/living/carbon/human/clean_blood() + .=..() + if(istype(feet_blood_DNA, /list) && feet_blood_DNA.len) + del(feet_blood_DNA) + return 1 \ No newline at end of file