From fe6407d00c9a1c1b3a332f61a986f6138399f24e Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 17 Apr 2019 04:33:56 -0500 Subject: [PATCH] I need to do something else for a bit pending reviews --- code/__DEFINES/footsteps.dm | 8 ++ code/__HELPERS/_cit_helpers.dm | 20 +++ .../effects/decals/cleanable/humans.dm | 75 +++++++--- .../effects/decals/cleanable/tracks.dm | 136 ++++++++++++++++++ code/modules/clothing/suits/_suits.dm | 4 +- .../mob/living/carbon/human/human_defines.dm | 3 + .../mob/living/carbon/human/human_movement.dm | 65 ++++++++- code/modules/surgery/bodyparts/bodyparts.dm | 4 + icons/effects/fluidtracks.dmi | Bin 10964 -> 13403 bytes 9 files changed, 290 insertions(+), 25 deletions(-) diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm index e66d518644..56dfbe155d 100644 --- a/code/__DEFINES/footsteps.dm +++ b/code/__DEFINES/footsteps.dm @@ -7,6 +7,14 @@ #define FOOTSTEP_WATER "water" #define FOOTSTEP_LAVA "lava" +#define FOOTPRINT_SHOE "shoe" +#define FOOTPRINT_PAW "paw" +#define FOOTPRINT_CLAW "claw" +#define FOOTPRINT_WHEEL "wheels" +#define FOOTPRINT_TRAIL "trails_" +#define FOOTPRINT_SNAKE "snake" +#define FOOTPRINT_DRAG "drag" + /* id = list( diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index c9e2f465cf..f6d82ed93a 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -92,6 +92,26 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors "Purple" = "#e300ff"//purple )) +GLOBAL_LIST_INIT(noodle_taurs, list( + "Naga", + "Tentacle" + )) + +GLOBAL_LIST_INIT(paw_taurs, list( + "Fox", + "Wolf", + "Otie", + "Drake", + "Lab", + "Shepherd", + "Husky", + "Eevee", + "Panther", + "Horse", + "Cow", + "Tiger" + )) + //Crew objective and miscreants stuff GLOBAL_VAR_INIT(miscreants_allowed, FALSE) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index e19e25293f..46928078e3 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -39,11 +39,6 @@ /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") -/obj/effect/decal/cleanable/blood/tracks - icon_state = "tracks" - desc = "They look like tracks left by wheels." - random_icon_states = null - /obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters name = "blood" icon_state = "ltrails_1" @@ -150,19 +145,18 @@ //BLOODY FOOTPRINTS -/obj/effect/decal/cleanable/blood/footprints - name = "footprints" - icon = 'icons/effects/footprints.dmi' +/obj/effect/decal/cleanable/blood/tracks + name = "tracks" + icon = 'icons/effects/fluidtracks.dmi' icon_state = "nothingwhatsoever" desc = "WHOSE FOOTPRINTS ARE THESE?" 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/print_state = FOOTPRINT_SHOE //the icon state to load images from var/list/shoe_types = list() -/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) +/obj/effect/decal/cleanable/blood/tracks/Crossed(atom/movable/O) ..() if(ishuman(O)) var/mob/living/carbon/human/H = O @@ -174,7 +168,7 @@ entered_dirs |= H.dir update_icon() -/obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O) +/obj/effect/decal/cleanable/blood/tracks/Uncrossed(atom/movable/O) ..() if(ishuman(O)) var/mob/living/carbon/human/H = O @@ -187,24 +181,24 @@ update_icon() -/obj/effect/decal/cleanable/blood/footprints/update_icon() +/obj/effect/decal/cleanable/blood/tracks/update_icon() cut_overlays() for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]1", dir = Ddir) + GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir) + GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness -/obj/effect/decal/cleanable/blood/footprints/examine(mob/user) +/obj/effect/decal/cleanable/blood/tracks/examine(mob/user) . = ..() if(shoe_types.len) . += "You recognise the footprints as belonging to:\n" @@ -214,14 +208,51 @@ to_chat(user, .) -/obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/C) +/obj/effect/decal/cleanable/blood/tracks/replace_decal(obj/effect/decal/cleanable/C) if(blood_state != C.blood_state) //We only replace footprints of the same type as us return if(color != C.color) return ..() -/obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in() +/obj/effect/decal/cleanable/blood/tracks/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) - return 1 - return 0 + return TRUE + return FALSE + +/obj/effect/decal/cleanable/blood/tracks/footprints + name = "footprints" + desc = "They look like tracks left by footwear." + icon_state = FOOTPRINT_SHOE + print_state = FOOTPRINT_SHOE + +/obj/effect/decal/cleanable/blood/tracks/snake + name = "tracks" + desc = "They look like tracks left by a giant snake." + icon_state = FOOTPRINT_SNAKE + print_state = FOOTPRINT_SNAKE + +/obj/effect/decal/cleanable/blood/tracks/paw + name = "tracks" + desc = "They look like tracks left by mammalian paws." + icon_state = FOOTPRINT_PAW + print_state = FOOTPRINT_PAW + +/obj/effect/decal/cleanable/blood/tracks/claw + name = "tracks" + desc = "They look like tracks left by reptilian claws." + icon_state = FOOTPRINT_CLAW + print_state = FOOTPRINT_CLAW + +/obj/effect/decal/cleanable/blood/tracks/wheels + name = "tracks" + desc = "They look like tracks left by wheels." + gender = PLURAL + icon_state = FOOTPRINT_WHEEL + print_state = FOOTPRINT_WHEEL + +/obj/effect/decal/cleanable/blood/tracks/body + name = "trails" + desc = "A trail left by something being dragged." + icon_state = FOOTPRINT_DRAG + print_state = FOOTPRINT_DRAG diff --git a/code/game/objects/effects/decals/cleanable/tracks.dm b/code/game/objects/effects/decals/cleanable/tracks.dm index e69de29bb2..215ad98bfb 100644 --- a/code/game/objects/effects/decals/cleanable/tracks.dm +++ b/code/game/objects/effects/decals/cleanable/tracks.dm @@ -0,0 +1,136 @@ +// Stolen en masse from N3X15 of /vg/station with much gratitude. + +// The idea is to have 4 bits for coming and 4 for going. +#define TRACKS_COMING_NORTH 1 +#define TRACKS_COMING_SOUTH 2 +#define TRACKS_COMING_EAST 4 +#define TRACKS_COMING_WEST 8 +#define TRACKS_GOING_NORTH 16 +#define TRACKS_GOING_SOUTH 32 +#define TRACKS_GOING_EAST 64 +#define TRACKS_GOING_WEST 128 + +// color-dir-dry +var/global/list/image/fluidtrack_cache=list() + +/datum/fluidtrack + var/direction=0 + var/basecolor=COLOR_BLOOD_HUMAN + var/image/overlay + +/datum/fluidtrack/New(_direction,_color,_wet) + src.direction=_direction + src.basecolor=_color + +// Footprints, tire trails... +/obj/effect/decal/cleanable/blood/tracks + amount = 0 + random_icon_states = null + var/dirs=0 + icon = 'icons/effects/fluidtracks.dmi' + icon_state = "" + var/coming_state="blood1" + var/going_state="blood2" + var/updatedtracks=0 + + // dir = id in stack + var/list/setdirs=list( + "1"=0, + "2"=0, + "4"=0, + "8"=0, + "16"=0, + "32"=0, + "64"=0, + "128"=0 + ) + + // List of laid tracks and their colors. + var/list/datum/fluidtrack/stack=list() + + /** + * Add tracks to an existing trail. + * + * @param DNA bloodDNA to add to collection. + * @param comingdir Direction tracks come from, or 0. + * @param goingdir Direction tracks are going to (or 0). + * @param bloodcolor Color of the blood when wet. + */ +/obj/effect/decal/cleanable/blood/tracks/proc/AddTracks(var/list/DNA, var/comingdir, var/goingdir, var/bloodcolor=BLOOD_COLOR_HUMAN) + var/updated=0 + // Shift our goingdir 4 spaces to the left so it's in the GOING bitblock. + var/realgoing=goingdir<<4 + + // Current bit + var/b=0 + + var/datum/fluidtrack/track + + // Process 4 bits + for(var/bi=0;bi<4;bi++) + b=1<>4 + + if(track.overlay) + track.overlay=null + var/image/I = image(icon, icon_state=state, dir=num2dir(truedir)) + I.color = track.basecolor + + track.fresh=0 + track.overlay=I + stack[stack_idx]=track + overlays += I + updatedtracks=0 // Clear our memory of updated tracks. + diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 0a44b57c6a..f4fe92e86b 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -31,12 +31,12 @@ H.update_inv_wear_suit() if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None")) - if(H.dna.features["taur"] in list("Naga", "Tentacle")) + if(H.dna.features["taur"] in GLOB.noodle_taurs) taurmode = SNEK_TAURIC if(tauric == TRUE) center = TRUE dimension_x = 64 - else if(H.dna.features["taur"] in list("Fox","Wolf","Otie","Drake","Lab","Shepherd","Husky","Eevee","Panther","Horse","Cow","Tiger")) + else if(H.dna.features["taur"] in GLOB.paw_taurs) taurmode = PAW_TAURIC if(tauric == TRUE) center = TRUE diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 4f168d97fc..ed632c24d5 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,6 +43,9 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/name_override //For temporary visible name changes var/nameless = FALSE //For drones of both the insectoid and robotic kind. And other types of nameless critters. diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index a753df95bf..5ef1223abe 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -62,7 +62,7 @@ //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/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks(T) + var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD @@ -72,6 +72,69 @@ update_inv_shoes() //End bloody footprints S.step_action() + else + if(!buckled) + + if(!lying) + if(loc == NewLoc) + if(!has_gravity(loc)) + return + var/turf/T = get_turf(src) + if(blood_smear && blood_smear[blood_state]) + for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T) + if (oldFP.blood_state == blood_state) + return + blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) + if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) + var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) + if(DIGITIGRADE in dna.species.species_traits) + if(dna.species.id == ("lizard" || "ashwalker" || "xeno")) + FP.icon_state = FOOTPRINT_CLAW + FP.print_state = FOOTPRINT_CLAW + else if(dna.species.id == "Mammal") + FP.icon_state = FOOTPRINT_PAW + FP.print_state = FOOTPRINT_PAW + else + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE + else if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None")) + if(dna.features["taur"] in GLOB.noodle_taurs) + FP.icon_state = FOOTPRINT_SNAKE + FP.print_state = FOOTPRINT_SNAKE + else if(dna.features["taur"] in GLOB.paw_taurs) + FP.icon_state = FOOTPRINT_PAW + FP.print_state = FOOTPRINT_PAW + else + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE + FP.blood_state = blood_state + FP.entered_dirs |= dir + FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD + FP.transfer_blood_dna(blood_DNA) + FP.color = blood_DNA_to_color() //Color the blood with our dna stuff + FP.update_icon() + + else //we're on the floor, smear some stuff around + if(loc == NewLoc) + if(!has_gravity(loc)) + return + var/turf/T = get_turf(src) + if(blood_smear && blood_smear[blood_state]) + for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T) + if (oldFP.blood_state == blood_state) + return + blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) + if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) + var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) + FP.icon_state = FOOTPRINT_DRAG + FP.print_state = FOOTPRINT_DRAG + FP.blood_state = blood_state + FP.entered_dirs |= dir + FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD + FP.transfer_blood_dna(blood_DNA) + FP.color = blood_DNA_to_color() //Color the blood with our dna stuff + FP.update_icon() + /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index f394351285..7cdc5fb88f 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -680,6 +680,8 @@ px_y = 12 stam_heal_tick = 2 max_stamina_damage = 50 + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/bloody_legs = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) /obj/item/bodypart/l_leg/set_disabled(new_disabled = TRUE) ..() @@ -727,6 +729,8 @@ px_y = 12 max_stamina_damage = 50 stam_heal_tick = 2 + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/bloody_legs = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) /obj/item/bodypart/r_leg/set_disabled(new_disabled = TRUE) ..() diff --git a/icons/effects/fluidtracks.dmi b/icons/effects/fluidtracks.dmi index 54f08c705a908e42b531dbf7629582d80fc185d8..01335f3daf26f96e4eb476c85b34ea2a81ebda08 100644 GIT binary patch literal 13403 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©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 JtHg`~{|B?(Amac4