Files
warriorstar-orion 102f6ffa5b refactor: remove 'blood track' varedits and splatter color (#26237)
* refactor: remove 'blood track' varedits and splatter color

* script number

* Update code/game/objects/effects/decals/Cleanable/humans.dm

Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>
Signed-off-by: warriorstar-orion <orion@snowfrost.garden>

---------

Signed-off-by: warriorstar-orion <orion@snowfrost.garden>
Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>
2024-07-20 16:29:17 +00:00

162 lines
5.3 KiB
Plaintext

// 5 seconds
#define TRACKS_CRUSTIFY_TIME 50
#define ALWAYS_IN_GRAVITY 2
// color-dir-dry
GLOBAL_LIST_EMPTY(fluidtrack_cache)
// Footprints, tire trails...
/obj/effect/decal/cleanable/blood/tracks
icon = 'icons/effects/fluidtracks.dmi'
name = "wet tracks"
dryname = "dried tracks"
desc = "Whoops..."
drydesc = "Whoops..."
icon_state = "wheels1"
gender = PLURAL
random_icon_states = null
amount = 0
gravity_check = ALWAYS_IN_GRAVITY
/// Subtype of tracks used for decorating maps.
/obj/effect/decal/cleanable/blood/tracks/mapped
desc = "Your instincts say you shouldn't be following these."
drydesc = "Your instincts say you shouldn't be following these."
icon = 'icons/effects/blood.dmi'
icon_state = "tracks"
//BLOODY FOOTPRINTS
/obj/effect/decal/cleanable/blood/footprints
icon = 'icons/effects/fluidtracks.dmi'
icon_state = "nothingwhatsoever"
desc = "You REALLY shouldn't follow these.."
gender = PLURAL
random_icon_states = null
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
gravity_check = ALWAYS_IN_GRAVITY
/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O, oldloc)
..()
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
var/hasfeet = TRUE
if(!l_foot && !r_foot)
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()
if(!(entered_dirs & H.dir))
entered_dirs |= H.dir
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()
if(!(entered_dirs & H.dir))
entered_dirs |= H.dir
update_icon()
/obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O)
..()
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
var/hasfeet = TRUE
if(!l_foot && !r_foot)
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)
if(!S.blood_DNA)
S.blood_DNA = list()
S.blood_DNA |= blood_DNA.Copy()
if(!(exited_dirs & H.dir))
exited_dirs |= H.dir
update_icon()
else if(hasfeet && H.bloody_feet[blood_state] && H.feet_blood_color == basecolor)//Or feet
H.bloody_feet[blood_state] = max(H.bloody_feet[blood_state] - BLOOD_LOSS_PER_STEP, 0)
if(!H.feet_blood_DNA)
H.feet_blood_DNA = list()
H.feet_blood_DNA |= blood_DNA.Copy()
if(!(exited_dirs & H.dir))
exited_dirs |= H.dir
update_icon()
/obj/effect/decal/cleanable/blood/footprints/update_overlays()
. = ..()
for(var/Ddir in GLOB.cardinal)
if(entered_dirs & Ddir)
var/image/I
if(GLOB.fluidtrack_cache["entered-[blood_state]-[Ddir]"])
I = GLOB.fluidtrack_cache["entered-[blood_state]-[Ddir]"]
else
I = image(icon,"[blood_state]1",dir = Ddir)
GLOB.fluidtrack_cache["entered-[blood_state]-[Ddir]"] = I
if(I)
I.color = basecolor
. += I
if(exited_dirs & Ddir)
var/image/I
if(GLOB.fluidtrack_cache["exited-[blood_state]-[Ddir]"])
I = GLOB.fluidtrack_cache["exited-[blood_state]-[Ddir]"]
else
I = image(icon,"[blood_state]2",dir = Ddir)
GLOB.fluidtrack_cache["exited-[blood_state]-[Ddir]"] = I
if(I)
I.color = basecolor
. += I
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)
if(ishuman(A))
var/mob/living/carbon/human/H = A
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))
var/obj/item/clothing/shoes/S = A
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
FP.update_icon()
return FP
/obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/blood/footprints/C)
if(blood_state != C.blood_state) //We only replace footprints of the same type as us
return
..()
/obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in()
if(basecolor == COLOR_BLOOD_MACHINE)
return FALSE
return TRUE
#undef ALWAYS_IN_GRAVITY
#undef TRACKS_CRUSTIFY_TIME