From 51033b98474b184eef0ac9ac5853cda57d515f60 Mon Sep 17 00:00:00 2001 From: IcyV Date: Wed, 23 Jul 2014 12:14:17 -0700 Subject: [PATCH] Expanded upon overdose system Adds brute, burn, and oxy damage as potential overdose effects. --- code/modules/reagents/Chemistry-Reagents.dm | 116 +++++++++++++------- 1 file changed, 79 insertions(+), 37 deletions(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index ae5df9b530f..34dda1f2064 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -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