Files
FenodyreeAvandGitHub 6e7e0c2326 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>
2026-06-19 16:08:12 +00:00

145 lines
6.5 KiB
Plaintext

#define REM 0.2 // Means 'Reagent Effect Multiplier'. This is how many units of reagent are consumed per tick
#define CHEM_TOUCH 1
#define CHEM_INGEST 2
#define CHEM_BLOOD 3
#define CHEM_BREATHE 4
#define WET_TYPE_WATER 1
#define WET_TYPE_LUBE 2
#define WET_TYPE_ICE 3
#define MINIMUM_CHEMICAL_VOLUME 0.01
#define SOLID 1
#define LIQUID 2
#define GAS 3
#define REAGENTS_PER_SHEET 20
#define MAX_PILL_SPRITE 20 //max icon state of the pill sprites
#define REAGENTS_OVERDOSE 20
/// The time limit between allowed drug messages, to prevent drugs from spamming your chat with "YOU FEEL GREAT!" etc.
#define DRUG_MESSAGE_COOLDOWN 30 SECONDS
#define SOBER_MESSAGE_COOLDOWN 1 MINUTE
#define REAGENTS_BURNING_TEMP_HIGH T0C + 65 //Temperature at which high temperature burns occur
#define REAGENTS_BURNING_TEMP_HIGH_DAMAGE 0.1 //Damage per celcius per unit above the REAGENTS_BURNING_TEMP_HIGH define per unit.
#define REAGENTS_BURNING_TEMP_HIGH_DAMAGE_CAP 40 //Maximum amount of burn damage to deal due to high temperature reagents.
#define REAGENTS_BURNING_TEMP_LOW T0C - 55 //Temperature at which low temperature burns occur
#define REAGENTS_BURNING_TEMP_LOW_DAMAGE 0.1 //Damage per celcius per unit below the REAGENTS_BURNING_TEMP_LOW define per unit.
#define REAGENTS_BURNING_TEMP_LOW_DAMAGE_CAP 40 //Maximum amount of burn damage to deal due to low temperature reagents.
#define REAGENTS_BODYTEMP 0.002 //Increase in body temperature per unit per celcius above current body temperature.
#define REAGENTS_BODYTEMP_MIN 0.25 //Minimum amount of increase to actually increase body temperature. The increase is also rounded to this value.
#define REAGENTS_BODYTEMP_MAX 10 //Maximum allowed increase in body temperature (K) per unit.
#define CHEM_SYNTH_ENERGY 500 // How much energy does it take to synthesize 1 unit of chemical, in Joules.
// Some on_mob_life() procs check for alien races.
#define IS_DIONA 1
#define IS_SKRELL 2
#define IS_UNATHI 4
#define IS_TAJARA 8
#define IS_XENOS 16
#define IS_MACHINE 32
#define IS_VAURCA 64
#define IS_UNDEAD 128
// Apply status effects
#define CE_ALCOHOL "alcohol" // Liver filtering
#define CE_ANTIEMETIC "antiemetic" // suppresses vomiting
#define CE_ITCH "itch" // causes itching
#define CE_NOITCH "noitch" // suppresses itching
#define CE_BERSERK "berserk"
#define CE_CLUMSY "clumsy" // Peridaxon side effects, etc
#define CE_DROPITEM "dropitem" // keloderm side effect
#define CE_EMETIC "emetic" // thetamycin side effect, verunol
#define CE_FEVER "fever" // causes fever
#define CE_NOCOUGH "nocough" // suppresses coughing
#define CE_NOFEVER "nofever" // suppresses fever
#define CE_NOPULSE "heartstop" // Stops heartbeat
#define CE_SEDATE "sedation"
#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
#define CE_HALLUCINATE "hallucinogen" // Makes hallucinations stronger or weaker
#define CE_CRYO "cryogenic" // Prevents damage from being frozen
#define CE_CLEARSIGHT "clearsight" // prevents the blurry eye chem side effect
#define CE_STRAIGHTWALK "straightwalk" // prevents the confused walking chem side effect
#define CE_NOSTUTTER "nostutter" // helps alleviate stuttering
#define CE_HAUNTED "haunted" // Spectrocybin's ghost vision
#define CE_BLOODTHIN "bloodthin" // Makes you bleed out quicker
// Apply healing effects
#define CE_ANTIBIOTIC "antibiotic" // Thetamycin
#define CE_ANTIIMMUNE "antiimmune"
#define CE_ANTITOXIN "antitoxin" // Dylovene and stuff
#define CE_BLOODRESTORE "bloodrestore" // Iron/nutriment
#define CE_BRAIN_REGEN "brainfix" // Alkysine
#define CE_OXYGENATED "oxygenated" // Dexalin
#define CE_BLOODCLOT "bloodclot" // Coagzolug
#define CE_ORGANREPAIR "organrepair" // Rezadone
#define CE_ANTIPARASITE "antiparasite" // Helmizole, garlic
#define CE_ANTIBODIES "antibodies" // Hylemnomil-Zeta antibodies
// Deal damage
#define CE_BREATHLOSS "breathloss"
#define CE_TOXIN "toxins" // General toxins
#define CE_NEUROTOXIC "braintoxic" // Brain damage
#define CE_NEPHROTOXIC "kidneytoxic" // Kidney damage
#define CE_HEPATOTOXIC "livertoxic" // Liver damage
#define CE_CARDIOTOXIC "hearttoxic" // Heart damage
#define CE_PNEUMOTOXIC "lungtoxic" // Lung damage
#define CE_OCULOTOXIC "eyetoxic" // Eye damage
//Alcohol
#define INTOX_BUZZED 0.01
#define INTOX_JUDGEIMP 0.03
#define INTOX_MUSCLEIMP 0.08
#define INTOX_REACTION 0.10
#define INTOX_BALANCE 0.15
#define INTOX_VOMIT 0.15
#define INTOX_BLACKOUT 0.20
#define INTOX_CONSCIOUS 0.30
#define INTOX_DEATH 0.45
//How many units of intoxication to remove per second
#define INTOX_FILTER_HEALTHY 0.015
#define INTOX_FILTER_BRUISED 0.007
#define INTOX_FILTER_DAMAGED 0.003
#define BASE_DIZZY 50 //Base dizziness from getting drunk.
#define DIZZY_ADD_SCALE 15 //Amount added for every 0.01 percent over the JUDGEIMP limit
#define BASE_SLUR 5 //Base slurring from getting drunk.
#define SLUR_ADD_SCALE 10 //Amount added for every 0.01 percent over the REACTION limit
#define BASE_VOMIT_CHANCE 1 //Base chance
#define VOMIT_CHANCE_SCALE 1 //Percent change added for every 0.01 percent over the VOMIT limit
#define REAGENTS_FREE_SPACE(R) (R.maximum_volume - R.total_volume)
/**
* Returns the reagent volume in the specified holder
*
* * REAGENT_HOLDER - The holder (container) of the reagent
* * REAGENT_TYPE - The type of reagent you want to know the amount of
*/
#define REAGENT_VOLUME(REAGENT_HOLDER, REAGENT_TYPE) (REAGENT_HOLDER?.reagent_volumes && REAGENT_HOLDER.reagent_volumes[REAGENT_TYPE])
#define REAGENT_DATA(REAGENT_HOLDER, REAGENT_TYPE) (REAGENT_HOLDER?.reagent_data && REAGENT_HOLDER.reagent_data[REAGENT_TYPE])
#define PROCESS_REACTION_ITER 5 //when processing a reaction, iterate this many times