Pain Drain (#10685)

Added a paralysis indicator to the HUD.
    Being paralyzed will no longer make you asleep, instead, you will be awake with a crit overlay, and you will only be able to whisper.
    Pain doesn't slow you down as much anymore. It's still pretty substantial, though.
    You now lose pain damage much faster.
    A message now plays if you drop your items because of how much pain damage you have.
This commit is contained in:
Geeves
2021-01-01 14:13:03 +02:00
committed by GitHub
parent 2dcbf7a4cc
commit bf2ac7562d
9 changed files with 47 additions and 7 deletions

View File

@@ -19,7 +19,7 @@
if(can_feel_pain())
if(get_shock() >= 10)
tally += (get_shock() / 10) //pain shouldn't slow you down if you can't even feel it
tally += (get_shock() / 30) //pain shouldn't slow you down if you can't even feel it
tally += ClothesSlowdown()

View File

@@ -728,8 +728,10 @@
if(paralysis || sleeping || InStasis())
blinded = TRUE
stat = UNCONSCIOUS
adjustHalLoss(-3)
if(sleeping)
stat = UNCONSCIOUS
adjustHalLoss(-7)
if (species.tail)
animate_tail_reset()
if(prob(2) && is_asystole() && isSynthetic())
@@ -765,11 +767,11 @@
if(resting)
dizziness = max(0, dizziness - 15)
jitteriness = max(0, jitteriness - 15)
adjustHalLoss(-3)
adjustHalLoss(-5)
else
dizziness = max(0, dizziness - 3)
jitteriness = max(0, jitteriness - 3)
adjustHalLoss(-1)
adjustHalLoss(-3)
//Other
handle_statuses()
@@ -810,7 +812,7 @@
return
if(stat != DEAD)
if(stat == UNCONSCIOUS && health < maxHealth / 2)
if((stat == UNCONSCIOUS && health < maxHealth / 2) || paralysis || InStasis())
//Critical damage passage overlay
var/severity = 0
switch(health - maxHealth/2)
@@ -824,6 +826,8 @@
if(-90 to -80) severity = 8
if(-95 to -90) severity = 9
if(-INFINITY to -95) severity = 10
if(paralysis || InStasis())
severity = max(severity, 8)
overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity)
else
clear_fullscreen("crit")
@@ -858,6 +862,12 @@
else
clear_fullscreen("brute")
if(paralysis_indicator)
if(paralysis)
paralysis_indicator.icon_state = "paralysis1"
else
paralysis_indicator.icon_state = "paralysis0"
if(healths)
healths.overlays.Cut()
if (chem_effects[CE_PAINKILLER] > 100)

View File

@@ -150,6 +150,9 @@
return returns
/mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio)
if(paralysis || InStasis())
whisper_say(message, speaking, alt_name)
return TRUE
switch(message_mode)
if("intercom")
for(var/obj/item/device/radio/intercom/I in view(1))

View File

@@ -17,6 +17,7 @@
var/obj/screen/purged = null
var/obj/screen/internals/internals = null
var/obj/screen/oxygen = null
var/obj/screen/paralysis_indicator = null
var/obj/screen/i_select = null
var/obj/screen/m_select = null
var/obj/screen/toxin = null

View File

@@ -73,6 +73,7 @@ mob/var/next_pain_time = 0
if(maxdam > 10 && paralysis)
paralysis = max(0, paralysis - round(maxdam / 10))
if(maxdam > 50 && prob(maxdam / 5))
to_chat(src, SPAN_WARNING("A bolt of pain shoots through your body, causing your hands to spasm!"))
drop_item()
var/burning = damaged_organ.burn_dam > damaged_organ.brute_dam
var/msg