just need the stupid component to work properly now

This commit is contained in:
Poojawa
2019-05-14 02:36:23 -05:00
parent 49a2f3cc63
commit 77abf6a179
6 changed files with 47 additions and 22 deletions
@@ -84,6 +84,7 @@
S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood)
S.add_blood_DNA(return_blood_DNA())
S.blood_state = blood_state
S.blood_color = blood_color
update_icon()
H.update_inv_shoes()
@@ -97,6 +98,7 @@
H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood)
H.add_blood_DNA(return_blood_DNA())
H.blood_state = blood_state
H.blood_color = blood_color
update_icon()
/obj/effect/decal/cleanable/proc/can_bloodcrawl_in()
@@ -11,12 +11,16 @@
/obj/effect/decal/cleanable/blood/gibs/proc/guts()
if(gib_overlay)
var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", layer = (LOW_OBJ_LAYER - 0.1))
var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors, layer = (LOW_OBJ_LAYER - 0.2))
var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", color = blood_color)
gibz.layer = (LOW_OBJ_LAYER - 0.1)
var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors)
gibz2.layer = (LOW_OBJ_LAYER - 0.2)
if(!slimy_gibs)
gibz.appearance_flags = RESET_COLOR
add_overlay(gibz)
add_overlay(gibz2)
add_overlay(gibz)
else
add_overlay(gibz)
add_overlay(gibz2)
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
return
@@ -41,8 +45,10 @@
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
var/obj/effect/decal/cleanable/blood/gibs/gibbers = src
var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases)
splat.update_icon()
splat.color = gibbers.blood_color
if(!step_to(src, get_step(src, direction), 0))
break
@@ -97,8 +103,8 @@
/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidgibs", 5)
update_icon()
guts()
update_icon()
/obj/effect/decal/cleanable/blood/gibs/human/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
@@ -8,9 +8,9 @@
color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere.
bloodiness = BLOOD_AMOUNT_PER_DECAL
/obj/effect/decal/cleanable/blood/Initialize(mapload, list/datum/disease/diseases)
AddComponent(/datum/component/forensics, null,null,blood_DNA,null,blood_mix_types,blood_mix_color)
/obj/effect/decal/cleanable/blood/ComponentInitialize()
. = ..()
AddComponent(/datum/component/forensics)
update_icon()
/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C)
@@ -20,7 +20,7 @@
update_icon()
return ..()
obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
/obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
return TRUE
/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna()
@@ -29,10 +29,21 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
/obj/effect/decal/cleanable/blood/update_icon()
GET_COMPONENT(F, /datum/component/forensics)
if(istype(F))
F.blood_mix_color = blood_color
if(F && istype(F))
blood_color = F.blood_mix_color
else
for(var/datum/reagent/R in reagents.reagent_list)
// Get blood data from the blood reagent.
if(istype(R, /datum/reagent/blood))
if(R.data["blood_type"])
blood_color = bloodtype_to_color(R.data["blood_type"])
else if(istype(R, /datum/reagent/liquidgibs))
if(R.data["blood_type"])
blood_color = bloodtype_to_color(R.data["blood_type"])
color = blood_color
/obj/effect/decal/cleanable/blood/old
name = "dried blood"
desc = "Looks like it's been here a while. Eew."
@@ -91,6 +102,7 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
var/obj/item/clothing/shoes/S = H.shoes
if(S && S.blood_smear[blood_state])
S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0)
S.blood_color = blood_color
shoe_types |= S.type
if (!(entered_dirs & H.dir))
entered_dirs |= H.dir
@@ -99,6 +111,7 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
else if(!H.bloodiness)
H.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0)
H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0)
H.blood_color = blood_color
if (!(entered_dirs & H.dir))
entered_dirs |= H.dir
update_icon()
@@ -111,6 +124,7 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
var/obj/item/clothing/shoes/S = H.shoes
if(S && S.blood_smear[blood_state])
S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0)
S.blood_color = blood_color
shoe_types |= S.type
if (!(exited_dirs & H.dir))
exited_dirs |= H.dir
@@ -119,31 +133,29 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
else if(!H.bloodiness)
H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0)
H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0)
H.blood_color = blood_color
if (!(exited_dirs & H.dir))
exited_dirs |= H.dir
update_icon()
/obj/effect/decal/cleanable/blood/footprints/tracks/update_icon()
..()
cut_overlays()
for(var/Ddir in GLOB.cardinals)
GET_COMPONENT(B, /datum/component/forensics)
if(entered_dirs & Ddir)
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"]
if(!bloodstep_overlay)
GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir, color = blood_color)
bloodstep_overlay.Blend(blood_color, ICON_MULTIPLY)
GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir)
add_overlay(bloodstep_overlay)
if(exited_dirs & Ddir)
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"]
if(!bloodstep_overlay)
GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir, color = blood_color)
bloodstep_overlay.Blend(blood_color, ICON_MULTIPLY)
GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir)
add_overlay(bloodstep_overlay)
alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness
/obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user)
. = ..()
if(shoe_types.len && ishuman(user) && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant
+3 -3
View File
@@ -52,11 +52,10 @@
if(damaged_clothes)
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
if(bloody)
GET_COMPONENT(D, /datum/component/forensics)
if(adjusted == NORMAL_STYLE)
. += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = D.blood_mix_color)
. += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_color)
else
. += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = D.blood_mix_color)
. += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_color)
/obj/item/clothing/shoes/equipped(mob/user, slot)
. = ..()
@@ -97,6 +96,7 @@
return
blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
blood_state = BLOOD_STATE_NOT_BLOODY
blood_color = null
if(ismob(loc))
var/mob/M = loc
M.update_inv_shoes()
+1 -1
View File
@@ -234,7 +234,7 @@
if(ishuman(C))
var/mob/living/carbon/human/H = C
if(H.dna.species.exotic_blood)
return "[H.dna.species.exotic_blood]"
return H.dna.species.exotic_blood
if(dna.species.exotic_blood)
return dna.species.exotic_blood
else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE)))
@@ -64,6 +64,7 @@
FP.icon_state = FOOTPRINT_SHOE
FP.print_state = FOOTPRINT_SHOE
FP.blood_state = S.blood_state
FP.blood_color = S.blood_color
FP.entered_dirs |= dir
FP.bloodiness = S.blood_smear[S.blood_state]
FP.update_icon()
@@ -79,7 +80,8 @@
if(!has_gravity(loc))
return
var/turf/T = get_turf(src)
if(bloodiness)
var/mob/living/carbon/human/H = src
if(H.bloodiness)
var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T
if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == color))
return
@@ -106,6 +108,7 @@
FP.icon_state = FOOTPRINT_SHOE
FP.print_state = FOOTPRINT_SHOE
FP.add_blood_DNA(return_blood_DNA())
FP.blood_color = H.blood_color
FP.update_icon()
var/newdir = get_dir(T, loc)
if(newdir == dir)
@@ -124,6 +127,7 @@
if(!has_gravity(loc))
return
var/turf/T = get_turf(src)
var/mob/living/carbon/human/H = src
if(bloodiness)
var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T
if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == color))
@@ -133,6 +137,7 @@
FP.icon_state = FOOTPRINT_DRAG
FP.print_state = FOOTPRINT_DRAG
FP.add_blood_DNA(return_blood_DNA())
FP.blood_color = H.blood_color
FP.update_icon()
var/newdir = get_dir(T, loc)
if(newdir == dir)