From 2b30d47bd04a7ec0d088e29abf37159a91d59d63 Mon Sep 17 00:00:00 2001 From: Alberyk Date: Sun, 16 Sep 2018 11:01:13 -0300 Subject: [PATCH] Blood and tracks improvements (#5278) -ports a fix from eris that stops people from creating tracks when walking over open spaces, and allows blood and etc to fall down if someone is bleeding while floating on an open space -ports species based tracks from baystation, adding paw and talon-like tracks when walking barefoot -fixes the green glow mess not going away after some time, like it should --- .../effects/decals/Cleanable/humans.dm | 9 ++++++ .../objects/effects/decals/Cleanable/misc.dm | 10 +++---- .../effects/decals/Cleanable/tracks.dm | 29 +++++++++++++++---- code/game/turfs/simulated.dm | 4 +-- .../carbon/human/species/outsider/shadow.dm | 2 ++ .../carbon/human/species/outsider/vox.dm | 2 ++ .../living/carbon/human/species/species.dm | 8 +++++ .../carbon/human/species/station/monkey.dm | 4 +++ .../carbon/human/species/station/station.dm | 6 ++++ .../human/species/xenomorphs/alien_species.dm | 2 ++ code/modules/multiz/turfs/open_space.dm | 3 ++ html/changelogs/alberyk-blood.yml | 6 ++++ 12 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 html/changelogs/alberyk-blood.yml 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."