From 653d75e42986cc42ad992dee3eeae38c7050fb39 Mon Sep 17 00:00:00 2001 From: Coffee Date: Mon, 11 Jan 2021 12:59:48 -0500 Subject: [PATCH] Flesh to stone no longer makes you immune to bleeding, refactors bleedsuppress into a trait (#56078) Being hit by the Flesh to Stone makes you bleed immune to prevent you from getting petrified while bleeding, and bleeding out while turned into stone. However, it doesn't make you vulnerable when you get unpetrified. This is a bug. This also makes bleedsuppress into a trait, as both is broken and should be a trait. --- code/__DEFINES/traits.dm | 2 ++ code/_globalvars/traits.dm | 3 ++- code/game/objects/items/weaponry.dm | 2 +- code/game/objects/structures/petrified_statue.dm | 3 ++- code/modules/mob/living/blood.dm | 2 +- code/modules/mob/living/carbon/human/examine.dm | 4 +--- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/carbon/human/human_defines.dm | 2 -- code/modules/mob/living/living.dm | 2 +- code/modules/surgery/bodyparts/_bodyparts.dm | 2 ++ 10 files changed, 13 insertions(+), 11 deletions(-) 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