Species Vars Extension

This commit is contained in:
Arokha Sieyes
2020-06-04 21:02:35 -04:00
parent 02a0cadbbb
commit ad119f676d
7 changed files with 135 additions and 60 deletions

View File

@@ -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)

View File

@@ -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, "<span class='danger'><B>*BZZZT*</B></span>")
switch(severity)
if(1)
to_chat(src, "<span class='danger'>DANGER: Extreme EM flux detected!</span>")
if(2)
to_chat(src, "<span class='danger'>Danger: High EM flux detected!</span>")
if(3)
to_chat(src, "<span class='danger'>Warning: Moderate EM flux detected!</span>")
if(4)
to_chat(src, "<span class='danger'>Warning: Minor EM flux detected!</span>")
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, "<span class='danger'>A wave of intense pain washes over you.</span>")
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, "<span class='danger'>Oh god, everything's spinning!</span>")
Confuse(max(0,confuse_dur))
if(species.emp_sensitivity & EMP_WEAKEN)
if(weaken_dur >= 1)
to_chat(src, "<span class='danger'>Your limbs go slack!</span>")
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.

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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, "<span class='notice'>You have a moment of clarity as you collapse.</span>")
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, "<span class='notice'>You have a moment of clarity, as you feel your tubes lose pressure rapidly.</span>")
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, "<span class='danger'>It's cold. Something causes your cellular mass to harden occasionally, resulting in vibration.</span>")
@@ -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, "<span class='danger'>It's so cold. Something causes your cellular mass to harden sporadically, resulting in seizure-like twitching.</span>")
@@ -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, "<span class='danger'>It's so cold. Something causes your cellular mass to harden sporadically, resulting in seizure-like twitching.</span>")
@@ -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, "<span class='warning'>Your skin itches.</span>")
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)

View File

@@ -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