Many brainmed changes. (#7967)

This commit is contained in:
Matt Atlas
2020-01-12 16:44:26 +01:00
committed by GitHub
parent 86790e2377
commit 1567673e9a
17 changed files with 122 additions and 71 deletions
@@ -233,7 +233,7 @@
user.visible_message("<b>[user]</b> checks [src]'s pulse.", "You check [src]'s pulse.")
if (do_mob(user, src, 15))
if(pulse() == PULSE_NONE)
to_chat(user, "<span class='deadsay'>[T.He] [T.has] no pulse...</span>")
to_chat(user, "<span class='deadsay'>[T.He] [T.has] no pulse.</span>")
else
to_chat(user, "<span class='deadsay'>[T.He] [T.has] a pulse!</span>")
@@ -1317,7 +1317,7 @@
"<span class='warning'>Your movement jostles [O] in your [organ.name] painfully.</span>")
to_chat(src, msg)
adjustHalLoss(rand(1, 3))
organ.take_damage(rand(1, 3), sharp = TRUE, edge = TRUE, used_weapon = O)
/mob/living/carbon/human/verb/check_pulse()
set category = "Object"
+2 -2
View File
@@ -1120,7 +1120,8 @@
custom_pain("[pick("The pain is excruciating", "Please, just end the pain", "Your whole body is going numb")]!", 40, nohalloss = TRUE)
if (shock_stage >= 60)
if(shock_stage == 60) emote("me",1,"'s body becomes limp.")
if(shock_stage == 60)
visible_message("[src]'s body becomes limp.", "Your body becomes limp.")
if (prob(2))
custom_pain("[pick("The pain is excruciating", "Please, just end the pain", "Your whole body is going numb")]!", shock_stage, nohalloss = TRUE)
Weaken(20)
@@ -1403,4 +1404,3 @@
damageoverlay.cut_overlay(last_oxy_overlay)
last_oxy_overlay = null
@@ -9,7 +9,7 @@
deform = 'icons/mob/human_races/r_skeleton.dmi'
eyes = "blank_eyes"
total_health = 85 //gotta get headshots to kill them, so they're frail
total_health = 70 //gotta get headshots to kill them, so they're frail
default_language = "Ceti Basic"
language = "Cult"
@@ -48,7 +48,7 @@
if(istype(M, /mob/living/carbon))
Victim.adjustCloneLoss(rand(5,6))
Victim.adjustToxLoss(rand(1,2))
Victim.adjustToxLoss(rand(2,3))
if(Victim.health <= 0)
Victim.adjustToxLoss(rand(2,4))
@@ -64,7 +64,7 @@
var/painMes = pick("You can feel your body becoming weak!", "You feel like you're about to die!", "You feel every part of your body screaming in agony!", "A low, rolling pain passes through your body!", "Your body feels as if it's falling apart!", "You feel extremely weak!", "A sharp, deep pain bathes every inch of your body!")
if (ishuman(M))
var/mob/living/carbon/human/H = M
H.custom_pain(painMes)
H.custom_pain(painMes, 100)
else if (istype(M, /mob/living/carbon))
var/mob/living/carbon/C = M
if (!(C.species && (C.species.flags & NO_PAIN)))
+1 -1
View File
@@ -178,7 +178,7 @@ default behaviour is:
/mob/living/verb/succumb()
set hidden = 1
if (health < maxHealth/2)
if (health < maxHealth / 3)
adjustBrainLoss(health + maxHealth * 2) // Deal 2x health in BrainLoss damage, as before but variable.
to_chat(src, "<span class='notice'>You have given up life and succumbed to death.</span>")
else
+1 -1
View File
@@ -214,7 +214,7 @@ proc/getsensorlevel(A)
//The base miss chance for the different defence zones
var/list/global/base_miss_chance = list(
BP_HEAD = 85,
BP_HEAD = 70,
BP_CHEST = 10,
BP_GROIN = 20,
BP_L_LEG = 20,
+1 -1
View File
@@ -95,7 +95,7 @@
degree = " a lot"
if(damage < 5)
degree = " a bit"
owner.custom_pain("Something inside your [parent.name] hurts[degree].", amount)
owner.custom_pain("Something inside your [parent.name] hurts[degree]!", amount)
/obj/item/organ/internal/proc/get_visible_state()
if(damage > max_damage)
+7 -5
View File
@@ -78,6 +78,9 @@
..()
/obj/item/organ/internal/brain/getToxLoss()
return 0
/obj/item/organ/internal/brain/can_recover()
return ~status & ORGAN_DEAD
@@ -140,7 +143,7 @@
damprob = owner.chem_effects[CE_STABLE] ? 60 : 100
if(!past_damage_threshold(6) && prob(damprob))
take_internal_damage(1)
if(!owner.paralysis && prob(15))
if(!owner.paralysis)
owner.Paralyse(3,5)
to_chat(owner, "<span class='warning'>You feel extremely [pick("dizzy","woozy","faint")]...</span>")
if(-(INFINITY) to BLOOD_VOLUME_SURVIVE) // Also see heart.dm, being below this point puts you into cardiac arrest.
@@ -155,11 +158,10 @@
/obj/item/organ/internal/brain/take_internal_damage(var/damage, var/silent)
set waitfor = 0
..()
if(damage >= 10) //This probably won't be triggered by oxyloss or mercury. Probably.
if(damage >= (max_damage / 3)) //This probably won't be triggered by oxyloss or mercury. Probably.
var/damage_secondary = damage * 0.20
owner.eye_blurry += damage_secondary
owner.confused += damage_secondary * 2
owner.Paralyse(damage_secondary)
owner.Weaken(round(damage, 1))
if(prob(30))
addtimer(CALLBACK(src, .proc/brain_damage_callback, damage), rand(6, 20) SECONDS, TIMER_UNIQUE)
@@ -194,9 +196,9 @@
to_chat(owner, "<span class='danger'>Your hand won't respond properly, and you drop what you are holding!</span>")
owner.drop_item()
if(damage >= 0.6*max_damage)
owner.slurring = max(owner.slurring, 2)
owner.stuttering = max(owner.slurring, 2)
if(is_broken())
if(!owner.lying)
if(!owner.lying && prob(5))
to_chat(owner, "<span class='danger'>You black out!</span>")
owner.Paralyse(10)
+1 -1
View File
@@ -174,7 +174,7 @@
blood_max *= 0.8
if(world.time >= next_blood_squirt && istype(owner.loc, /turf) && do_spray.len)
owner.visible_message("<span class='danger'>Blood squirts from \the [owner]'s [pick(do_spray)]!</span>", "<span class='danger'><font size='3'>Blood is squirting out of your [pick(do_spray)]!</font></span>")
owner.visible_message("<span class='danger'>Blood squirts from \the [owner]'s [pick(do_spray)]!</span>", "<span class='danger'><font size=3>Blood is squirting out of your [pick(do_spray)]!</font></span>")
owner.eye_blurry = 2
owner.Stun(1)
next_blood_squirt = world.time + 100
+25 -39
View File
@@ -12,8 +12,6 @@
max_damage = 70
relative_size = 60
var/tolerance = 5
/obj/item/organ/internal/liver/process()
..()
@@ -28,45 +26,33 @@
if(prob(1))
spawn owner.delayed_vomit()
if(!(owner.life_tick % PROCESS_ACCURACY == 0))
return
//A liver's duty is to get rid of toxins
if(owner.getToxLoss() > 0 && owner.getToxLoss() <= tolerance)
owner.adjustToxLoss(-0.2) //there isn't a lot of toxin damage, so we're going to be chill and slowly filter it out
else if(owner.getToxLoss() > tolerance)
if(is_bruised())
//damaged liver works less efficiently
owner.adjustToxLoss(-0.5)
if(!owner.chem_effects[CE_ANTITOXIN]) //no damage to liver if anti-toxin is present
src.damage += 0.1 * PROCESS_ACCURACY
else if(is_broken())
//non-functioning liver ADDS toxins
owner.adjustToxLoss(-0.1) //roughly 33 minutes to kill someone straight out, stacks with 60+ tox proc tho
else
//functioning liver removes toxins at a cost
owner.adjustToxLoss(-1)
if(!owner.chem_effects[CE_ANTITOXIN]) //no damage to liver if anti-toxin is present
src.damage += 0.05 * PROCESS_ACCURACY
//High toxins levels are super dangerous
if(owner.getToxLoss() >= 60 && !owner.chem_effects[CE_ANTITOXIN])
//Healthy liver suffers on its own
if (src.damage < min_broken_damage)
src.damage += 0.2 * PROCESS_ACCURACY
//Damaged one shares the fun
else
var/obj/item/organ/O = pick(owner.internal_organs)
if(O)
O.damage += 0.2 * PROCESS_ACCURACY
//Detox can heal small amounts of damage
if (src.damage && src.damage < src.min_bruised_damage && owner.chem_effects[CE_ANTITOXIN])
src.damage -= 0.2 * PROCESS_ACCURACY
if (damage < max_damage && !owner.chem_effects[CE_TOXIN])
heal_damage(0.2 * owner.chem_effects[CE_ANTITOXIN])
if(src.damage < 0)
src.damage = 0
// Get the effectiveness of the liver.
var/filter_effect = 3
if(is_bruised())
filter_effect -= 1
if(is_broken())
filter_effect -= 2
// Robotic organs filter better but don't get benefits from dylovene for filtering.
if(BP_IS_ROBOTIC(src))
filter_effect += 1
if(getToxLoss() >= 60) //Too many toxins to process. Abort, abort.
filter_effect -= 2
else if(owner.chem_effects[CE_ANTITOXIN])
filter_effect += 1
if(filter_effect < 2) //Trouble. You're not filtering well.
owner.adjustToxLoss(0.8 * max(2 - filter_effect, 0))
// Heal a bit if needed and we're not busy. This allows recovery from low amounts of toxloss.
if(!owner.total_radiation && damage > 0)
if(damage < min_broken_damage)
heal_damage(0.2)
if(damage < min_bruised_damage)
heal_damage(0.3)
var/filter_strength = INTOX_FILTER_HEALTHY
if(is_bruised())
+10 -2
View File
@@ -51,10 +51,18 @@
if(is_broken() || (is_bruised() && !rescued) && !owner.is_asystole()) // a thoracostomy can only help with a collapsed lung, not a mangled one
if(prob(2))
spawn owner.emote("me", 1, "coughs up blood!")
owner.visible_message(
"<B>\The [owner]</B> coughs up blood!",
"<span class='warning'>You cough up blood!</span>",
"You hear someone coughing!",
)
owner.drip(10)
if(prob(4))
spawn owner.emote("me", 1, "gasps for air!")
owner.visible_message(
"<B>\The [owner]</B> gasps for air!",
"<span class='danger'>You can't breathe!</span>",
"You hear someone gasp for air!",
)
owner.losebreath = 1
if(is_bruised() && rescued)
-2
View File
@@ -48,11 +48,9 @@
robotic = 2
robotic_name = null
robotic_sprite = null
tolerance = 20
/obj/item/organ/internal/liver/vaurca
icon_state = "liver_vaurca"
tolerance = 20
/obj/item/organ/internal/brain/vaurca
icon_state = "brain_vaurca"
-1
View File
@@ -55,4 +55,3 @@
name = "waste tract"
parent_organ = BP_CHEST
color = "#0033cc"
tolerance = 20