From b70a79f853fa8f726b739916efc4b476d6914cdd Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 5 Jan 2014 23:59:39 +1030 Subject: [PATCH] Implemented NO_PAIN and parts of NO_BLOOD, restructured species flags. --- code/modules/mob/living/carbon/human/life.dm | 7 +++++-- code/modules/organs/blood.dm | 9 +++++---- code/modules/organs/pain.dm | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 957ed014d4e..781c1798bbb 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1262,7 +1262,7 @@ if(2) healths.icon_state = "health7" else //switch(health - halloss) - switch(100 - traumatic_shock) + switch(100 - ((species && species.flags & NO_PAIN) ? 0 : traumatic_shock)) if(100 to INFINITY) healths.icon_state = "health0" if(80 to 100) healths.icon_state = "health1" if(60 to 80) healths.icon_state = "health2" @@ -1422,7 +1422,7 @@ handle_shock() ..() if(status_flags & GODMODE) return 0 //godmode - if(analgesic) return // analgesic avoids all traumatic shock temporarily + if(analgesic || (species && species.flags & NO_PAIN)) return // analgesic avoids all traumatic shock temporarily if(health < config.health_threshold_softcrit)// health 0 makes you immediately collapse shock_stage = max(shock_stage, 61) @@ -1471,8 +1471,11 @@ Weaken(20) proc/handle_pulse() + if(life_tick % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load) + if(species && species.flags && NO_BLOOD) return PULSE_NONE //No blood, no pulse. + if(stat == DEAD) return PULSE_NONE //that's it, you're dead, nothing can influence your pulse diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index bc9e561b74b..4e300dbaea2 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -13,14 +13,15 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 //Initializes blood vessels /mob/living/carbon/human/proc/make_blood() - if (vessel) - return - - if(species && species.flags & NO_BLOOD) + if(vessel) return vessel = new/datum/reagents(600) vessel.my_atom = src + + if(species && species.flags & NO_BLOOD) //We want the var for safety but we can do without the actual blood. + return + vessel.add_reagent("blood",560) spawn(1) fixblood() diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm index a924fa36bb5..250e9b984de 100644 --- a/code/modules/organs/pain.dm +++ b/code/modules/organs/pain.dm @@ -56,7 +56,7 @@ mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0 mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength) if(stat >= 1) return - if(species && species.flags & IS_PLANT) return + if(species && species.flags & NO_PAIN) return if(reagents.has_reagent("tramadol")) return @@ -77,7 +77,7 @@ mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength) mob/living/carbon/human/proc/handle_pain() // not when sleeping - if(species && species.flags & IS_PLANT) return + if(species && species.flags & NO_PAIN) return if(stat >= 2) return if(reagents.has_reagent("tramadol"))