mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Species Vars Extension
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user