From e181b90ca2ca50de1277aa5cdab2bb0c68071ff6 Mon Sep 17 00:00:00 2001 From: cib Date: Wed, 16 Jan 2013 02:55:23 +0100 Subject: [PATCH] Bugfix: Fix metabolism rates for foods, drinks and sleep toxins. --- code/modules/reagents/Chemistry-Reagents.dm | 132 ++++++++++++-------- 1 file changed, 82 insertions(+), 50 deletions(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 0a9ff96ef47..6c76764b8b4 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -2,6 +2,7 @@ #define LIQUID 2 #define GAS 3 #define REAGENTS_OVERDOSE 30 +#define FOOD_METABOLISM 0.4 //The reaction procs must ALWAYS set src = null, this detaches the proc from the object (the reagent) //so that it can continue working when the reagent is deleted while the proc is still active. @@ -310,25 +311,25 @@ datum if(!M) M = holder.my_atom M.drowsyness = max(M.drowsyness-2*REAGENTS_EFFECT_MULTIPLIER, 0) if(holder.has_reagent("toxin")) - holder.remove_reagent("toxin", 2*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("toxin", 10*REAGENTS_METABOLISM) if(holder.has_reagent("stoxin")) - holder.remove_reagent("stoxin", 2*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("stoxin", 10*REAGENTS_METABOLISM) if(holder.has_reagent("plasma")) - holder.remove_reagent("plasma", 1*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("plasma", 10*REAGENTS_METABOLISM) if(holder.has_reagent("sacid")) - holder.remove_reagent("sacid", 1*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("sacid", 10*REAGENTS_METABOLISM) if(holder.has_reagent("cyanide")) - holder.remove_reagent("cyanide", 1*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("cyanide", 10*REAGENTS_METABOLISM) if(holder.has_reagent("amatoxin")) - holder.remove_reagent("amatoxin", 2*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("amatoxin", 10*REAGENTS_METABOLISM) if(holder.has_reagent("chloralhydrate")) - holder.remove_reagent("chloralhydrate", 5*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("chloralhydrate", 10*REAGENTS_METABOLISM) if(holder.has_reagent("carpotoxin")) - holder.remove_reagent("carpotoxin", 1*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("carpotoxin", 10*REAGENTS_METABOLISM) if(holder.has_reagent("zombiepowder")) - holder.remove_reagent("zombiepowder", 0.5*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("zombiepowder", 10*REAGENTS_METABOLISM) if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 2*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("mindbreaker", 10*REAGENTS_METABOLISM) M.hallucination = max(0, M.hallucination - 5*REAGENTS_EFFECT_MULTIPLIER) M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER) ..() @@ -359,6 +360,8 @@ datum M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER) M.adjustOxyLoss(3*REAGENTS_EFFECT_MULTIPLIER) M.sleeping += 1 + // Sleep toxins should always be consumed pretty fast + holder.remove_reagent(src.id, 0.1) ..() return @@ -428,6 +431,8 @@ datum M.stuttering = 0 M.confused = 0 M.jitteriness = 0 + // Sleep toxins should always be consumed pretty fast + holder.remove_reagent(src.id, 0.1) ..() return @@ -933,12 +938,13 @@ datum id = "virusfood" description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce." reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM + nutriment_factor = 2 * FOOD_METABOLISM color = "#899613" // rgb: 137, 150, 19 on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.nutrition += nutriment_factor*REAGENTS_EFFECT_MULTIPLIER + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return @@ -1160,7 +1166,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(holder.has_reagent("inaprovaline")) - holder.remove_reagent("inaprovaline", 2*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("inaprovaline", 10*REAGENTS_METABOLISM) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER) ..() return @@ -1279,7 +1285,7 @@ datum if(!M) M = holder.my_atom M.adjustOxyLoss(-2*REAGENTS_EFFECT_MULTIPLIER) if(holder.has_reagent("lexorin")) - holder.remove_reagent("lexorin", 2*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("lexorin", 10*REAGENTS_METABOLISM) ..() return @@ -1296,7 +1302,7 @@ datum if(!M) M = holder.my_atom M.adjustOxyLoss(-M.getOxyLoss()) if(holder.has_reagent("lexorin")) - holder.remove_reagent("lexorin", 2*REAGENTS_EFFECT_MULTIPLIER) + holder.remove_reagent("lexorin", 10*REAGENTS_METABOLISM) ..() return @@ -1396,7 +1402,7 @@ datum M.AdjustStunned(-1) M.AdjustWeakened(-1) if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 5) + holder.remove_reagent("mindbreaker", 10*REAGENTS_METABOLISM) M.hallucination = max(0, M.hallucination - 10*REAGENTS_EFFECT_MULTIPLIER) if(prob(60)) M.adjustToxLoss(1) ..() @@ -1713,6 +1719,9 @@ datum if(61 to INFINITY) M.sleeping += 1 M.adjustToxLoss((data - 50) * REAGENTS_EFFECT_MULTIPLIER) + + // Sleep toxins should always be consumed pretty fast + holder.remove_reagent(src.id, 0.1) ..() return @@ -1736,6 +1745,8 @@ datum M.sleeping += 1 M.adjustToxLoss(data - 50) data++ + // Sleep toxins should always be consumed pretty fast + holder.remove_reagent(src.id, 0.1) ..() return @@ -1748,12 +1759,13 @@ datum id = "nutriment" description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID - nutriment_factor = 15 * REAGENTS_METABOLISM + nutriment_factor = 15 * FOOD_METABOLISM color = "#664330" // rgb: 102, 67, 48 on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.nutrition += nutriment_factor // For hunger and fatness + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return @@ -1761,21 +1773,21 @@ datum name = "Coco Powder" id = "coco" description = "A fatty, bitter paste made from coco beans." - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 5 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 sprinkles name = "Sprinkles" id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 syndicream name = "Cream filling" id = "syndicream" description = "Delicious cream filling of a mysterious origin. Tastes criminally good." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#AB7878" // rgb: 171, 120, 120 cornoil @@ -1783,7 +1795,7 @@ datum id = "cornoil" description = "An oil derived from various types of corn." reagent_state = LIQUID - nutriment_factor = 20 * REAGENTS_METABOLISM + nutriment_factor = 20 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 reaction_turf(var/turf/simulated/T, var/volume) @@ -1817,7 +1829,7 @@ datum name = "Dry Ramen" id = "dry_ramen" description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 hot_ramen @@ -1825,7 +1837,7 @@ datum id = "hot_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 5 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 on_mob_life(var/mob/living/M as mob) @@ -1839,7 +1851,7 @@ datum id = "hell_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 5 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 on_mob_life(var/mob/living/M as mob) @@ -1851,7 +1863,7 @@ datum name = "flour" id = "flour" description = "This is what you rub all over yourself to pretend to be a ghost." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#FFFFFF" // rgb: 0, 0, 0 reaction_turf(var/turf/T, var/volume) @@ -1864,7 +1876,7 @@ datum id = "cherryjelly" description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." reagent_state = LIQUID - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#801E28" // rgb: 128, 30, 40 //Drugs @@ -1917,7 +1929,7 @@ datum id = "lipozine" description = "A chemical compound that causes a powerful fat-burning reaction." reagent_state = LIQUID - nutriment_factor = 10 * REAGENTS_METABOLISM + nutriment_factor = 10 * FOOD_METABOLISM color = "#BBEDA4" // rgb: 187, 237, 164 on_mob_life(var/mob/living/M as mob) @@ -1934,7 +1946,7 @@ datum id = "soysauce" description = "A salty sauce made from the soy plant." reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM + nutriment_factor = 2 * FOOD_METABOLISM color = "#792300" // rgb: 121, 35, 0 ketchup @@ -1942,7 +1954,7 @@ datum id = "ketchup" description = "Ketchup, catsup, whatever. It's tomato paste." reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 5 * FOOD_METABOLISM color = "#731008" // rgb: 115, 16, 8 sodiumchloride @@ -1981,7 +1993,7 @@ datum if(1 to 15) M.bodytemperature += 5 * TEMPERATURE_DAMAGE_COEFFICIENT if(holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 5) + holder.remove_reagent("frostoil", 10*REAGENTS_METABOLISM) if(istype(M, /mob/living/carbon/metroid)) M.bodytemperature += rand(5,20) if(15 to 25) @@ -2067,7 +2079,7 @@ datum if(1 to 15) M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 5) + holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) if(istype(M, /mob/living/carbon/metroid)) M.bodytemperature -= rand(5,20) if(15 to 25) @@ -2101,11 +2113,12 @@ datum id = "coco" description = "A fatty, bitter paste made from coco beans." reagent_state = SOLID - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 5 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return @@ -2114,13 +2127,14 @@ datum id = "hot_coco" description = "Made with love! And coco beans." reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM + nutriment_factor = 2 * FOOD_METABOLISM color = "#403010" // rgb: 64, 48, 16 on_mob_life(var/mob/living/M as mob) if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return @@ -2173,15 +2187,17 @@ datum name = "Sprinkles" id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Head of Security", "Detective", "Warden")) if(!M) M = holder.my_atom M.heal_organ_damage(1,1) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return ..() @@ -2190,16 +2206,18 @@ datum name = "Cream filling" id = "syndicream" description = "Delicious cream filling of a mysterious origin. Tastes criminally good." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#AB7878" // rgb: 171, 120, 120 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) if(istype(M, /mob/living/carbon/human) && M.mind) if(M.mind.special_role) if(!M) M = holder.my_atom M.heal_organ_damage(1,1) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return ..() @@ -2209,11 +2227,12 @@ datum id = "cornoil" description = "An oil derived from various types of corn." reagent_state = LIQUID - nutriment_factor = 20 * REAGENTS_METABOLISM + nutriment_factor = 20 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return reaction_turf(var/turf/simulated/T, var/volume) @@ -2255,11 +2274,12 @@ datum id = "dry_ramen" description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." reagent_state = SOLID - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return @@ -2268,11 +2288,12 @@ datum id = "hot_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 5 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT)) ..() @@ -2283,11 +2304,12 @@ datum id = "hell_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 5 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT ..() return @@ -2297,11 +2319,12 @@ datum id = "flour" description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#FFFFFF" // rgb: 0, 0, 0 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return @@ -2315,11 +2338,12 @@ datum id = "cherryjelly" description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." reagent_state = LIQUID - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#801E28" // rgb: 128, 30, 40 on_mob_life(var/mob/living/M as mob) M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return @@ -2332,7 +2356,7 @@ datum id = "drink" description = "Uh, some kind of drink." reagent_state = LIQUID - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#E78108" // rgb: 231, 129, 8 var/adj_dizzy = 0 var/adj_drowsy = 0 @@ -2342,12 +2366,15 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) if (adj_dizzy) M.dizziness = max(0,M.dizziness + adj_dizzy) if (adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy) if (adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy) if (adj_temp) if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT)) + // Drinks should be used up faster than other reagents. + holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return @@ -2448,7 +2475,7 @@ datum name = "Potato Juice" id = "potato" description = "Juice of the potato. Bleh." - nutriment_factor = 2 * REAGENTS_METABOLISM + nutriment_factor = 2 * FOOD_METABOLISM color = "#302000" // rgb: 48, 32, 0 milk @@ -2460,7 +2487,7 @@ datum on_mob_life(var/mob/living/M as mob) if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 2) + holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) ..() return @@ -2480,7 +2507,7 @@ datum name = "Hot Chocolate" id = "hot_coco" description = "Made with love! And coco beans." - nutriment_factor = 2 * REAGENTS_METABOLISM + nutriment_factor = 2 * FOOD_METABOLISM color = "#403010" // rgb: 64, 48, 16 adj_temp = 5 @@ -2498,7 +2525,9 @@ datum ..() M.make_jittery(5) if(adj_temp > 0 && holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 5) + holder.remove_reagent("frostoil", 10*REAGENTS_METABOLISM) + + holder.remove_reagent(src.id, 0.1) return icecoffee @@ -2704,6 +2733,7 @@ datum on_mob_life(var/mob/living/M as mob) M:nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) if(!src.data) data = 1 src.data++ @@ -2749,7 +2779,7 @@ datum name = "Beer" id = "beer" description = "An alcoholic beverage made from malted grains, hops, yeast, and water." - nutriment_factor = 2 * REAGENTS_METABOLISM + nutriment_factor = 2 * FOOD_METABOLISM color = "#664300" // rgb: 102, 67, 0 on_mob_life(var/mob/living/M as mob) ..() @@ -2877,6 +2907,7 @@ datum on_mob_life(var/mob/living/M as mob) ..() M:nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) M:drowsyness = max(0,M:drowsyness-7) //if(!M:sleeping_willingly) // M:sleeping = max(0,M.sleeping-2) @@ -3026,11 +3057,12 @@ datum id = "doctorsdelight" description = "A gulp a day keeps the MediBot away. That's probably for the best." reagent_state = LIQUID - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#664300" // rgb: 102, 67, 0 on_mob_life(var/mob/living/M as mob) M:nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) if(!M) M = holder.my_atom if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2) if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0) @@ -3296,14 +3328,14 @@ datum name = "Banana Mama" id = "bananahonk" description = "A drink from Clown Heaven." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#664300" // rgb: 102, 67, 0 silencer name = "Silencer" id = "silencer" description = "A drink from Mime Heaven." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#664300" // rgb: 102, 67, 0 changelingsting @@ -3348,5 +3380,5 @@ datum name = "Driest Martini" id = "driestmartini" description = "Only for the experienced. You think you see sand floating in the glass." - nutriment_factor = 1 * REAGENTS_METABOLISM + nutriment_factor = 1 * FOOD_METABOLISM color = "#2E6671" // rgb: 46, 102, 113