diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 763e2df0802..b47def924e1 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,10 +1,11 @@ #define SEC_HUDTYPE "security" #define MED_HUDTYPE "medical" -/mob/living/carbon/human/proc/get_covered_body_parts() +/mob/living/carbon/human/proc/get_covered_body_parts(var/thick) var/skipbody = 0 for(var/obj/item/clothing/C in list(wear_suit, head, wear_mask, w_uniform, gloves, shoes)) - skipbody |= C.body_parts_covered + if(!thick || (C.item_flags & THICKMATERIAL)) + skipbody |= C.body_parts_covered return skipbody /mob/living/carbon/human/proc/get_covered_clothes() @@ -15,6 +16,7 @@ /mob/living/carbon/human/examine(mob/user) var/skipbody = get_covered_body_parts() + var/skipbody_thick = get_covered_body_parts(TRUE) var/skipitems = get_covered_clothes() //exosuits and helmets obscure our view and stuff. @@ -281,23 +283,26 @@ if(temp.body_part & HEAD) body_part &= ~HEAD body_part |= (temp.body_part & FACE) ? HEAD : 0 - if(skipbody & body_part) + if(skipbody_thick & body_part) continue - if(temp.status & ORGAN_ASSISTED) + var/thin_covering = (skipbody & body_part) ? TRUE : FALSE + if((temp.status & ORGAN_ASSISTED) && !thin_covering) if(!(temp.brute_dam + temp.burn_dam)) - //wound_flavor_text["[temp.name]"] = "[get_pronoun("He")] [get_pronoun("has")] a robot [temp.name]!\n" - // No need to notify about robotic limbs if they're not damaged, really. continue else wound_flavor_text["[temp.name]"] = "[get_pronoun("He")] [get_pronoun("has")] [temp.get_wounds_desc()] on [get_pronoun("his")] [temp.name].
" - else if(temp.wounds.len > 0 || temp.open) - if(temp.is_stump() && temp.parent_organ && organs_by_name[temp.parent_organ]) - var/obj/item/organ/external/parent = organs_by_name[temp.parent_organ] - wound_flavor_text["[temp.name]"] = "[get_pronoun("He")] [get_pronoun("has")] [temp.get_wounds_desc()] on [get_pronoun("his")] [parent.name].
" - else - wound_flavor_text["[temp.name]"] = "[get_pronoun("He")] [get_pronoun("has")] [temp.get_wounds_desc()] on [get_pronoun("his")] [temp.name].
" + else if(length(temp.wounds) || temp.open) + if(!thin_covering) + if(temp.is_stump() && temp.parent_organ && organs_by_name[temp.parent_organ]) + var/obj/item/organ/external/parent = organs_by_name[temp.parent_organ] + wound_flavor_text["[temp.name]"] = "[get_pronoun("He")] [get_pronoun("has")] [temp.get_wounds_desc()] on [get_pronoun("his")] [parent.name].
" + else + wound_flavor_text["[temp.name]"] = "[get_pronoun("He")] [get_pronoun("has")] [temp.get_wounds_desc()] on [get_pronoun("his")] [temp.name].
" if(temp.status & ORGAN_BLEEDING) - is_bleeding["[temp.name]"] = "[get_pronoun("His")] [temp.name] is bleeding!
" + if(thin_covering) + is_bleeding["[temp.body_part_class()]"] = "[get_pronoun("He")] [temp.covered_bleed_report(species.blood_type)]
" + else + is_bleeding["[temp.name]"] = "[get_pronoun("His")] [temp.name] is bleeding!
" else wound_flavor_text["[temp.name]"] = "" if(temp.dislocated == 2) @@ -309,8 +314,9 @@ //If they have something that covers the limb, and it is not missing, put flavortext. If it is covered but bleeding, add other flavortext. for(var/limb in wound_flavor_text) - msg += wound_flavor_text[limb] - is_bleeding[limb] = null + if(wound_flavor_text[limb]) + msg += wound_flavor_text[limb] + is_bleeding[limb] = null for(var/limb in is_bleeding) msg += is_bleeding[limb] for(var/obj/item/organ/external/organ in src.organs) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index f3a859f96ce..f13d879aacc 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -36,6 +36,7 @@ var/eyes_icons = 'icons/mob/human_face/eyes.dmi' // DMI file for eyes, mostly for none 32x32 species. var/has_floating_eyes // Eyes will overlay over darkness (glow) var/eyes_icon_blend = ICON_ADD // The icon blending mode to use for eyes. + var/blood_type = "blood" var/blood_color = "#A10808" // Red. var/flesh_color = "#FFC896" // Pink. var/examine_color // The color of the species' name in the examine text. Defaults to flesh_color if unset. diff --git a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm index 6e94de22733..fc01c21cfc5 100644 --- a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm +++ b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm @@ -106,6 +106,7 @@ character_color_presets = list("Default Bark" = "#000000", "Light Bark" = "#141414", "Brown Bark" = "#2b1d0e", "Green Bark" = "#001400") + blood_type = "sap" blood_color = COLOR_DIONA_BLOOD flesh_color = "#907E4A" diff --git a/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm b/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm index 2718d84d2c7..b925db62cd9 100644 --- a/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm +++ b/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm @@ -75,6 +75,7 @@ appearance_flags = HAS_SKIN_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_SOCKS spawn_flags = CAN_JOIN | IS_WHITELISTED | NO_AGE_MINIMUM + blood_type = "oil" blood_color = COLOR_IPC_BLOOD flesh_color = "#575757" reagent_tag = IS_MACHINE diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index a1bbe78ec15..b7b4b87c55e 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -692,6 +692,12 @@ Note that amputating the affected organ does in fact remove the infection from t germ_level++ owner.adjustToxLoss(1) +/obj/item/organ/external/proc/body_part_class() + return null + +/obj/item/organ/external/proc/covered_bleed_report(var/blood_type) + return "[owner.get_pronoun("has")] [blood_type] soaking through the clothes on their [src]!" + //Updating wounds. Handles wound natural I had some free spachealing, internal bleedings and infections /obj/item/organ/external/proc/update_wounds() diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index 273267a8566..36f9f2d58fc 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -21,6 +21,12 @@ encased = "ribcage" augment_limit = 3 +/obj/item/organ/external/chest/body_part_class() + return UPPER_TORSO + +/obj/item/organ/external/chest/covered_bleed_report(var/blood_type) + return "[owner.get_pronoun("has")] [blood_type] running down their thighs!" + /obj/item/organ/external/groin name = "lower body" limb_name = "groin" @@ -38,6 +44,12 @@ gendered_icon = 1 augment_limit = 3 +/obj/item/organ/external/groin/body_part_class() + return UPPER_TORSO + +/obj/item/organ/external/groin/covered_bleed_report(var/blood_type) + return "[owner.get_pronoun("has")] [blood_type] running down their thighs!" + /obj/item/organ/external/arm limb_name = "l_arm" name = "left arm" @@ -54,6 +66,12 @@ amputation_point = "left shoulder" augment_limit = 2 +/obj/item/organ/external/arm/body_part_class() + return ARMS + +/obj/item/organ/external/arm/covered_bleed_report(var/blood_type) + return "[owner.get_pronoun("has")] [blood_type] running down their sleeves!" + /obj/item/organ/external/arm/right limb_name = "r_arm" name = "right arm" @@ -81,6 +99,12 @@ limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_BREAK | ORGAN_CAN_MAIM | ORGAN_HAS_TENDON augment_limit = 2 +/obj/item/organ/external/leg/body_part_class() + return LEGS + +/obj/item/organ/external/leg/covered_bleed_report(var/blood_type) + return "[owner.get_pronoun("has")] [blood_type] pooling at their feet!" + /obj/item/organ/external/leg/right limb_name = "r_leg" name = "right leg" @@ -106,6 +130,12 @@ maim_bonus = 1 augment_limit = 1 +/obj/item/organ/external/foot/body_part_class() + return LEGS + +/obj/item/organ/external/foot/covered_bleed_report(var/blood_type) + return "[owner.get_pronoun("has")] [blood_type] pooling at their feet!" + /obj/item/organ/external/foot/removed() if(owner) owner.drop_from_inventory(owner.shoes) @@ -137,6 +167,12 @@ maim_bonus = 1 augment_limit = 1 +/obj/item/organ/external/hand/body_part_class() + return ARMS + +/obj/item/organ/external/hand/covered_bleed_report(var/blood_type) + return "[owner.get_pronoun("has")] [blood_type] running down their sleeves!" + /obj/item/organ/external/hand/take_damage(brute, burn, damage_flags, used_weapon, list/forbidden_limbs, silent) . = ..() owner.update_hud_hands() @@ -181,6 +217,12 @@ augment_limit = 3 var/can_intake_reagents = 1 +/obj/item/organ/external/head/body_part_class() + return HEAD + +/obj/item/organ/external/head/covered_bleed_report(var/blood_type) + return "[owner.get_pronoun("has")] [blood_type] running down their neck!" + /obj/item/organ/external/head/removed() if(owner) name = "[owner.real_name]'s head" diff --git a/html/changelogs/geeves-bleedy_boye.yml b/html/changelogs/geeves-bleedy_boye.yml new file mode 100644 index 00000000000..687c802ea8d --- /dev/null +++ b/html/changelogs/geeves-bleedy_boye.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "A bleeding bodypart covered by a piece of clothing that isn't thick will now give a rough indication that it's bleeding when its owner is examined." \ No newline at end of file