mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-18 19:39:42 +01:00
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:
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user