diff --git a/code/modules/reagents/newchem/disease.dm b/code/modules/reagents/newchem/disease.dm new file mode 100644 index 00000000000..d89d61e3454 --- /dev/null +++ b/code/modules/reagents/newchem/disease.dm @@ -0,0 +1,14 @@ +/datum/reagent/spider_eggs + name = "spider eggs" + id = "spidereggs" + description = "A fine dust containing spider eggs. Oh gosh." + reagent_state = SOLID + color = "#FFFFFF" + +/datum/reagent/spider_eggs/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(volume > 2.5) + if(iscarbon(M)) + if(!M.get_int_organ(/obj/item/organ/internal/body_egg)) + new/obj/item/organ/internal/body_egg/spider_eggs(M) //Yes, even Xenos can fall victim to the plague that is spider infestation. + ..() \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 1e005b5c9ea..e550e2c1cd6 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -299,4 +299,4 @@ New() ..() - reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","sarin","histamine","venom","cyanide"), 40) \ No newline at end of file + reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","sarin","histamine","venom","cyanide","spidereggs"), 40) \ No newline at end of file diff --git a/code/modules/surgery/organs/parasites.dm b/code/modules/surgery/organs/parasites.dm new file mode 100644 index 00000000000..89f94ba43fc --- /dev/null +++ b/code/modules/surgery/organs/parasites.dm @@ -0,0 +1,35 @@ +/obj/item/organ/internal/body_egg/spider_eggs + name = "spider eggs" + icon = 'icons/effects/effects.dmi' + icon_state = "eggs" + var/stage = 1 + +/obj/item/organ/internal/body_egg/spider_eggs/on_life() + if(stage < 5 && prob(3)) + stage++ + + switch(stage) + if(2) + if(prob(3)) + owner.reagents.add_reagent("histamine", 2) + if(3) + if(prob(5)) + owner.reagents.add_reagent("histamine", 3) + if(4) + if(prob(12)) + owner.reagents.add_reagent("histamine", 5) + if(5) + owner << "You feel like something is tearing its way out of your skin..." + owner.reagents.add_reagent("histamine", 10) + if(prob(30)) + owner.emote("scream") + var/spiders = rand(3,5) + for(var/i in 1 to spiders) + new/obj/effect/spider/spiderling(get_turf(owner)) + owner.visible_message("[owner] bursts open! Holy fuck!") + owner.gib() + +/obj/item/organ/internal/body_egg/spider_eggs/remove(var/mob/living/carbon/M, var/special = 0) + ..() + M.reagents.del_reagent("spidereggs") //purge all remaining spider eggs reagent if caught, in time. + qdel(src) //We don't want people re-implanting these for near instant gibbings. \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index 5aacb4a45d5..40e7c3fd099 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1690,6 +1690,7 @@ #include "code\modules\reagents\reagent_dispenser.dm" #include "code\modules\reagents\newchem\Blob-Reagents.dm" #include "code\modules\reagents\newchem\chem_heater.dm" +#include "code\modules\reagents\newchem\disease.dm" #include "code\modules\reagents\newchem\drinks.dm" #include "code\modules\reagents\newchem\drugs.dm" #include "code\modules\reagents\newchem\food.dm" @@ -1882,6 +1883,7 @@ #include "code\modules\surgery\organs\organ_internal.dm" #include "code\modules\surgery\organs\organ_stump.dm" #include "code\modules\surgery\organs\pain.dm" +#include "code\modules\surgery\organs\parasites.dm" #include "code\modules\surgery\organs\robolimbs.dm" #include "code\modules\surgery\organs\skeleton.dm" #include "code\modules\surgery\organs\wound.dm"