diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 17b1c1c6d03..8e7b7ba2a81 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -238,6 +238,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Prevents mob from riding mobs when buckled onto something #define TRAIT_CANT_RIDE "cant_ride" +#define TRAIT_NOBLEED "nobleed" //This carbon doesn't bleed + // You can stare into the abyss, but it does not stare back. // You're immune to the hallucination effect of the supermatter, either // through force of will, or equipment. Present on /mob or /datum/mind diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index f68f5e39c74..4826bc566e3 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -155,7 +155,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_GRABWEAKNESS" = TRAIT_GRABWEAKNESS, "TRAIT_SNOB" = TRAIT_SNOB, "TRAIT_BALD" = TRAIT_BALD, - "TRAIT_BADTOUCH" = TRAIT_BADTOUCH + "TRAIT_BADTOUCH" = TRAIT_BADTOUCH, + "TRAIT_NOBLEED" = TRAIT_NOBLEED ), /obj/item/bodypart = list( diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index b698fcd95cc..e6deb3eb0c3 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -110,7 +110,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 if(ishuman(loc)) var/mob/living/carbon/human/H = loc loc.layer = LARGE_MOB_LAYER //NO HIDING BEHIND PLANTS FOR YOU, DICKWEED (HA GET IT, BECAUSE WEEDS ARE PLANTS) - H.bleedsuppress = TRUE //AND WE WON'T BLEED OUT LIKE COWARDS + ADD_TRAIT(H, TRAIT_NOBLEED, HIGHLANDER) //AND WE WON'T BLEED OUT LIKE COWARDS else if(!(flags_1 & ADMIN_SPAWNED_1)) qdel(src) diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm index 76c8b0d4fe4..ed74993bc4b 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -60,6 +60,7 @@ petrified_mob.status_flags &= ~GODMODE petrified_mob.forceMove(loc) REMOVE_TRAIT(petrified_mob, TRAIT_MUTE, STATUE_MUTE) + REMOVE_TRAIT(petrified_mob, TRAIT_NOBLEED, MAGIC_TRAIT) petrified_mob.take_overall_damage((petrified_mob.health - obj_integrity + 100)) //any new damage the statue incurred is transfered to the mob petrified_mob.faction -= "mimic" petrified_mob = null @@ -80,7 +81,7 @@ return FALSE var/obj/structure/statue/petrified/S = new(loc, src, statue_timer) S.name = "statue of [name]" - bleedsuppress = 1 + ADD_TRAIT(src, TRAIT_NOBLEED, MAGIC_TRAIT) S.copy_overlays(src) var/newcolor = list(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) S.add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 92a96460af1..95269688224 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -7,7 +7,7 @@ // Takes care blood loss and regeneration /mob/living/carbon/human/handle_blood() - if(NOBLOOD in dna.species.species_traits || bleedsuppress || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) + if(NOBLOOD in dna.species.species_traits || HAS_TRAIT(src, TRAIT_NOBLEED) || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) return if(bodytemperature >= TCRYO && !(HAS_TRAIT(src, TRAIT_HUSK))) //cryosleep or husked people do not pump the blood. diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 3b711287771..8756fe6feb6 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -245,9 +245,7 @@ if(-INFINITY to BLOOD_VOLUME_BAD) msg += "[t_He] resemble[p_s()] a crushed, empty juice pouch.\n" - if(bleedsuppress) - msg += "[t_He] [t_is] embued with a power that defies bleeding.\n" // only statues and highlander sword can cause this so whatever - else if(is_bleeding()) + if(is_bleeding()) var/list/obj/item/bodypart/bleeding_limbs = list() var/list/obj/item/bodypart/grasped_limbs = list() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a3c9bab2786..14a7b65bbb9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1138,7 +1138,7 @@ return ..() /mob/living/carbon/human/is_bleeding() - if(NOBLOOD in dna.species.species_traits || bleedsuppress) + if(NOBLOOD in dna.species.species_traits) return FALSE return ..() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index a72e9ce736a..2cd30251489 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -51,8 +51,6 @@ var/special_voice = "" // For changing our voice. Used by a symptom. - var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding - var/name_override //For temporary visible name changes var/datum/physiology/physiology diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 74b5ba8688f..bde8f94392e 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -800,7 +800,7 @@ TH.transfer_mob_blood_dna(src) /mob/living/carbon/human/makeTrail(turf/T) - if((NOBLOOD in dna.species.species_traits) || !is_bleeding() || bleedsuppress) + if((NOBLOOD in dna.species.species_traits) || !is_bleeding() || HAS_TRAIT(src, TRAIT_NOBLEED)) return ..() diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 4d7d0f1f89e..ae994fbcfd6 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -898,6 +898,8 @@ /obj/item/bodypart/proc/get_bleed_rate() + if(HAS_TRAIT(owner, TRAIT_NOBLEED)) + return if(status != BODYPART_ORGANIC) // maybe in the future we can bleed oil from aug parts, but not now return