Alpha
Summary (a quick, 2-3 sentence summary):
Currently painkillers do nothing vs agony/Halloss sources and also are completely ineffective at reducing the speed reduction from Halloss.
This should change; painkillers should do what they're supposed to which is kill pain.
Benefits (How this will benefit the server and game as a whole):
Improved realism/verisimilitude. Makes painkillers do what they're supposed to and act in an expected way.
Details (Description of how you think this would work, the benefits, etc):
At the moment, all painkillers do is reduce traumatic shock (which advances a character's shock level, which ultimately has debilitating effects when it gets too high); it does not reduce Halloss which is equivalent to pain/subdual damage; the damage nonlethals do, nor does it reduce the effects of Halloss on movement, or even actually prevent pain crit (currently defined as Halloss damage becoming equal to or greater than 100).
What I want to do is give pain killers the ability to negate the negative effects of Halloss and other manifestations/representations of pain from it, and real injuries.
That said, a summary of changes proposed below:
- Movement is now reduced by traumatic shock which pain killers influence, instead of Halloss which they do not.
- Pain immunity reduces all Halloss damage to 0.
- Traumatic shock must be 200+ AND Halloss damage must be 100+ in order to induce pain crit (so painkillers can provide resistance to it). Outside of the effect of painkillers, this should not change the rate at which nonlethals stun players since all Halloss damage is doubled for the purpose of calculating traumatic shock.
Implementation (Optional, if you have an idea how to implement it):
Have some code:
Under human_movement.dm
Replace this:
Code: Select all
var/health_deficiency = (100 - health + )
if(health_deficiency >= 40) tally += (health_deficiency / 25)
if (!(species && (species.flags & NO_PAIN)))
if(halloss >= 10) tally += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it (I agree)
Code: Select all
if (!(species && (species.flags & NO_PAIN)))
if(traumatic_shock >= 25) tally += (traumatic_shock / 25) //halloss shouldn't slow you down if you can't even feel it
As an added benefit, the new code is more streamlined.
Under damage_procs.dm -> /mob/living/proc/apply_damage
Replace this:
Code: Select all
if(HALLOSS)
adjustHalLoss(damage/(blocked+1))
Code: Select all
if(HALLOSS)
if(ishuman())
var/mob/living/carbon/human/H = src
if(H.analgesic || (H.species && (H.species.flags & NO_PAIN)))
damage = 0
if(damage > 0)
adjustHalLoss(damage /(blocked+1))
Replace this:
Code: Select all
if(AGONY)
adjustHalLoss(effect/(blocked+1))
Code: Select all
if(AGONY)
if(ishuman())
var/mob/living/carbon/human/H = src
if(H.analgesic || (H.species && (H.species.flags & NO_PAIN)))
effect = 0
if(effect > 0)
adjustHalLoss(effect /(blocked+1))
Replace this:
Code: Select all
if(halloss >= 100)
src << "<span class='notice'>You're in too much pain to keep going...</span>"
src.visible_message("<B>[src]</B> slumps to the ground, too weak to continue fighting.")
Paralyse(10)
setHalLoss(99)
Code: Select all
if(traumatic_shock >= 200 && halloss >= 100)
src << "<span class='notice'>You're in too much pain to keep going...</span>"
src.visible_message("<B>[src]</B> slumps to the ground, too weak to continue fighting.")
Paralyse(10)
setHalLoss(99)
Why? Lets painkillers actually reduce the pain (HALLOSS) and debilitation inflicted by pain inducing effects as they should.