what to do when footprints are being a bitch.
why, we get rid of them :honk:
This commit is contained in:
@@ -324,18 +324,14 @@
|
||||
return list("ANIMAL DNA" = "Y-")
|
||||
|
||||
/mob/living/carbon/get_blood_dna_list()
|
||||
for(var/bluhduh in GLOB.blood_types)
|
||||
if(get_blood_id() != bluhduh) //are we a null for blood type?
|
||||
var/list/dna_to_add
|
||||
dna_to_add = list("Non-human DNA" = random_blood_type()) //generate a random bloodtype for it.
|
||||
return dna_to_add
|
||||
|
||||
var/list/blood_dna = list()
|
||||
if(dna)
|
||||
blood_dna[dna.unique_enzymes] = dna.blood_type
|
||||
else
|
||||
blood_dna["UNKNOWN DNA"] = "X*"
|
||||
return blood_dna
|
||||
if(get_blood_id() != "blood")
|
||||
return
|
||||
var/list/blood_dna = list()
|
||||
if(dna)
|
||||
blood_dna[dna.unique_enzymes] = dna.blood_type
|
||||
else
|
||||
blood_dna["UNKNOWN DNA"] = "X*"
|
||||
return blood_dna
|
||||
|
||||
/mob/living/carbon/alien/get_blood_dna_list()
|
||||
return list("UNKNOWN DNA" = "X*")
|
||||
@@ -343,7 +339,7 @@
|
||||
//to add a mob's dna info into an object's blood_DNA list.
|
||||
/atom/proc/transfer_mob_blood_dna(mob/living/L)
|
||||
// Returns 0 if we have that blood already
|
||||
var/list/new_blood_dna = L.get_blood_dna_list()
|
||||
var/new_blood_dna = L.get_blood_dna_list()
|
||||
if(!new_blood_dna)
|
||||
return FALSE
|
||||
var/old_length = blood_DNA_length()
|
||||
@@ -352,6 +348,15 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
//to add blood dna info to the object's blood_DNA list
|
||||
/atom/proc/transfer_blood_dna(list/blood_dna)
|
||||
if(!blood_DNA)
|
||||
blood_DNA = list()
|
||||
var/old_length = blood_DNA_length()
|
||||
blood_DNA |= blood_dna
|
||||
if(blood_DNA_length() > old_length)
|
||||
return TRUE//some new blood DNA was added
|
||||
|
||||
//to add blood from a mob onto something, and transfer their dna info
|
||||
/atom/proc/add_mob_blood(mob/living/M)
|
||||
var/list/blood_dna = M.get_blood_dna_list()
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
sleep(2)
|
||||
if(i > 0)
|
||||
var/obj/effect/decal/cleanable/blood/splatter/splat = new(loc)
|
||||
splat.transfer_mob_blood_dna(blood_DNA)
|
||||
splat.transfer_blood_dna(blood_DNA)
|
||||
if(!step_to(src, get_step(src, direction), 0))
|
||||
break
|
||||
|
||||
@@ -158,16 +158,16 @@
|
||||
random_icon_states = null
|
||||
var/entered_dirs = 0
|
||||
var/exited_dirs = 0
|
||||
var/foot_state
|
||||
blood_state = BLOOD_STATE_BLOOD //the icon state to load images from
|
||||
var/list/shoe_types = list()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O)
|
||||
..()
|
||||
if(ishuman(O))
|
||||
var/mob/living/carbon/human/H = O
|
||||
var/obj/item/clothing/shoes/S = H.shoes
|
||||
if(S && S.bloody_shoes[blood_state])
|
||||
if(color != bloodtype_to_color(S.last_bloodtype))
|
||||
return
|
||||
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
|
||||
shoe_types |= S.type
|
||||
if (!(entered_dirs & H.dir))
|
||||
@@ -175,20 +175,19 @@
|
||||
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
|
||||
if(S && S.bloody_shoes[blood_state])
|
||||
if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color
|
||||
return
|
||||
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
|
||||
shoe_types |= S.type
|
||||
if (!(exited_dirs & H.dir))
|
||||
exited_dirs |= H.dir
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/blood/footprints/update_icon()
|
||||
..()
|
||||
cut_overlays()
|
||||
|
||||
for(var/Ddir in GLOB.cardinals)
|
||||
@@ -203,8 +202,7 @@
|
||||
GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir)
|
||||
add_overlay(bloodstep_overlay)
|
||||
|
||||
alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness
|
||||
|
||||
alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness
|
||||
|
||||
/obj/effect/decal/cleanable/blood/footprints/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -56,17 +56,18 @@
|
||||
//Bloody footprints
|
||||
var/turf/T = get_turf(src)
|
||||
if(S.bloody_shoes && S.bloody_shoes[S.blood_state])
|
||||
for(var/obj/effect/decal/cleanable/blood/footprints/oldFP in T)
|
||||
for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T)
|
||||
if (oldFP.blood_state == S.blood_state)
|
||||
return
|
||||
//No oldFP or they're all a different kind of blood
|
||||
S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP)
|
||||
if (S.bloody_shoes[S.blood_state] > BLOOD_LOSS_IN_SPREAD)
|
||||
var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T)
|
||||
var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks(T)
|
||||
FP.blood_state = S.blood_state
|
||||
FP.entered_dirs |= dir
|
||||
FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD
|
||||
FP.add_blood_DNA(S.return_blood_DNA())
|
||||
FP.transfer_blood_dna(S.blood_DNA)
|
||||
FP.color = blood_DNA_to_color() //Color the blood with our dna stuff
|
||||
FP.update_icon()
|
||||
update_inv_shoes()
|
||||
//End bloody footprints
|
||||
|
||||
BIN
icons/effects/fluidtracks.dmi
Normal file
BIN
icons/effects/fluidtracks.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB |
Reference in New Issue
Block a user