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
+1
View File
@@ -78,6 +78,7 @@
#define ui_fire "EAST-1:28,NORTH-3:25"
#define ui_oxygen "EAST-1:28,NORTH-4:23"
#define ui_pressure "EAST-1:28,NORTH-5:21"
#define ui_paralysis "EAST-1:28,NORTH-10:23"
#define ui_alien_toxin "EAST-1:28,NORTH-2:25"
#define ui_alien_fire "EAST-1:28,NORTH-3:25"
+15 -1
View File
@@ -270,6 +270,13 @@
mymob.fire.screen_loc = ui_fire
hud_elements |= mymob.fire
mymob.paralysis_indicator = new /obj/screen/paralysis()
mymob.paralysis_indicator.icon = 'icons/mob/status_indicators.dmi'
mymob.paralysis_indicator.icon_state = "paralysis0"
mymob.paralysis_indicator.name = "paralysis"
mymob.paralysis_indicator.screen_loc = ui_paralysis
hud_elements |= mymob.paralysis_indicator
mymob.healths = new /obj/screen()
mymob.healths.icon = ui_style
mymob.healths.icon_state = "health0"
@@ -484,4 +491,11 @@
if(icon_state == "oxy0")
to_chat(usr, SPAN_NOTICE("You are breathing easy."))
else
to_chat(usr, SPAN_DANGER("You cannot breathe!"))
to_chat(usr, SPAN_DANGER("You cannot breathe!"))
/obj/screen/paralysis/Click(var/location, var/control, var/params)
if(istype(usr) && usr.paralysis_indicator == src)
if(usr.paralysis)
to_chat(usr, SPAN_WARNING("You are completely paralyzed and cannot move!"))
else
to_chat(usr, SPAN_NOTICE("You are walking around completely fine."))
@@ -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()
+15 -5
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)
@@ -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))
+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
+1
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
+10
View File
@@ -0,0 +1,10 @@
author: Geeves
delete-after: True
changes:
- rscadd: "Added a paralysis indicator to the HUD."
- tweak: "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."
- tweak: "Pain doesn't slow you down as much anymore. It's still pretty substantial, though."
- tweak: "You now lose pain damage much faster."
- rscadd: "A message now plays if you drop your items because of how much pain damage you have."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB