diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 67b50d62762..26d8f15025e 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -41,6 +41,7 @@ /obj/effect/decal/cleanable/blood/Initialize(mapload) . = ..() + fall_to_floor() update_icon() if(istype(src, /obj/effect/decal/cleanable/blood/gibs)) return @@ -230,6 +231,14 @@ if (step_to(src, get_step(src, direction), 0)) break +/obj/effect/decal/cleanable/blood/proc/fall_to_floor() + if (isopenturf(loc)) + anchored = FALSE + ADD_FALLING_ATOM(src) + +/obj/effect/decal/cleanable/blood/fall_impact() + . = ..() + anchored = initial(anchored) /obj/effect/decal/cleanable/mucus name = "mucus" diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 41106a3b4fa..363e3004596 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -60,7 +60,7 @@ /obj/effect/decal/cleanable/greenglow/Initialize(mapload) . = ..() - if (!ROUND_IS_STARTED) // Round-start goo should stick around. + if (!mapload) // Round-start goo should stick around. QDEL_IN(src, 2 MINUTES) /obj/effect/decal/cleanable/cobweb @@ -103,10 +103,10 @@ random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4") var/list/viruses = list() - Destroy() - for(var/datum/disease/D in viruses) - D.cure(0) - return ..() +/obj/effect/decal/cleanable/vomit/Destroy() + for(var/datum/disease/D in viruses) + D.cure(0) + return ..() /obj/effect/decal/cleanable/tomato_smudge name = "tomato smudge" diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm index 699b06e7d9c..3f4ff541306 100644 --- a/code/game/objects/effects/decals/Cleanable/tracks.dm +++ b/code/game/objects/effects/decals/Cleanable/tracks.dm @@ -151,8 +151,8 @@ /obj/effect/decal/cleanable/blood/tracks/footprints name = "wet footprints" dryname = "dried footprints" - desc = "Whoops..." - drydesc = "Whoops..." + desc = "They look like still wet tracks left by footwear." + drydesc = "They look like dried tracks left by footwear." coming_state = "human1" going_state = "human2" amount = 0 @@ -160,11 +160,30 @@ /obj/effect/decal/cleanable/blood/tracks/wheels name = "wet tracks" dryname = "dried tracks" - desc = "Whoops..." - drydesc = "Whoops..." + desc = "They look like still wet tracks left by wheels." + drydesc = "They look like dried tracks left by wheels." coming_state = "wheels" going_state = "" - desc = "They look like tracks left by wheels." gender = PLURAL random_icon_states = null amount = 0 + +/obj/effect/decal/cleanable/blood/tracks/paw + name = "wet tracks" + dryname = "dried tracks" + desc = "They look like still wet tracks left by paws." + drydesc = "They look like dried tracks left by paws." + coming_state = "paw1" + going_state = "paw2" + random_icon_states = null + amount = 0 + +/obj/effect/decal/cleanable/blood/tracks/claw + name = "wet tracks" + dryname = "dried tracks" + desc = "They look like still wet tracks left by claws." + drydesc = "They look like dried tracks left by claws." + coming_state = "claw1" + going_state = "claw2" + random_icon_states = null + amount = 0 \ No newline at end of file diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 8b33aa6333e..945acf4d9b4 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -118,10 +118,10 @@ H.track_blood-- if(bloodDNA) - src.AddTracks(/obj/effect/decal/cleanable/blood/tracks/footprints,bloodDNA,H.dir,0,bloodcolor) // Coming + src.AddTracks(H.species.get_move_trail(H),bloodDNA,H.dir,0,bloodcolor) // Coming var/turf/simulated/from = get_step(H,reverse_direction(H.dir)) if(istype(from) && from) - from.AddTracks(/obj/effect/decal/cleanable/blood/tracks/footprints,bloodDNA,0,H.dir,bloodcolor) // Going + from.AddTracks(H.species.get_move_trail(H),bloodDNA,0,H.dir,bloodcolor) // Going bloodDNA = null diff --git a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm index 6b72d394bd2..6c9464c5ba6 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm @@ -87,6 +87,8 @@ /mob/living/carbon/human/proc/shadow_step ) + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + /datum/species/shadow/handle_death(var/mob/living/carbon/human/H) spawn(1) new /obj/effect/decal/cleanable/ash(H.loc) diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm index d65e9677a2c..4a2d3a64ac2 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -65,6 +65,8 @@ "stack" = /obj/item/organ/stack/vox ) + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + /datum/species/vox/get_random_name(var/gender) var/datum/language/species_language = all_languages[default_language] return species_language.get_random_name(gender) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index f27fabdb730..fa1f84971db 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -190,6 +190,8 @@ var/pass_flags = 0 + var/obj/effect/decal/cleanable/blood/tracks/move_trail = /obj/effect/decal/cleanable/blood/tracks/footprints // What marks are left when walking + /datum/species/proc/get_eyes(var/mob/living/carbon/human/H) return @@ -484,3 +486,9 @@ /datum/species/proc/can_breathe_water() return FALSE + +/datum/species/proc/get_move_trail(var/mob/living/carbon/human/H) + if( H.shoes || ( H.wear_suit && (H.wear_suit.body_parts_covered & FEET) ) ) + return /obj/effect/decal/cleanable/blood/tracks/footprints + else + return move_trail \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm index e13fc90299f..7083f723276 100644 --- a/code/modules/mob/living/carbon/human/species/station/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm @@ -70,6 +70,8 @@ tail = "farwatail" holder_type = /obj/item/weapon/holder/monkey/farwa + move_trail = /obj/effect/decal/cleanable/blood/tracks/paw + /datum/species/monkey/tajaran/get_random_name() return "farwa ([rand(100,999)])" // HACK HACK HACK, oh lords of coding please forgive me! @@ -115,6 +117,8 @@ holder_type = /obj/item/weapon/holder/monkey/stok fall_mod = 0.75 + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + /datum/species/monkey/bug name = "V'krexi" short_name = "kre" diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 65454997489..638c94191b4 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -117,6 +117,8 @@ "Your scales bristle against the cold." ) + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + /datum/species/unathi/equip_survival_gear(var/mob/living/carbon/human/H) ..() var/obj/item/clothing/shoes/sandal/S = new /obj/item/clothing/shoes/sandal(H) @@ -185,6 +187,8 @@ ) cold_discomfort_level = 275 + move_trail = /obj/effect/decal/cleanable/blood/tracks/paw + /datum/species/tajaran/equip_survival_gear(var/mob/living/carbon/human/H) ..() var/obj/item/clothing/shoes/sandal/S = new /obj/item/clothing/shoes/sandal(H) @@ -714,6 +718,8 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H) "eyes" = /obj/item/organ/eyes/vaurca ) + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + /datum/species/bug/equip_survival_gear(var/mob/living/carbon/human/H) if(H.backbag == 1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/vaurca(H), slot_r_hand) diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm index a9ea378dd0c..05502be658b 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm @@ -86,6 +86,8 @@ swap_flags = ~HEAVY push_flags = (~HEAVY) ^ ROBOT + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + var/alien_number = 0 var/caste_name = "creature" // Used to update alien name. var/weeds_heal_rate = 1 // Health regen on weeds. diff --git a/code/modules/multiz/turfs/open_space.dm b/code/modules/multiz/turfs/open_space.dm index b1750e990d2..f275e0b7b66 100644 --- a/code/modules/multiz/turfs/open_space.dm +++ b/code/modules/multiz/turfs/open_space.dm @@ -221,3 +221,6 @@ //Most things use is_plating to test if there is a cover tile on top (like regular floors) /turf/simulated/open/is_plating() return TRUE + +/turf/simulated/open/AddTracks(var/list/DNA, var/comingdir, var/goingdir, var/bloodcolor="#A10808") + return \ No newline at end of file diff --git a/html/changelogs/alberyk-blood.yml b/html/changelogs/alberyk-blood.yml new file mode 100644 index 00000000000..728839c0897 --- /dev/null +++ b/html/changelogs/alberyk-blood.yml @@ -0,0 +1,6 @@ +author: Alberyk + +delete-after: True + +changes: + - rscadd: "Added some species related blood tracks."