diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 62dfe45d337..8abeaf92aef 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -353,10 +353,14 @@ #define BLOOD_LOSS_IN_SPREAD 20 #define BLOOD_AMOUNT_PER_DECAL 20 +//Blood smears +#define BLOOD_SPLATTER_ALPHA_SLIME 150 + //Bloody shoe blood states #define BLOOD_STATE_HUMAN "blood" #define BLOOD_STATE_XENO "xeno" #define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" +#define BLOOD_BASE_ALPHA "blood_alpha" //for obj explosion block calculation #define EXPLOSION_BLOCK_PROC -1 diff --git a/code/game/objects/effects/decals/Cleanable/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm index 1e758352fd0..c33969d1f40 100644 --- a/code/game/objects/effects/decals/Cleanable/aliens.dm +++ b/code/game/objects/effects/decals/Cleanable/aliens.dm @@ -43,6 +43,7 @@ desc = "It's a transparent semi-liquid from a slime or slime person. Don't lick it." basecolor = "#0b8f70" bloodiness = MAX_SHOE_BLOODINESS + alpha = BLOOD_SPLATTER_ALPHA_SLIME /obj/effect/decal/cleanable/blood/slime/can_bloodcrawl_in() return FALSE diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm index 2c6b2678e63..464d3e5a010 100644 --- a/code/game/objects/effects/decals/Cleanable/tracks.dm +++ b/code/game/objects/effects/decals/Cleanable/tracks.dm @@ -26,6 +26,7 @@ GLOBAL_LIST_EMPTY(fluidtrack_cache) basecolor = "#A10808" var/entered_dirs = 0 var/exited_dirs = 0 + var/base_alpha = BLOODY_FOOTPRINT_BASE_ALPHA blood_state = BLOOD_STATE_HUMAN //the icon state to load images from @@ -41,6 +42,7 @@ GLOBAL_LIST_EMPTY(fluidtrack_cache) hasfeet = FALSE if(S && S.bloody_shoes[blood_state] && S.blood_color == basecolor) S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) + S.bloody_shoes[BLOOD_BASE_ALPHA] = base_alpha if(!S.blood_DNA) S.blood_DNA = list() S.blood_DNA |= blood_DNA.Copy() @@ -49,6 +51,7 @@ GLOBAL_LIST_EMPTY(fluidtrack_cache) update_icon() else if(hasfeet && H.bloody_feet[blood_state] && H.feet_blood_color == basecolor)//Or feet //This will need to be changed. H.bloody_feet[blood_state] = max(H.bloody_feet[blood_state] - BLOOD_LOSS_PER_STEP, 0) + H.bloody_feet[BLOOD_BASE_ALPHA] = base_alpha if(!H.feet_blood_DNA) H.feet_blood_DNA = list() H.feet_blood_DNA |= blood_DNA.Copy() @@ -109,7 +112,7 @@ GLOBAL_LIST_EMPTY(fluidtrack_cache) I.color = basecolor overlays += I - alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness + alpha = base_alpha + bloodiness /proc/createFootprintsFrom(atom/movable/A, dir, turf/T) var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) @@ -118,6 +121,7 @@ GLOBAL_LIST_EMPTY(fluidtrack_cache) FP.blood_state = H.blood_state FP.bloodiness = H.bloody_feet[H.blood_state] - BLOOD_LOSS_IN_SPREAD FP.basecolor = H.feet_blood_color + FP.base_alpha = H.bloody_feet[BLOOD_BASE_ALPHA] if(H.blood_DNA) FP.blood_DNA = H.blood_DNA.Copy() else if(istype(A, /obj/item/clothing/shoes)) @@ -125,6 +129,7 @@ GLOBAL_LIST_EMPTY(fluidtrack_cache) FP.blood_state = S.blood_state FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD FP.basecolor = S.blood_color + FP.base_alpha = S.bloody_shoes[BLOOD_BASE_ALPHA] if(S.blood_DNA) FP.blood_DNA = S.blood_DNA.Copy() FP.entered_dirs |= dir diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 73d4290f3fb..90a5f13051a 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -28,6 +28,7 @@ add_blood = bloodiness bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS, S.bloody_shoes[blood_state] + add_blood) + S.bloody_shoes[BLOOD_BASE_ALPHA] = BLOODY_FOOTPRINT_BASE_ALPHA * (alpha/255) if(blood_DNA && blood_DNA.len) S.add_blood(H.blood_DNA, basecolor) S.blood_state = blood_state @@ -42,6 +43,7 @@ add_blood = bloodiness bloodiness -= add_blood H.bloody_feet[blood_state] = min(MAX_SHOE_BLOODINESS, H.bloody_feet[blood_state] + add_blood) + H.bloody_feet[BLOOD_BASE_ALPHA] = BLOODY_FOOTPRINT_BASE_ALPHA * (alpha/255) if(!H.feet_blood_DNA) H.feet_blood_DNA = list() H.blood_state = blood_state diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 2c375099b78..40e2b65232f 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -454,7 +454,7 @@ BLIND // can't see anything slot_flags = SLOT_FEET var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0, BLOOD_BASE_ALPHA = BLOODY_FOOTPRINT_BASE_ALPHA) permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN diff --git a/code/modules/detective_work/footprints_and_rag.dm b/code/modules/detective_work/footprints_and_rag.dm index 526be9fe66f..a8cb4fcf021 100644 --- a/code/modules/detective_work/footprints_and_rag.dm +++ b/code/modules/detective_work/footprints_and_rag.dm @@ -4,7 +4,7 @@ var/list/feet_blood_DNA var/feet_blood_color var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/bloody_feet = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/list/bloody_feet = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0, BLOOD_BASE_ALPHA = BLOODY_FOOTPRINT_BASE_ALPHA) /obj/item/clothing/gloves var/transfer_blood = 0 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index d12cc2b8402..c1fe84f7c12 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1466,7 +1466,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ if(clean_feet) feet_blood_color = null qdel(feet_blood_DNA) - bloody_feet = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0) + bloody_feet = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0, BLOOD_BASE_ALPHA = BLOODY_FOOTPRINT_BASE_ALPHA) blood_state = BLOOD_STATE_NOT_BLOODY update_inv_shoes() update_icons() //apply the now updated overlays to the mob