diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index 6ae81236de..dd5c817641 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -12,6 +12,17 @@ #define NO_INFECT 0x400 // Don't allow infections in limbs or organs, similar to IS_PLANT, without other strings. // unused: 0x8000 - higher than this will overflow +// Species EMP vuln for carbons +#define EMP_PAIN 0x1 // EMPs cause pain +#define EMP_BLIND 0x2 // EMPs cause screenflash and blindness +#define EMP_DEAFEN 0x4 // EMPs cause deafness +#define EMP_CONFUSE 0x8 // EMPs cause disorientation +#define EMP_WEAKEN 0x10 // EMPs cause collapsing (at high severity only) +#define EMP_BRUTE_DMG 0x20 // EMPs inflict brute damage +#define EMP_BURN_DMG 0x40 // EMPs inflict burn damage +#define EMP_TOX_DMG 0x80 // EMPs inflict toxin damage +#define EMP_OXY_DMG 0x100 // EMPs inflict oxy damage + // Species spawn flags #define SPECIES_IS_WHITELISTED 0x1 // Must be whitelisted to play. #define SPECIES_IS_RESTRICTED 0x2 // Is not a core/normally playable species. (castes, mutantraces) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 89ea5a0c29..dde3927a59 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -96,6 +96,60 @@ return +//EMP vulnerability for non-synth carbons. could be useful for diona, vox, or others +//the species' emp_sensitivity var needs to be greater than 0 for this to proc, and it defaults to 0 - shouldn't stack with prosthetics/fbps in most cases +//higher sensitivity values incur additional effects, starting with confusion/blinding/knockdown and ending with increasing amounts of damage +//the degree of damage and duration of effects can be tweaked up or down based on the species emp_dmg_mod and emp_stun_mod vars (default 1) on top of tuning the random ranges +/mob/living/carbon/emp_act(severity) + //pregen our stunning stuff, had to do this seperately or else byond complained. remember that severity falls off with distance based on the source, so we don't need to do any extra distance calcs here. + var/agony_str = ((rand(4,6)*15)-(15*severity))*species.emp_stun_mod //big ouchies at high severity, causes 0-75 halloss/agony; shotgun beanbags and revolver rubbers do 60 + var/deafen_dur = (rand(9,16)-severity)*species.emp_stun_mod //5-15 deafen, on par with a flashbang + var/confuse_dur = (rand(4,11)-severity)*species.emp_stun_mod //0-10 wobbliness, on par with a flashbang + var/weaken_dur = (rand(2,4)-severity)*species.emp_stun_mod //0-3 knockdown, on par with.. you get the idea + var/blind_dur = (rand(3,6)-severity)*species.emp_stun_mod //0-5 blind + if(species.emp_sensitivity) //receive warning message and basic effects + to_chat(src, "*BZZZT*") + switch(severity) + if(1) + to_chat(src, "DANGER: Extreme EM flux detected!") + if(2) + to_chat(src, "Danger: High EM flux detected!") + if(3) + to_chat(src, "Warning: Moderate EM flux detected!") + if(4) + to_chat(src, "Warning: Minor EM flux detected!") + if(prob(90-(10*severity))) //50-80% chance to fire an emote. most are harmless, but vomit might reduce your nutrition level which could suck (so the whole thing is padded out with extras) + src.emote(pick("twitch", "twitch_v", "choke", "pale", "blink", "blink_r", "shiver", "sneeze", "vomit", "gasp", "cough", "drool")) + //stun effects block, effects vary wildly + if(species.emp_sensitivity & EMP_PAIN) + to_chat(src, "A wave of intense pain washes over you.") + src.adjustHalLoss(agony_str) + if(species.emp_sensitivity & EMP_BLIND) + if(blind_dur >= 1) //don't flash them unless they actually roll a positive blind duration + src.flash_eyes(3) //3 allows it to bypass any tier of eye protection, necessary or else sec sunglasses/etc. protect you from this + Blind(max(0,blind_dur)) + if(species.emp_sensitivity & EMP_DEAFEN) + src.ear_damage += rand(0,deafen_dur) //this will heal pretty quickly, but spamming them at someone could cause serious damage + src.ear_deaf = max(src.ear_deaf,deafen_dur) + if(species.emp_sensitivity & EMP_CONFUSE) + if(confuse_dur >= 1) + to_chat(src, "Oh god, everything's spinning!") + Confuse(max(0,confuse_dur)) + if(species.emp_sensitivity & EMP_WEAKEN) + if(weaken_dur >= 1) + to_chat(src, "Your limbs go slack!") + Weaken(max(0,weaken_dur)) + //physical damage block, deals (minor-4) 5-15, 10-20, 15-25, 20-30 (extreme-1) of *each* type + if(species.emp_sensitivity & EMP_BRUTE_DMG) + src.adjustBruteLoss(rand(25-(severity*5),35-(severity*5)) * species.emp_dmg_mod) + if(species.emp_sensitivity & EMP_BURN_DMG) + src.adjustFireLoss(rand(25-(severity*5),35-(severity*5)) * species.emp_dmg_mod) + if(species.emp_sensitivity & EMP_TOX_DMG) + src.adjustToxLoss(rand(25-(severity*5),35-(severity*5)) * species.emp_dmg_mod) + if(species.emp_sensitivity & EMP_OXY_DMG) + src.adjustOxyLoss(rand(25-(severity*5),35-(severity*5)) * species.emp_dmg_mod) + ..() + /mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1) if(status_flags & GODMODE) return 0 //godmode if(def_zone == "l_hand" || def_zone == "r_hand") //Diona (And any other potential plant people) hands don't get shocked. diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 67c429e833..c9eb8216d1 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -74,23 +74,32 @@ var/male_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg' var/female_sneeze_sound = 'sound/effects/mob_effects/f_sneeze.ogg' - // Combat vars. - var/total_health = 100 // Point at which the mob will enter crit. + // Combat/health/chem/etc. vars. + var/total_health = 100 // How much damage the mob can take before entering crit. var/list/unarmed_types = list( // Possible unarmed attacks that the mob will use in combat, /datum/unarmed_attack, /datum/unarmed_attack/bite ) var/list/unarmed_attacks = null // For empty hand harm-intent attack - var/brute_mod = 1 // Physical damage multiplier. - var/burn_mod = 1 // Burn damage multiplier. - var/oxy_mod = 1 // Oxyloss modifier - var/toxins_mod = 1 // Toxloss modifier - var/radiation_mod = 1 // Radiation modifier - var/flash_mod = 1 // Stun from blindness modifier. - var/flash_burn = 0 // how much damage to take from being flashed if light hypersensitive - var/sound_mod = 1 // Stun from sounds, I.E. flashbangs. - var/chemOD_mod = 1 // Damage modifier for overdose - var/vision_flags = SEE_SELF // Same flags as glasses. + var/brute_mod = 1 // Physical damage multiplier. + var/burn_mod = 1 // Burn damage multiplier. + var/oxy_mod = 1 // Oxyloss modifier + var/toxins_mod = 1 // Toxloss modifier. overridden by NO_POISON flag. + var/radiation_mod = 1 // Radiation modifier, determines the practically negligable burn damage from direct exposure to extreme sources. + var/flash_mod = 1 // Stun from blindness modifier (flashes and flashbangs) + var/flash_burn = 0 // how much damage to take from being flashed if light hypersensitive + var/sound_mod = 1 // Multiplier to the effective *range* of flashbangs. a flashbang's bang hits an entire screen radius, with some falloff. + var/chem_strength_heal = 1 // Multiplier to most beneficial chem strength + var/chem_strength_pain = 1 // Multiplier to painkiller strength (could be used in a negative trait to simulate long-term addiction reducing effects, etc.) + var/chem_strength_tox = 1 // Multiplier to toxic chem strength (inc. chloral/sopo/mindbreaker/etc. thresholds) + var/chemOD_threshold = 1 // Multiplier to overdose threshold; lower = easier overdosing + var/chemOD_mod = 1 // Damage modifier for overdose; higher = more damage from ODs + var/alcohol_mod = 1 // Multiplier to alcohol strength; 0.5 = half, 0 = no effect at all, 2 = double, etc. + // set below is EMP interactivity for nonsynth carbons + var/emp_sensitivity = 0 // bitflag. valid flags are: EMP_PAIN, EMP_BLIND, EMP_DEAFEN, EMP_CONFUSE, EMP_STUN, and EMP_(BRUTE/BURN/TOX/OXY)_DMG + var/emp_dmg_mod = 1 // Multiplier to all EMP damage sustained by the mob, if it's EMP-sensitive + var/emp_stun_mod = 1 // Multiplier to all EMP disorient/etc. sustained by the mob, if it's EMP-sensitive + var/vision_flags = SEE_SELF // Same flags as glasses. // Death vars. var/meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 0b010dc4f6..d3283bc394 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -125,7 +125,7 @@ affect_ingest(M, alien, removed * ingest_abs_mult) if(CHEM_TOUCH) affect_touch(M, alien, removed) - if(overdose && (volume > overdose) && (active_metab.metabolism_class != CHEM_TOUCH && !can_overdose_touch)) + if(overdose && (volume > overdose * M?.species.chemOD_threshold) && (active_metab.metabolism_class != CHEM_TOUCH && !can_overdose_touch)) overdose(M, alien, removed) remove_self(removed) return diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index d49d952314..10beef463b 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -94,7 +94,7 @@ /datum/reagent/ethanol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) //This used to do just toxin. That's boring. Let's make this FUN. if(issmall(M)) removed *= 2 - var/strength_mod = 3 //Alcohol is 3x stronger when injected into the veins. + var/strength_mod = 3 * M.species.alcohol_mod //Alcohol is 3x stronger when injected into the veins. if(alien == IS_SKRELL) strength_mod *= 5 if(alien == IS_TAJARA) @@ -139,7 +139,7 @@ /datum/reagent/ethanol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if(issmall(M)) removed *= 2 M.adjust_nutrition(nutriment_factor * removed) - var/strength_mod = 1 + var/strength_mod = 1 * M.species.alcohol_mod if(alien == IS_SKRELL) strength_mod *= 5 if(alien == IS_TAJARA) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 49b354c3a2..3f6ae0bdf3 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -14,7 +14,7 @@ /datum/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien != IS_DIONA) M.add_chemical_effect(CE_STABLE, 15) - M.add_chemical_effect(CE_PAINKILLER, 10) + M.add_chemical_effect(CE_PAINKILLER, 10 * M.species.chem_strength_pain) /datum/reagent/inaprovaline/topical name = "Inaprovalaze" @@ -37,7 +37,7 @@ /datum/reagent/inaprovaline/topical/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) if(alien != IS_DIONA) M.add_chemical_effect(CE_STABLE, 20) - M.add_chemical_effect(CE_PAINKILLER, 12) + M.add_chemical_effect(CE_PAINKILLER, 12 * M.species.chem_strength_pain) /datum/reagent/bicaridine name = "Bicaridine" @@ -51,7 +51,7 @@ scannable = 1 /datum/reagent/bicaridine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.75 if(alien != IS_DIONA) @@ -88,7 +88,7 @@ can_overdose_touch = TRUE /datum/reagent/bicaridine/topical/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.75 if(alien != IS_DIONA) @@ -96,7 +96,7 @@ M.adjustToxLoss(2 * removed) /datum/reagent/bicaridine/topical/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.75 if(alien != IS_DIONA) @@ -132,7 +132,7 @@ scannable = 1 /datum/reagent/kelotane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.5 M.adjustBruteLoss(2 * removed) //Mends burns, but has negative effects with a Promethean's skeletal structure. @@ -151,7 +151,7 @@ scannable = 1 /datum/reagent/dermaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.75 if(alien != IS_DIONA) @@ -171,7 +171,7 @@ can_overdose_touch = TRUE /datum/reagent/dermaline/topical/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.75 if(alien != IS_DIONA) @@ -179,7 +179,7 @@ M.adjustToxLoss(2 * removed) /datum/reagent/dermaline/topical/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.75 if(alien != IS_DIONA) @@ -195,7 +195,7 @@ scannable = 1 /datum/reagent/dylovene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.66 if(dose >= 15) @@ -220,7 +220,7 @@ return if(M.getToxLoss() && prob(10)) M.vomit(1) - M.adjustToxLoss(-8 * removed) + M.adjustToxLoss(-8 * removed * M.species.chem_strength_heal) if(prob(30)) M.remove_a_modifier_of_type(/datum/modifier/poisoned) if(ishuman(M)) @@ -249,13 +249,13 @@ if(alien == IS_VOX) M.adjustToxLoss(removed * 24) //VOREStation Edit else if(alien == IS_SLIME && dose >= 15) - M.add_chemical_effect(CE_PAINKILLER, 15) + M.add_chemical_effect(CE_PAINKILLER, 15 * M.species.chem_strength_pain) if(prob(15)) to_chat(M, "You have a moment of clarity as you collapse.") M.adjustBrainLoss(-20 * removed) //VOREStation Edit M.Weaken(6) else if(alien != IS_DIONA) - M.adjustOxyLoss(-60 * removed) //VOREStation Edit + M.adjustOxyLoss(-15 * removed * M.species.chem_strength_heal) holder.remove_reagent("lexorin", 8 * removed) //VOREStation Edit @@ -273,13 +273,13 @@ if(alien == IS_VOX) M.adjustToxLoss(removed * 9) else if(alien == IS_SLIME && dose >= 10) - M.add_chemical_effect(CE_PAINKILLER, 25) + M.add_chemical_effect(CE_PAINKILLER, 25 * M.species.chem_strength_pain) if(prob(25)) to_chat(M, "You have a moment of clarity, as you feel your tubes lose pressure rapidly.") M.adjustBrainLoss(-8 * removed) M.Weaken(3) else if(alien != IS_DIONA) - M.adjustOxyLoss(-150 * removed) + M.adjustOxyLoss(-150 * removed * M.species.chem_strength_heal) holder.remove_reagent("lexorin", 3 * removed) @@ -294,7 +294,7 @@ /datum/reagent/tricordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien != IS_DIONA) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.5 M.adjustOxyLoss(-3 * removed * chem_effective) @@ -317,7 +317,7 @@ /datum/reagent/tricorlidaze/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) if(alien != IS_DIONA) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.5 M.adjustOxyLoss(-2 * removed * chem_effective) @@ -354,7 +354,7 @@ /datum/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(M.bodytemperature < 170) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.25 to_chat(M, "It's cold. Something causes your cellular mass to harden occasionally, resulting in vibration.") @@ -379,7 +379,7 @@ /datum/reagent/clonexadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(M.bodytemperature < 170) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) if(prob(10)) to_chat(M, "It's so cold. Something causes your cellular mass to harden sporadically, resulting in seizure-like twitching.") @@ -413,7 +413,7 @@ /datum/reagent/necroxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(M.bodytemperature < 170 || (M.stat == DEAD && M.has_modifier_of_type(/datum/modifier/bloodpump_corpse))) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) if(prob(10)) to_chat(M, "It's so cold. Something causes your cellular mass to harden sporadically, resulting in seizure-like twitching.") @@ -441,7 +441,7 @@ mrate_static = TRUE /datum/reagent/paracetamol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_pain if(alien == IS_SLIME) chem_effective = 0.75 M.add_chemical_effect(CE_PAINKILLER, 25 * chem_effective) @@ -465,7 +465,7 @@ mrate_static = TRUE /datum/reagent/tramadol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_pain if(alien == IS_SLIME) chem_effective = 0.8 M.add_chemical_effect(CE_SLOWDOWN, 1) @@ -488,7 +488,7 @@ mrate_static = TRUE /datum/reagent/oxycodone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_pain if(alien == IS_SLIME) chem_effective = 0.75 M.stuttering = min(50, max(0, M.stuttering + 5)) //If you can't feel yourself, and your main mode of speech is resonation, there's a problem. @@ -515,7 +515,7 @@ scannable = 1 /datum/reagent/synaptizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_DIONA) return if(alien == IS_SLIME) @@ -531,7 +531,7 @@ holder.remove_reagent("mindbreaker", 5) M.hallucination = max(0, M.hallucination - 10) M.adjustToxLoss(5 * removed * chem_effective) // It used to be incredibly deadly due to an oversight. Not anymore! - M.add_chemical_effect(CE_PAINKILLER, 20 * chem_effective) + M.add_chemical_effect(CE_PAINKILLER, 20 * chem_effective * M.species.chem_strength_pain) /datum/reagent/hyperzine name = "Hyperzine" @@ -568,7 +568,7 @@ /datum/reagent/alkysine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return - var/chem_effective = 1 + var/chem_effective = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) chem_effective = 0.25 if(M.brainloss >= 10) @@ -576,7 +576,7 @@ if(dose >= 10 && M.paralysis < 40) M.AdjustParalysis(1) //Messing with the core with a simple chemical probably isn't the best idea. M.adjustBrainLoss(-8 * removed * chem_effective) //VOREStation Edit - M.add_chemical_effect(CE_PAINKILLER, 10 * chem_effective) + M.add_chemical_effect(CE_PAINKILLER, 10 * chem_effective * M.species.chem_strength_pain) /datum/reagent/imidazoline name = "Imidazoline" @@ -625,7 +625,7 @@ H.eye_blurry = min(M.eye_blurry + 10, 250) //Eyes need to reset, or something H.sdisabilities &= ~BLIND if(alien == IS_SLIME) - H.add_chemical_effect(CE_PAINKILLER, 20) + H.add_chemical_effect(CE_PAINKILLER, 20 * M.species.chem_strength_pain) if(prob(33)) H.Confuse(10) @@ -692,7 +692,7 @@ scannable = 1 /datum/reagent/respirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/repair_strength = 1 + var/repair_strength = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) repair_strength = 0.6 if(ishuman(M)) @@ -723,7 +723,7 @@ scannable = 1 /datum/reagent/gastirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/repair_strength = 1 + var/repair_strength = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) repair_strength = 0.6 if(ishuman(M)) @@ -754,7 +754,7 @@ scannable = 1 /datum/reagent/hepanephrodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/repair_strength = 1 + var/repair_strength = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) repair_strength = 0.4 if(ishuman(M)) @@ -787,7 +787,7 @@ scannable = 1 /datum/reagent/cordradaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/repair_strength = 1 + var/repair_strength = 1 * M.species.chem_strength_heal if(alien == IS_SLIME) repair_strength = 0.6 if(ishuman(M)) @@ -814,7 +814,7 @@ scannable = 1 /datum/reagent/immunosuprizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/strength_mod = 1 + var/strength_mod = 1 * M.species.chem_strength_heal if(alien == IS_DIONA) // It's a tree. strength_mod = 0.25 @@ -871,7 +871,7 @@ scannable = 1 /datum/reagent/skrellimmuno/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/strength_mod = 0.5 + var/strength_mod = 0.5 * M.species.chem_strength_heal if(alien == IS_SKRELL) strength_mod = 1 @@ -998,7 +998,7 @@ /datum/reagent/hyronalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return - M.radiation = max(M.radiation - 30 * removed, 0) + M.radiation = max(M.radiation - 30 * removed * M.species.chem_strength_heal, 0) /datum/reagent/arithrazine name = "Arithrazine" @@ -1014,7 +1014,7 @@ /datum/reagent/arithrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return - M.radiation = max(M.radiation - 70 * removed, 0) + M.radiation = max(M.radiation - 70 * removed * M.species.chem_strength_heal, 0) M.adjustToxLoss(-10 * removed) if(prob(60)) M.take_organ_damage(4 * removed, 0) @@ -1130,7 +1130,7 @@ can_overdose_touch = TRUE /datum/reagent/spacomycaze/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.add_chemical_effect(CE_PAINKILLER, 10) + M.add_chemical_effect(CE_PAINKILLER, 10 * M.species.chem_strength_pain) M.adjustToxLoss(3 * removed) /datum/reagent/spacomycaze/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) @@ -1149,7 +1149,7 @@ to_chat(M, "Your skin itches.") M.add_chemical_effect(CE_ANTIBIOTIC, dose >= overdose ? ANTIBIO_OD : ANTIBIO_NORM) - M.add_chemical_effect(CE_PAINKILLER, 20) // 5 less than paracetamol. + M.add_chemical_effect(CE_PAINKILLER, 20 * M.species.chem_strength_pain) // 5 less than paracetamol. /datum/reagent/spacomycaze/touch_obj(var/obj/O) if(istype(O, /obj/item/stack/medical/crude_pack) && round(volume) >= 1) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index bee8702d0f..7ac94215f4 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -14,6 +14,7 @@ var/skin_danger = 0.2 // The multiplier for how effective the toxin is when making skin contact. /datum/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + strength *= M.species.chem_strength_tox if(strength && alien != IS_DIONA) if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume. if(alien == IS_SLIME) @@ -615,7 +616,7 @@ if(alien == IS_DIONA) return - var/threshold = 1 + var/threshold = 1 * M.species.chem_strength_tox if(alien == IS_SKRELL) threshold = 1.2 @@ -663,7 +664,7 @@ if(alien == IS_DIONA) return - var/threshold = 1 + var/threshold = 1 * M.species.chem_strength_tox if(alien == IS_SKRELL) threshold = 1.2 @@ -726,7 +727,7 @@ if(alien == IS_DIONA) return - var/drug_strength = 15 + var/drug_strength = 15 * M.species.chem_strength_tox if(alien == IS_SKRELL) drug_strength = drug_strength * 0.8 @@ -785,7 +786,7 @@ /datum/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return - var/drug_strength = 4 + var/drug_strength = 4 * M.species.chem_strength_tox if(alien == IS_SKRELL) drug_strength = drug_strength * 0.8 @@ -831,7 +832,7 @@ if(alien == IS_DIONA) return - var/drug_strength = 100 + var/drug_strength = 100 * M.species.chem_strength_tox if(alien == IS_SKRELL) drug_strength *= 0.8 @@ -854,7 +855,7 @@ if(alien == IS_DIONA) return - var/threshold = 1 + var/threshold = 1 * M.species.chem_strength_tox if(alien == IS_SKRELL) threshold = 1.2 @@ -908,7 +909,7 @@ datum/reagent/talum_quem/affect_blood(var/mob/living/carbon/M, var/alien, var/re if(alien == IS_DIONA) return - var/drug_strength = 29 + var/drug_strength = 29 * M.species.chem_strength_tox if(alien == IS_SKRELL) drug_strength = drug_strength * 0.8 else