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.
This commit is contained in:
Coffee
2021-01-11 14:59:48 -03:00
committed by GitHub
parent 7a0611c61d
commit 653d75e429
10 changed files with 13 additions and 11 deletions
+2
View File
@@ -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
+2 -1
View File
@@ -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(
+1 -1
View File
@@ -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)
@@ -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)
+1 -1
View File
@@ -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.
@@ -245,9 +245,7 @@
if(-INFINITY to BLOOD_VOLUME_BAD)
msg += "<span class='deadsay'><b>[t_He] resemble[p_s()] a crushed, empty juice pouch.</b></span>\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()
@@ -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 ..()
@@ -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
+1 -1
View File
@@ -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
..()
@@ -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