diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 61dff565af..317a105b2d 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -70,7 +70,6 @@ //Add "bloodiness" of this blood's type, to the human's shoes //This is on /cleanable because fuck this ancient mess /obj/effect/decal/cleanable/Crossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) @@ -84,28 +83,26 @@ S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) S.add_blood(blood_DNA) - S.blood_state = blood_state - S.blood_color = blood_color + S.blood_smear = blood_state update_icon() H.update_inv_shoes() - else if(H.bloodiness && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) + else if(!H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) var/add_blood = 0 - if(H.bloodiness >= 1) - add_blood = 5 + if(bloodiness >= BLOOD_GAIN_PER_STEP) + add_blood = BLOOD_GAIN_PER_STEP else add_blood = bloodiness bloodiness -= add_blood H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) - H.bloodiness = add_blood if(blood_DNA && blood_DNA.len) H.add_blood(blood_DNA) - H.blood_state = blood_state - H.blood_color = blood_color + H.blood_smear = blood_state update_icon() + H.update_inv_shoes() /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) return bloodiness else - return 0 + return FALSE diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 33d1e41bef..900f392796 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -30,10 +30,8 @@ GET_COMPONENT(infective, /datum/component/infective) if(infective) diseases = infective.diseases - var/obj/effect/decal/cleanable/blood/gibs/gibbers = src var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) - splat.color = gibbers.blood_color - splat.blood_color = gibbers.blood_color + splat.transfer_blood_dna(blood_DNA) if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 09b0ea034a..48670957cd 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -183,4 +183,65 @@ . = ..() reagents.add_reagent("liquidsyntheticgibs", 5) update_icon() - guts() \ No newline at end of file + guts() + +//IPCs +/obj/effect/decal/cleanable/blood/gibs/ipc + desc = "They look sharp yet oozing." + +/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidoilgibs", 5) + update_icon() + guts() + +/obj/effect/decal/cleanable/blood/gibs/ipc/guts() + if(gib_overlay) + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-ipcoverlay", color = blood_color, layer = -LOW_OBJ_LAYER) + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-ipcoverlay", color = body_colors, layer = -LOW_OBJ_LAYER) + if(!slimy_gibs) + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + else + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + add_overlay(gibz2) + +/obj/effect/decal/cleanable/blood/gibs/ipc/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidsyntheticgibs", 5) + update_icon() + guts() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index b4caf1230d..ec1f7578b5 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -81,31 +81,32 @@ random_icon_states = null var/entered_dirs = 0 var/exited_dirs = 0 - var/print_state = FOOTPRINT_SHOE //the icon state to load images from + blood_state = BLOOD_STATE_BLOOD //the icon state to load images from + var/print_state = FOOTPRINT_SHOE //the print state for different feet var/list/shoe_types = list() /obj/effect/decal/cleanable/blood/footprints/tracks/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.blood_smear[blood_state]) + if(color != bloodtype_to_color(S.last_bloodtype)) + return S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() - else if(H.bloodiness && H.blood_smear[blood_state]) + else if(H && H.blood_smear[blood_state]) + if(color != bloodtype_to_color(H.last_bloodtype)) + return H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - H.bloodiness = H.bloodinessmax if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() - /obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes @@ -118,9 +119,10 @@ exited_dirs |= H.dir update_icon() - else if(H.bloodiness && H.blood_smear[blood_state]) + else if(H && H.blood_smear[blood_state]) + if(color != bloodtype_to_color(H.last_bloodtype))//last entry - we check its color + return H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - H.bloodiness = H.bloodinessmax if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index bd49c44dd2..324436092d 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -1,6 +1,6 @@ /obj/effect/gibspawner - var/sparks = 0 //whether sparks spread + var/sparks = FALSE //whether sparks spread var/virusProb = 20 //the chance for viruses to spread on the gibs var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob. var/gib_mob_species //We'll want to nip-pick their species for blood type stuff @@ -37,7 +37,7 @@ if(ishuman(source_mob)) var/mob/living/carbon/human/H = source_mob if(H.dna.species.use_skintones) - body_coloring = skintone2hex(H.skin_tone) + body_coloring = "#[skintone2hex(H.skin_tone)]" else body_coloring = "#[H.dna.features["mcolor"]]" @@ -49,16 +49,18 @@ H.set_species(gib_mob_species) dna_to_add = temp_mob.get_blood_dna_list() if(H.dna.species.use_skintones) - body_coloring = skintone2hex(H.skin_tone) + body_coloring = "#[skintone2hex(H.skin_tone)]" else body_coloring = "#[H.dna.features["mcolor"]]" qdel(H) else dna_to_add = temp_mob.get_blood_dna_list() qdel(temp_mob) - else + else if(!issilicon(temp_mob)) dna_to_add = temp_mob.get_blood_dna_list() qdel(temp_mob) + else + qdel(temp_mob) else dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it. @@ -72,11 +74,12 @@ var/mob/living/carbon/digester = loc digester.stomach_contents += gib - gib.blood_DNA += dna_to_add - // color them properly, please. - if(gib.gib_overlay) - gib.body_colors = body_coloring - gib.update_icon() + if(dna_to_add) + gib.blood_DNA += dna_to_add + // color them properly, please. + if(gib.gib_overlay) + gib.body_colors = body_coloring + gib.update_icon() var/list/directions = gibdirections[i] if(isturf(loc)) @@ -128,13 +131,21 @@ /obj/effect/gibspawner/human/slimeperson gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core) - gib_mob_species = /datum/species/jelly /obj/effect/gibspawner/human/slimeperson/bodypartless gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/torso) gibamounts = list(2, 0, 1, 1, 2, 0) +/obj/effect/gibspawner/human/ipc + sparks = TRUE + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core) + gibamounts = list(1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/ipc + +/obj/effect/gibspawner/human/ipc/bodypartless + /obj/effect/gibspawner/xeno gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno) gibamounts = list(1, 1, 1, 1, 1, 1, 1) @@ -180,7 +191,7 @@ return ..() /obj/effect/gibspawner/robot - sparks = 1 + sparks = TRUE gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) gibamounts = list(1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/silicon @@ -191,6 +202,3 @@ gibamounts[6] = pick(0, 1, 2) return ..() -/obj/effect/gibspawner/robot/ipc - gib_mob_type = /mob/living/carbon/human - gib_mob_species = /datum/species/ipc diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index f782289e18..ed3280640a 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -49,6 +49,7 @@ //Gets filled up in create_bodyparts() var/list/hand_bodyparts = list() //a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems) + var/list/leg_bodyparts = list() var/icon_render_key = "" var/static/list/limb_icon_cache = list() diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 9c2a082b1f..01ea3d540e 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -12,7 +12,10 @@ new /obj/effect/gibspawner/human/slimeperson/bodypartless(drop_location(), dna, get_static_viruses()) if(isipcperson(src)) - new /obj/effect/gibspawner/robot/ipc(drop_location(), dna, get_static_viruses()) + if(with_bodyparts) + new /obj/effect/gibspawner/human/ipc(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/human/ipc/bodypartless(drop_location(), dna, get_static_viruses()) if(isxenoperson(src)) if(with_bodyparts) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index bbf77eb8b5..894f69ebbe 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -698,7 +698,6 @@ if(H.bloody_feet) H.bloody_feet = 0 H.update_inv_shoes() - bloodiness = 0 update_icons() //apply the now updated overlays to the mob diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 1fe16b3a2e..7819eb8356 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,13 +43,10 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding - var/bloodiness = 0 - var/bloodinessmax = 5 var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans var/last_blood_DNA = ""//same as last one 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/blood_color //For blood smearing stuff var/name_override //For temporary visible name changes diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 024f2590e7..01e81832ef 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -46,23 +46,21 @@ for(var/datum/mutation/human/HM in dna.mutations) HM.on_move(src, NewLoc) - if(!buckled) - if(shoes) - if(!lying) - if(loc == NewLoc) - if(!has_gravity(loc)) + if(shoes) + if(!lying && !buckled) + if(loc == NewLoc) + if(!has_gravity(loc)) + return + var/obj/item/clothing/shoes/S = shoes + //Bloody footprints + var/turf/T = get_turf(src) + var/step_print = dna.species.get_move_trail(src) + if(S.blood_smear && S.blood_smear[S.blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) return - var/obj/item/clothing/shoes/S = shoes - //Bloody footprints - var/turf/T = get_turf(src) - if(S.blood_smear && S.blood_smear[S.blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks/shoe) in T - if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) - return S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/shoe(T) - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.blood_smear[S.blood_state] @@ -71,31 +69,24 @@ //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood FP.update_icon() update_inv_shoes() - //End bloody footprints + //End bloody footprints - S.step_action() - else + S.step_action() + + else if(!shoes) + if(!buckled) if(loc == NewLoc) if(!has_gravity(loc)) return + //Bloody footprints without shoes var/turf/T = get_turf(src) var/step_print = dna.species.get_move_trail(src) - if(bloodiness && blood_smear[blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(step_print) in T + if(blood_smear && blood_smear[blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) return + blood_smear[blood_state] = max(0, blood_smear[blood_state]-BLOOD_LOSS_PER_STEP) var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None") && !lying) - 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 - if(!dna.species.move_trail && !lying) //we're assuming people have their chosen snowflake on, so. - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE - FP.blood_state = blood_state FP.entered_dirs |= dir FP.bloodiness = blood_smear[blood_state] @@ -103,7 +94,9 @@ FP.blood_DNA += list(last_blood_DNA = last_bloodtype) //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood FP.update_icon() - bloodiness-- + update_inv_shoes() + //End bloody footprints + /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/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index f1ea146927..f4c7a584d4 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -636,6 +636,12 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) bodyparts_to_add -= "taur" + if(H.dna.features["taur"] != "None") + if(H.dna.features["taur"] in GLOB.noodle_taurs) + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/snake + else if(H.dna.features["taur"] in GLOB.paw_taurs) + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw + //END EDIT //Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs. diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 2313dace89..946024760d 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -185,7 +185,7 @@ There are several things that need to be remembered: inv.update_icon() if(!gloves && bloody_hands) - var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER, color = blood_color) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER, color = blood_DNA_to_color()) if(get_num_arms() < 2) if(has_left_hand()) bloody_overlay.icon_state = "bloodyhands_left" @@ -276,6 +276,32 @@ There are several things that need to be remembered: var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() + if(!shoes && bloody_feet) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(dna.features["taur"] != "None") + if(dna.features["taur"] in GLOB.noodle_taurs) + bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "snekbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "snekbloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "snekbloodyfeet_right" + else if(dna.features["taur"] in GLOB.paw_taurs) + bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "pawbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "pawbloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "pawbloodyfeet_right" + else + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "bloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "bloodyfeet_right" + + overlays_standing[GLOVES_LAYER] = bloody_overlay + if(shoes) var/obj/item/clothing/shoes/S = shoes shoes.screen_loc = ui_shoes //move the item to the appropriate screen loc diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index a2e8017956..c6e2da0849 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -49,6 +49,27 @@ +/mob/proc/has_left_leg() + return TRUE + +/mob/living/carbon/has_left_leg() + var/obj/item/bodypart/l_leg = get_bodypart(BODY_ZONE_L_LEG) + if(l_leg) + return TRUE + else + return FALSE + +/mob/proc/has_right_leg() + return TRUE + +/mob/living/carbon/has_right_leg() + var/obj/item/bodypart/r_leg = get_bodypart(BODY_ZONE_R_LEG) + if(r_leg) + return TRUE + else + return FALSE + + //Limb numbers /mob/proc/get_num_arms(check_disabled = TRUE) return 2 diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 4812f95fc8..87da719441 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ