From e89fe94af8f4c656fd2ce17a753b539a5d5fa66a Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 26 Dec 2013 14:48:05 +1030 Subject: [PATCH] Merged binary files, adapted chinsky's blood painting procs to function with arbitrary colours. --- .../effects/decals/Cleanable/humans.dm | 122 +++++++++--------- code/modules/mob/living/carbon/human/human.dm | 4 +- .../mob/living/carbon/human/human_defines.dm | 1 + code/modules/mob/living/carbon/species.dm | 1 + icons/effects/blood.dmi | Bin 69552 -> 72811 bytes 5 files changed, 68 insertions(+), 60 deletions(-) diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 8fb14ebf4a4..ed405447c1b 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -3,43 +3,45 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/blood - name = "blood" - desc = "It's thick and gooey. Perhaps it's the chef's cooking?" - gender = PLURAL - density = 0 - anchored = 1 - layer = 2 - icon_state = "floor1" - random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") - var/list/viruses = list() - blood_DNA = list() - var/basecolor="#A10808" // Color when wet. - var/list/datum/disease2/disease/virus2 = list() - var/amount = 5 + name = "blood" + desc = "It's thick and gooey. Perhaps it's the chef's cooking?" + gender = PLURAL + density = 0 + anchored = 1 + layer = 2 + icon_state = "floor1" + random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") + var/list/viruses = list() + blood_DNA = list() + var/basecolor="#A10808" // Color when wet. + var/list/datum/disease2/disease/virus2 = list() + var/amount = 5 /obj/effect/decal/cleanable/blood/Del() - for(var/datum/disease/D in viruses) - D.cure(0) - ..() + for(var/datum/disease/D in viruses) + D.cure(0) + ..() /obj/effect/decal/cleanable/blood/New() - ..() - if(istype(src, /obj/effect/decal/cleanable/blood/gibs)) - return - if(istype(src, /obj/effect/decal/cleanable/blood/tracks)) - return // We handle our own drying. - if(src.type == /obj/effect/decal/cleanable/blood) - 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() + ..() + if(istype(src, /obj/effect/decal/cleanable/blood/gibs)) + return + if(istype(src, /obj/effect/decal/cleanable/blood/tracks)) + return // We handle our own drying. + if(src.type == /obj/effect/decal/cleanable/blood) + 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/update_icon() + if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + var/cache_key="[basecolor]|[icon_state]" var/icon/I=null if(cache_key in splatter_cache) @@ -91,11 +93,12 @@ var/global/list/image/splatter_cache=list() return var/taken = rand(1,amount) amount -= taken - user << "You get some blood on your hands." + user << "You get some of \the [src] on your hands." if (!user.blood_DNA) user.blood_DNA = list() user.blood_DNA |= blood_DNA.Copy() user.bloody_hands += taken + user.hand_blood_color = basecolor user.update_inv_gloves(1) user.verbs += /mob/living/carbon/human/proc/bloody_doodle @@ -127,33 +130,33 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/blood/writing/examine() ..() - usr << "It reads: \"[message]\"" + usr << "It reads: \"[message]\"" /obj/effect/decal/cleanable/blood/gibs - name = "gibs" - desc = "They look bloody and gruesome." - gender = PLURAL - density = 0 - anchored = 1 - layer = 2 - icon = 'icons/effects/blood.dmi' - icon_state = "gibbl5" - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + name = "gibs" + desc = "They look bloody and gruesome." + gender = PLURAL + density = 0 + anchored = 1 + layer = 2 + icon = 'icons/effects/blood.dmi' + icon_state = "gibbl5" + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") /obj/effect/decal/cleanable/blood/gibs/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") /obj/effect/decal/cleanable/blood/gibs/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") /obj/effect/decal/cleanable/blood/gibs/body - random_icon_states = list("gibhead", "gibtorso") + random_icon_states = list("gibhead", "gibtorso") /obj/effect/decal/cleanable/blood/gibs/limb - random_icon_states = list("gibleg", "gibarm") + random_icon_states = list("gibleg", "gibarm") /obj/effect/decal/cleanable/blood/gibs/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") /obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions) @@ -174,18 +177,19 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/mucus - name = "mucus" - desc = "Disgusting mucus." - gender = PLURAL - density = 0 - anchored = 1 - layer = 2 - icon = 'icons/effects/blood.dmi' - icon_state = "mucus" - random_icon_states = list("mucus") - var/list/datum/disease2/disease/virus2 = list() - var/dry=0 // Keeps the lag down + name = "mucus" + desc = "Disgusting mucus." + gender = PLURAL + density = 0 + anchored = 1 + layer = 2 + icon = 'icons/effects/blood.dmi' + icon_state = "mucus" + random_icon_states = list("mucus") + + var/list/datum/disease2/disease/virus2 = list() + var/dry=0 // Keeps the lag down /obj/effect/decal/cleanable/mucus/New() - spawn(DRYING_TIME * 2) - dry=1 + spawn(DRYING_TIME * 2) + dry=1 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1454b360b58..60014a89e2a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1326,5 +1326,7 @@ mob/living/carbon/human/yank_out_object() src << "You ran out of blood to write with!" var/obj/effect/decal/cleanable/blood/writing/W = new(T) + W.basecolor = (hand_blood_color) ? hand_blood_color : "#A10808" + W.update_icon() W.message = message - W.add_fingerprint(src) + W.add_fingerprint(src) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 104e60fff89..4611dda0d82 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -56,3 +56,4 @@ var/xylophone = 0 //For the spoooooooky xylophone cooldown var/mob/remoteview_target = null + var/hand_blood_color \ No newline at end of file diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index fa7928a36cf..25531def839 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -130,6 +130,7 @@ punch_damage = 5 primitive = /mob/living/carbon/monkey/diona + blood_color = "rainbow" warning_low_pressure = 50 hazard_low_pressure = -1 diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 960f4c1e19e91caf1a568e68168fe98a019a404e..ae5383b690eff694823413d58b27b20db20a9d37 100644 GIT binary patch delta 10224 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