Nerfs painkillers (#22711)

Sets the NO_PAIN threshold to 200, instead of 100. Meaning painkiller
values above 100 are necessary to ignore all pain effects.
This is necessary because:
- CE_PAINKILLER stacks additively.
- Mobs get given adrenaline every time they are hit.
- Adrenaline gives between 15 and 5 CE_PAINKILLER.
- Inaprovaline (10), Perconol (35), Mortaphenyl (50), Synaptizine (30),
Adrenaline (15-5).
- There was no reason to use more powerful painkillers with worse side
effects, when easy to obtain, longer lasting painkillers do the same
job.

Removes CE_ADRENALINE, which was poorly named, only used for Synaptizine
and didn't use the desired movespeed
modification pathways.

Reduces Synaptizine's painkilling value from 30 to 10.
Synaptizine cancels stuns, cancels all other painkiller side effects and
10u of it lasts an hour.
It is still the best combat drug in the game even with these nerfs.

Slight buff to oxycomorphine, to make sure that it doesn't tick down and
can consistently keep analgesic above 200.

Slight buff to mortaphenyl. This means the painkilling effect of antag
stims will remain the same, but for a shorter duration. Also makes it
more useful to doctors.

---------

Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
This commit is contained in:
FenodyreeAv
2026-06-19 16:08:12 +00:00
committed by GitHub
parent 222505f244
commit 6e7e0c2326
6 changed files with 76 additions and 14 deletions
+8 -1
View File
@@ -47,7 +47,6 @@
#define IS_UNDEAD 128
// Apply status effects
#define CE_ADRENALINE "adrenal" // Like speedboost but different
#define CE_ALCOHOL "alcohol" // Liver filtering
#define CE_ANTIEMETIC "antiemetic" // suppresses vomiting
#define CE_ITCH "itch" // causes itching
@@ -64,6 +63,14 @@
#define CE_SLOWDOWN "goslow"
#define CE_STABLE "stable" // Epinephrine
#define CE_PACIFIED "pacified"
/**
* Reduces pain taken by organs, is subtracted from organ pain and from traumatic_shock.alist
* This value stacks with itself. Multiple painkillers stack additively.
* Sets the analgesic value for /mob/living/carbon/, if this value is over 200 (CE_PAINKILLER 200), the mob will suffer no effects from pain or traumatic shock.
* The pain recieved from any source is reduced by (CE_PAINKILLER / 3) in /obj/item/organ/external/proc/add_pain(var/amount)
* Traumatic shock (the effect that causes a mob to collapse from pain) is reduced by this value in /mob/living/carbon/human/get_shock()
*/
#define CE_PAINKILLER "painkiller"
#define CE_PULSE "xcardic" // increases or decreases heartrate
#define CE_UNDEXTROUS "undextrous" // arms no work right
+1 -1
View File
@@ -570,7 +570,7 @@
return FALSE
if ((mutations & HULK))
return FALSE
if (analgesic > 100)
if (analgesic > 200)
return FALSE
if(pain_immune)
return FALSE
@@ -68,13 +68,14 @@
return species.total_health
return 0
///This fetches the cumulative total pain from all organs.
/mob/living/carbon/human/getHalLoss()
var/amount = 0
for(var/obj/item/organ/external/E in organs)
amount += E.get_pain()
return amount
//These procs fetch a cumulative total damage from all organs
///These procs fetch a cumulative total damage from all organs
/mob/living/carbon/human/getBruteLoss()
var/amount = 0
for(var/obj/item/organ/external/O in organs)
@@ -706,12 +706,6 @@
stamina_recovery = species.stamina_recovery
sprint_cost_factor = species.sprint_cost_factor
if(CE_ADRENALINE in chem_effects)
sprint_speed_factor += 0.1*chem_effects[CE_ADRENALINE]
max_stamina *= 1 + chem_effects[CE_ADRENALINE]
sprint_cost_factor -= 0.35 * chem_effects[CE_ADRENALINE]
stamina_recovery += max ((stamina_recovery * 0.7 * chem_effects[CE_ADRENALINE]), 5)
var/obj/item/clothing/suit = wear_suit
var/protected = FALSE
if(suit && (suit.body_parts_covered & HANDS) && (suit.heat_protection & HANDS))
@@ -347,7 +347,7 @@
M.notify_message(SPAN_GOOD(pick(joy_messages)), rand(20 SECONDS, 40 SECONDS), key = "morta_affect_blood")
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 50)
M.add_chemical_effect(CE_PAINKILLER, 70)
if(!M.chem_effects[CE_CLEARSIGHT])
M.eye_blurry = max(M.eye_blurry, 5)
if(!M.chem_effects[CE_STRAIGHTWALK])
@@ -527,7 +527,7 @@
to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end.")))
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 200)
M.add_chemical_effect(CE_PAINKILLER, 210)
M.add_chemical_effect(CE_SLOWDOWN, 2)
if(!M.chem_effects[CE_CLEARSIGHT])
M.eye_blurry = max(M.eye_blurry, 5)
@@ -587,9 +587,8 @@
if(.)
M.add_chemical_effect(CE_CLEARSIGHT)
M.add_chemical_effect(CE_STRAIGHTWALK)
M.add_chemical_effect(CE_PAINKILLER, 30)
M.add_chemical_effect(CE_PAINKILLER, 10)
M.add_chemical_effect(CE_HALLUCINATE, -1)
M.add_up_to_chemical_effect(CE_ADRENALINE, 1)
M.add_chemical_effect(CE_BLOODTHIN, 25)
/singleton/reagent/synaptizine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
@@ -1972,7 +1971,6 @@
M.add_chemical_effect(CE_STRAIGHTWALK)
M.add_chemical_effect(CE_PAINKILLER, 30)
M.add_chemical_effect(CE_HALLUCINATE, -1)
M.add_up_to_chemical_effect(CE_ADRENALINE, 1)
/singleton/reagent/kilosemine/overdose(mob/living/carbon/M, alien, removed, scale, datum/reagents/holder)
if(!ishuman(M))