Merge pull request #320 from IcyV/chemaddition

Expanded upon overdose system
This commit is contained in:
ZomgPonies
2014-07-23 15:19:21 -04:00
+79 -37
View File
@@ -2,7 +2,10 @@
#define LIQUID 2
#define GAS 3
#define FOOD_METABOLISM 0.4
#define REAGENTS_OVERDOSE 30
#define TOX_OVERDOSE 30
#define BRUTE_OVERDOSE 30
#define BURN_OVERDOSE 30
#define OXY_OVERDOSE 30
#define REM REAGENTS_EFFECT_MULTIPLIER
//The reaction procs must ALWAYS set src = null, this detaches the proc from the object (the reagent)
@@ -23,7 +26,11 @@ datum
var/volume = 0
var/nutriment_factor = 0
var/custom_metabolism = REAGENTS_METABOLISM
var/mildly_toxic = 0
var/mildly_toxic = 1
var/toxod = 0
var/bruteod = 0
var/burnod = 0
var/oxyod = 0
var/overdose = 0
var/overdose_dam = 1
var/addictiveness = 0 //switched to zero until time to properly overhaul addiction
@@ -99,8 +106,17 @@ datum
if(H.side_effects.len == 0)
M.add_side_effect(pick("Headache", "Bad Stomach", "Itch"))
if( (overdose > 0) && (volume >= overdose))//Overdosing
M.adjustToxLoss(overdose_dam * volume / overdose)
if( (toxod > 0) && (volume >= toxod))//Toxin Overdosing
M.adjustToxLoss(overdose_dam * volume / toxod)
if( (bruteod > 0) && (volume >= bruteod))//Brute Overdosing
M.take_overall_damage(overdose_dam * volume / bruteod, 0)
if( (burnod > 0) && (volume >= burnod))//Burn Overdosing
M.take_overall_damage(0, overdose_dam * volume / burnod)
if( (oxyod > 0) && (volume >= oxyod))//Oxygen Overdosing
M.adjustOxyLoss(overdose_dam * volume / oxyod)
holder.remove_reagent(src.id, custom_metabolism) //By default it slowly disappears.
return
@@ -345,6 +361,8 @@ datum
description = "Dylovene is a broad-spectrum antitoxin."
reagent_state = LIQUID
color = "#006400" // rgb: 0, 100, 0
bruteod = BRUTE_OVERDOSE
burnod = BURN_OVERDOSE
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -508,7 +526,8 @@ datum
description = "An effective hypnotic used to treat insomnia."
reagent_state = LIQUID
color = "#E895CC" // rgb: 232, 149, 204
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
oxyod = OXY_OVERDOSE
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -564,7 +583,8 @@ datum
description = "Inaprovaline is a synaptic stimulant and cardiostimulant. Commonly used to stabilize patients."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE*2
bruteod = BRUTE_OVERDOSE
oxyod = OXY_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob, var/alien)
@@ -577,6 +597,7 @@ datum
M.losebreath = max(10, M.losebreath-5)
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
..()
return
space_drugs
@@ -586,7 +607,7 @@ datum
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
addictiveness = 25
overdose = REAGENTS_OVERDOSE/2
toxod = TOX_OVERDOSE/2
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -596,6 +617,7 @@ datum
if(prob(10)) step(M, pick(cardinal))
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
..()
return
holywater
@@ -701,7 +723,7 @@ datum
id = "oxygen"
description = "A colorless, odorless gas."
reagent_state = GAS
color = "#808080" // rgb: 128, 128, 128
color = "#808080" // rgb: 128, 128, 128
custom_metabolism = 0.01
@@ -1061,7 +1083,7 @@ datum
description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol."
reagent_state = LIQUID
color = "#808080" // rgb: 128, 128, 128
toxod = TOX_OVERDOSE*2
mildly_toxic = 1
custom_metabolism = 0.01
@@ -1104,7 +1126,7 @@ datum
description = "Ryetalyn can cure all genetic abnomalities."
reagent_state = SOLID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE/2
toxod = TOX_OVERDOSE/2
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -1152,7 +1174,7 @@ datum
description = "Most probably know this as Tylenol, but this chemical is a mild, simple painkiller."
reagent_state = LIQUID
color = "#C855DC"
overdose = REAGENTS_OVERDOSE*2
toxod = TOX_OVERDOSE*2
addictiveness = 5
scannable = 1
custom_metabolism = 0.025 // Lasts 10 minutes for 15 units
@@ -1198,7 +1220,7 @@ datum
reagent_state = LIQUID
addictiveness = 50
color = "#C8A5DC"
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE*2
scannable = 1
custom_metabolism = 0.025 // Lasts 10 minutes for 15 units
@@ -1215,7 +1237,8 @@ datum
reagent_state = LIQUID
addictiveness = 80
color = "#C805DC"
overdose = 20
toxod = TOX_OVERDOSE
oxyod = OXY_OVERDOSE
custom_metabolism = 0.25 // Lasts 10 minutes for 15 units
on_mob_life(var/mob/living/M as mob)
@@ -1376,7 +1399,7 @@ datum
description = "A compound used to clean things. Now with 50% more sodium hypochlorite!"
reagent_state = LIQUID
color = "#A5F0EE" // rgb: 165, 240, 238
overdose = REAGENTS_OVERDOSE*2
toxod = TOX_OVERDOSE*2
reaction_obj(var/obj/O, var/volume)
if(istype(O,/obj/effect/decal/cleanable))
@@ -1428,7 +1451,8 @@ datum
description = "A harmful toxic mixture to kill plantlife. Do not ingest!"
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE/2
burnod = BURN_OVERDOSE/2
scannable = 1
on_mob_life(var/mob/living/carbon/M)
@@ -1478,7 +1502,7 @@ datum
description = "Plasma in its liquid form."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob)
@@ -1522,6 +1546,8 @@ datum
description = "Leporazine can be use to stabilize an individuals body temperature."
reagent_state = LIQUID
color = "#E9D66B" // rgb: 233, 214, 107
toxod = TOX_OVERDOSE
burnod = BURN_OVERDOSE
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -1538,7 +1564,7 @@ datum
description = "Cryptobiolin causes confusion and dizzyness."
reagent_state = LIQUID
color = "#FFD1DC" // rgb: 255, 209, 220
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -1573,7 +1599,8 @@ datum
description = "Kelotane is a drug used to treat burns."
reagent_state = LIQUID
color = "#ECD540" // rgb: 236, 213, 64
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
bruteod = BRUTE_OVERDOSE
on_mob_life(var/mob/living/M as mob)
if(M.stat == 2.0)
@@ -1590,7 +1617,8 @@ datum
description = "Dermaline is the next step in burn medication. Works twice as good as kelotane and enables the body to restore even the direst heat-damaged tissue."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE/2
toxod = TOX_OVERDOSE/2
bruteod = BRUTE_OVERDOSE/2
scannable = 1
on_mob_life(var/mob/living/M as mob, var/alien)
@@ -1608,7 +1636,8 @@ datum
description = "Dexalin is used in the treatment of oxygen deprivation."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
burnod = BURN_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob, var/alien)
@@ -1632,7 +1661,9 @@ datum
description = "Dexalin Plus is used in the treatment of oxygen deprivation. Its highly effective."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE/2
toxod = TOX_OVERDOSE/2
burnod = BURN_OVERDOSE
oxyod = OXY_OVERDOSE/2
scannable = 1
on_mob_life(var/mob/living/M as mob, var/alien)
@@ -1656,7 +1687,9 @@ datum
description = "Tricordrazine is a highly potent stimulant, originally derived from cordrazine. Can be used to treat a wide range of injuries."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
bruteod = BRUTE_OVERDOSE
burnod = BURN_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob, var/alien)
@@ -1677,7 +1710,8 @@ datum
description = "Alchdranine is an extremely strange chemical substance that can be used to treat almost any injury with a high level of effectiveness "
reagent_state = LIQUID
color = "#07a4d1" // rgb: 7, 164, 209
overdose = REAGENTS_OVERDOSE/2
toxod = TOX_OVERDOSE/2
burnod = BURN_OVERDOSE/2
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2.0)
@@ -1697,7 +1731,8 @@ datum
description = "Dylovene is a broad-spectrum antitoxin."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
oxyod = OXY_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob, var/alien)
@@ -1781,7 +1816,7 @@ datum
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
custom_metabolism = 0.01
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob)
@@ -1821,7 +1856,8 @@ datum
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
custom_metabolism = 0.05
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
oxyod = OXY_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob)
@@ -1836,7 +1872,8 @@ datum
description = "Arithrazine is an unstable medication used for the most extreme cases of radiation poisoning."
reagent_state = LIQUID
color = "#BFFF00" // rgb: 191, 255, 0
overdose = REAGENTS_OVERDOSE/2
toxod = TOX_OVERDOSE/2
burnod = BURN_OVERDOSE/2
on_mob_life(var/mob/living/M as mob)
if(M.stat == 2.0)
@@ -1856,7 +1893,9 @@ datum
reagent_state = LIQUID
color = "#F77FBE" // rgb: 247, 127, 190
custom_metabolism = 0.05
overdose = REAGENTS_OVERDOSE/3
toxod = TOX_OVERDOSE/3
burnod = BURN_OVERDOSE/3
bruteod = BRUTE_OVERDOSE/3
scannable = 1
on_mob_life(var/mob/living/M as mob)
@@ -1871,7 +1910,7 @@ datum
description = "Heals eye damage"
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob)
@@ -1894,7 +1933,9 @@ datum
description = "Used to encourage recovery of internal organs and nervous systems. Medicate cautiously."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE/3
toxod = TOX_OVERDOSE/3
burnod = BURN_OVERDOSE/3
bruteod = BRUTE_OVERDOSE/3
scannable = 1
on_mob_life(var/mob/living/M as mob)
@@ -1916,7 +1957,7 @@ datum
description = "Bicaridine is an analgesic medication and can be used to treat blunt trauma."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob, var/alien)
@@ -1934,7 +1975,8 @@ datum
description = "Hyperzine is a highly effective, long lasting, muscle stimulant."
reagent_state = LIQUID
color = "#CCFF00" // rgb: 204, 255, 0
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
burnod = BURN_OVERDOSE
custom_metabolism = 0.05
addictiveness = 80
@@ -1983,7 +2025,7 @@ datum
description = "A powder derived from fish toxin, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects."
reagent_state = SOLID
color = "#669900" // rgb: 102, 153, 0
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob)
@@ -2013,7 +2055,7 @@ datum
reagent_state = LIQUID
color = "#228B22" // rgb: 34, 139, 34
custom_metabolism = 0.01
overdose = REAGENTS_OVERDOSE
toxod = TOX_OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob)
@@ -2361,7 +2403,7 @@ datum
reagent_state = LIQUID
nutriment_factor = 10 * REAGENTS_METABOLISM
color = "#BBEDA4" // rgb: 187, 237, 164
overdose = REAGENTS_OVERDOSE/2
toxod = TOX_OVERDOSE/2
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -3364,7 +3406,7 @@ datum
if(!data) data = 1
data++
M:hallucination += 5
if(volume > REAGENTS_OVERDOSE)
if(volume > TOX_OVERDOSE)
M:adjustToxLoss(1)
..()
return
@@ -3384,7 +3426,7 @@ datum
on_mob_life(var/mob/living/M as mob)
..()
M.dizziness +=5
if(volume > REAGENTS_OVERDOSE)
if(volume > TOX_OVERDOSE)
M:adjustToxLoss(1)
return