From 08ec1db17e356aee343c8e7ce862e9e6cf2f6e29 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 4 May 2016 19:58:44 -0400 Subject: [PATCH] food poisoning --- code/datums/diseases/food_poisoning.dm | 77 ++++++++++++++++++++++++ code/modules/reagents/newchem/disease.dm | 11 ++++ code/modules/reagents/newchem/food.dm | 3 + paradise.dme | 1 + 4 files changed, 92 insertions(+) create mode 100644 code/datums/diseases/food_poisoning.dm diff --git a/code/datums/diseases/food_poisoning.dm b/code/datums/diseases/food_poisoning.dm new file mode 100644 index 00000000000..25166ecf13b --- /dev/null +++ b/code/datums/diseases/food_poisoning.dm @@ -0,0 +1,77 @@ +/datum/disease/food_poisoning + name = "Food Poisoning" + max_stages = 3 + stage_prob = 5 + spread_text = "Non-Contagious" + spread_flags = SPECIAL + cure_text = "Sleep" + agent = "Salmonella" + cures = list("chicken_soup") + cure_chance = 10 + viable_mobtypes = list(/mob/living/carbon/human) + desc = "Nausea, sickness, and vomitting." + severity = MINOR + disease_flags = CURABLE + spread_flags = NON_CONTAGIOUS + var/remissive = 0 + +/datum/disease/food_poisoning/stage_act() + if(!remissive) + ..() + if(affected_mob.sleeping && prob(33)) + to_chat(affected_mob, "You feel better.") + remissive = 1 + if(remissive) + if(prob(stage_prob)) + stage-- + if(stage == 0) + cure() + return + switch(stage) + if(1) + if(prob(5)) + to_chat(affected_mob, "Your stomach feels weird.") + if(prob(5)) + to_chat(affected_mob, "You feel queasy.") + if(2) + if(affected_mob.sleeping && prob(40)) + to_chat(affected_mob, "You feel better.") + cure() + return + if(prob(1) && prob(10)) + to_chat(affected_mob, "You feel better.") + cure() + return + if(prob(10)) + affected_mob.emote("groan") + if(prob(5)) + to_chat(affected_mob, "Your stomach aches.") + if(prob(5)) + to_chat(affected_mob, "You feel nauseous.") + if(3) + if(affected_mob.sleeping && prob(25)) + to_chat(affected_mob, "You feel better.") + cure() + return + if(prob(1) && prob(10)) + to_chat(affected_mob, "You feel better.") + cure() + return + if(prob(10)) + affected_mob.emote("moan") + if(prob(10)) + affected_mob.emote("groan") + if(prob(1)) + to_chat(affected_mob, "Your stomach hurts.") + if(prob(1)) + to_chat(affected_mob, "You feel sick.") + if(prob(5)) + if(affected_mob.nutrition > 10) + affected_mob.visible_message("[affected_mob] vomits on the floor profusely!") + affected_mob.fakevomit(no_text = 1) + affected_mob.nutrition -= rand(3,5) + else + to_chat(affected_mob, "Your stomach lurches painfully!") + affected_mob.visible_message("[affected_mob] gags and retches!") + affected_mob.Stun(rand(2,4)) + affected_mob.Weaken(rand(2,4)) \ No newline at end of file diff --git a/code/modules/reagents/newchem/disease.dm b/code/modules/reagents/newchem/disease.dm index 9e2c4d89554..be1672434e4 100644 --- a/code/modules/reagents/newchem/disease.dm +++ b/code/modules/reagents/newchem/disease.dm @@ -62,6 +62,17 @@ M.ForceContractDisease(new /datum/disease/berserker(0)) ..() +/datum/reagent/salmonella + name = "Salmonella " + id = "salmonella " + description = "A nasty bacteria found in spoiled food." + reagent_state = LIQUID + color = "#1E4600" + +/datum/reagent/salmonella/on_mob_life(var/mob/living/carbon/M as mob) + if(!M) M = holder.my_atom + M.ForceContractDisease(new /datum/disease/food_poisoning(0)) + ..() /datum/reagent/spore name = "Blob Spores" diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm index a2f259242e8..e86ed8a2b11 100644 --- a/code/modules/reagents/newchem/food.dm +++ b/code/modules/reagents/newchem/food.dm @@ -10,8 +10,10 @@ datum/reagent/questionmark/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) if(!istype(M, /mob/living)) return if(method == INGEST) + M.Stun(2) M.Weaken(2) to_chat(M, "Ugh! Eating that was a terrible idea!") + M.ForceContractDisease(new /datum/disease/food_poisoning(0)) datum/reagent/egg name = "Egg" @@ -199,6 +201,7 @@ datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) M.reagents.add_reagent("toxin", rand(1,5)) else if(ranchance <= 5) to_chat(M, "That tasted absolutely FOUL.") + M.ForceContractDisease(new /datum/disease/food_poisoning(0)) else to_chat(M, "Yuck!") diff --git a/paradise.dme b/paradise.dme index cab6d3172c7..fa28523ca17 100644 --- a/paradise.dme +++ b/paradise.dme @@ -220,6 +220,7 @@ #include "code\datums\diseases\fake_gbs.dm" #include "code\datums\diseases\flu.dm" #include "code\datums\diseases\fluspanish.dm" +#include "code\datums\diseases\food_poisoning.dm" #include "code\datums\diseases\gbs.dm" #include "code\datums\diseases\magnitis.dm" #include "code\datums\diseases\pierrot_throat.dm"