mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-15 01:46:30 +01:00
Antag Dirty Bombs & Bodyhorror Parasites (#16317)
* dirty bombs & bodyhorror * clean up + extra flavour CE_ANTIEMETIC taken into account in the delayed_vomit() proc. doesn't need to subtract from CE_EMETIC anymore. * desc. fix, TC tweak, syringe gun kit * dirty bomb tweaks radiation remains for as long as advertised (~8mins in an open space) it also actually leaves behind the green goo now.
This commit is contained in:
@@ -80,6 +80,7 @@
|
||||
#define CE_OXYGENATED "oxygenated" // Dexalin
|
||||
#define CE_BLOODCLOT "bloodclot" // Coagzolug
|
||||
#define CE_ORGANREPAIR "organrepair" // Rezadone
|
||||
#define CE_ANTIPARASITE "antiparasite" // Helmizole, garlic
|
||||
|
||||
// Deal damage
|
||||
#define CE_BREATHLOSS "breathloss"
|
||||
|
||||
@@ -140,8 +140,10 @@
|
||||
#define BP_OPTICS "optics"
|
||||
#define BP_IPCTAG "ipc tag"
|
||||
|
||||
// Zombie organ
|
||||
// Parasite organs
|
||||
#define BP_ZOMBIE_PARASITE "black tumour"
|
||||
#define BP_WORM_HEART "heart fluke"
|
||||
#define BP_WORM_NERVE "nerve fluke"
|
||||
|
||||
//Augment organs
|
||||
#define BP_AUG_TIMEPIECE "integrated timepiece"
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
// Chemical, Biological, Radiological ~~and Nuclear~~ Weapons
|
||||
/datum/uplink_item/item/bioweapons
|
||||
category = /datum/uplink_category/bioweapons
|
||||
|
||||
/datum/uplink_item/item/bioweapons/random_toxin
|
||||
name = "Random Toxins Kit"
|
||||
desc = "A kit that contains 3 vials containing random toxins. Comes with a syringe!"
|
||||
item_cost = 1
|
||||
path = /obj/item/storage/box/syndie_kit/toxin
|
||||
|
||||
/datum/uplink_item/item/bioweapons/nerveworms_kit
|
||||
name = "Parasitic Worms Kit - Nerve Fluke"
|
||||
desc = "Contains the eggs of a Nerve Fluke. Non-lethal but incapacitating."
|
||||
item_cost = 3
|
||||
path = /obj/item/storage/box/syndie_kit/nerveworms
|
||||
|
||||
/datum/uplink_item/item/bioweapons/heartworms_kit
|
||||
name = "Parasitic Worms Kit - Heart Fluke"
|
||||
desc = "Contains the eggs of a Heart Fluke. Lethal if left untreated."
|
||||
item_cost = 5
|
||||
path = /obj/item/storage/box/syndie_kit/heartworms
|
||||
|
||||
/datum/uplink_item/item/bioweapons/greimorian_eggs
|
||||
name = "Greimorian Eggs"
|
||||
desc = "A cluster of greimorian eggs. (They will be planted at your feet on-purchase and CANNOT be moved, so make sure you're where you want them to be)"
|
||||
item_cost = 4
|
||||
path = /obj/effect/spider/eggcluster
|
||||
|
||||
/datum/uplink_item/item/bioweapons/radsuit
|
||||
name = "Radiation Suit"
|
||||
desc = "A kit containing a radiation suit. Complete with a geiger counter and one anti-radiation tablet."
|
||||
item_cost = 1
|
||||
path = /obj/item/storage/box/syndie_kit/radsuit
|
||||
|
||||
/datum/uplink_item/item/bioweapons/dirtybomb
|
||||
name = "Dirty Bomb"
|
||||
desc = "A small explosive laced with radium. The explosion is small, but the radioactive will affect a large area for a while (10 minutes approx)."
|
||||
item_cost = 4
|
||||
path = /obj/item/plastique/dirty
|
||||
|
||||
/datum/uplink_item/item/bioweapons/syringe_gun
|
||||
name = "Syringe Gun Kit"
|
||||
desc = "A kit containing a syringe gun and 3 disassembled darts. Fill a syringe, add it to a dart, then load into the rifle."
|
||||
item_cost = 3
|
||||
path = /obj/item/storage/box/syndie_kit/syringe_gun
|
||||
@@ -14,12 +14,6 @@
|
||||
item_cost = 1
|
||||
path = /obj/item/storage/box/syndie_kit/cigarette
|
||||
|
||||
/datum/uplink_item/item/stealthy_weapons/random_toxin
|
||||
name = "Random Toxins Kit"
|
||||
desc = "A kit that contains 3 vials containing random toxins. Comes with a syringe!"
|
||||
item_cost = 1
|
||||
path = /obj/item/storage/box/syndie_kit/toxin
|
||||
|
||||
/datum/uplink_item/item/stealthy_weapons/pens
|
||||
name = "Pen-jector Kit"
|
||||
desc = "A kit that contains four differently coloured pens. A blue pacifying pen, a green pen containing healing chemicals, and a yellow hyperzine pen."
|
||||
|
||||
@@ -88,3 +88,6 @@
|
||||
|
||||
/datum/uplink_category/martial_arts
|
||||
name = "Martial Arts"
|
||||
|
||||
/datum/uplink_category/bioweapons
|
||||
name = "Chemical, Biological & Radiological Weaponary"
|
||||
|
||||
@@ -65,3 +65,25 @@
|
||||
reagents.add_reagent(/singleton/reagent/venenum,volume)
|
||||
desc = "Contains venenum."
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/vial/nerveworm_eggs
|
||||
flags = 0
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/vial/nerveworm_eggs/Initialize()
|
||||
. = ..()
|
||||
if(is_open_container())
|
||||
flags ^= OPENCONTAINER
|
||||
reagents.add_reagent(/singleton/reagent/toxin/nerveworm_eggs, 2)
|
||||
desc = "<b>BIOHAZARDOUS! - Nerve Fluke eggs.</b> Purchased from <i>SciSupply Eridani</i>, recently incorporated into <i>Zeng-Hu Pharmaceuticals' Keiretsu</i>!"
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/vial/heartworm_eggs
|
||||
flags = 0
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/vial/heartworm_eggs/Initialize()
|
||||
. = ..()
|
||||
if(is_open_container())
|
||||
flags ^= OPENCONTAINER
|
||||
reagents.add_reagent(/singleton/reagent/toxin/heartworm_eggs, 2)
|
||||
desc = "<b>BIOHAZARDOUS! - Heart Fluke eggs.</b> Purchased from <i>SciSupply Eridani</i>, recently incorporated into <i>Zeng-Hu Pharmaceuticals' Keiretsu</i>!"
|
||||
update_icon()
|
||||
|
||||
@@ -138,3 +138,21 @@
|
||||
R.cell.use(1000)
|
||||
can_deploy = TRUE
|
||||
maptext = "<span style=\"font-family: 'Small Fonts'; -dm-text-outline: 1 black; font-size: 7px;\">Ready</span>"
|
||||
|
||||
/obj/item/plastique/dirty
|
||||
name = "dirty bomb"
|
||||
desc = "A small explosive laced with radium. The explosion is small, but the radioactive material will remain for a fair while."
|
||||
timer = 300
|
||||
|
||||
/obj/item/plastique/dirty/attack_self(mob/user as mob)
|
||||
var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num
|
||||
if(user.get_active_hand() == src)
|
||||
newtime = Clamp(newtime, 300, 60000)
|
||||
timer = newtime
|
||||
to_chat(user, SPAN_NOTICE("Timer set for [timer] seconds."))
|
||||
|
||||
/obj/item/plastique/dirty/explode(turf/location)
|
||||
if(location)
|
||||
SSradiation.radiate(src, 250)
|
||||
new /obj/effect/decal/cleanable/greenglow(get_turf(src))
|
||||
..()
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
starts_with = list(/obj/item/reagent_containers/pill/parvosil = 3)
|
||||
|
||||
/obj/item/storage/pill_bottle/assorted
|
||||
name = "pill bottle (assorted)"
|
||||
name = "bottle of assorted pills"
|
||||
desc = "Commonly found on paramedics, these assorted pill bottles contain all the basics."
|
||||
starts_with = list(
|
||||
/obj/item/reagent_containers/pill/inaprovaline = 6,
|
||||
@@ -155,6 +155,21 @@
|
||||
)
|
||||
|
||||
/obj/item/storage/pill_bottle/antidexafen
|
||||
name = "pill bottle (cold medicine)"
|
||||
name = "bottle of 15u Antidexafen pills"
|
||||
desc = "All-in-one cold medicine. 15u dose per pill. Safe for babies like you!"
|
||||
starts_with = list(/obj/item/reagent_containers/pill/antidexafen = 21)
|
||||
|
||||
/obj/item/storage/pill_bottle/antiparasitic
|
||||
name = "bottle of 5u Helmizole pills"
|
||||
desc = "Contains pills used to treat parasitic infections caused by worms."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/antiparasitic = 8)
|
||||
|
||||
/obj/item/storage/pill_bottle/asinodryl
|
||||
name = "bottle of 10u Asinodryl pills"
|
||||
desc = "Contains pills used to treat nausea and vomiting."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/asinodryl = 8)
|
||||
|
||||
/obj/item/storage/pill_bottle/steramycin
|
||||
name = "bottle of 5u Steramycin pills"
|
||||
desc = "Contains prophylactic antibiotic pills."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/steramycin = 3)
|
||||
|
||||
@@ -197,3 +197,23 @@
|
||||
starts_with = list(
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/berserk = 2
|
||||
)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/nerveworms
|
||||
name = "nerve fluke kit"
|
||||
desc = "Contains the eggs of a Nerve Fluke (non-lethal, incapacitating)."
|
||||
starts_with = list(/obj/item/reagent_containers/glass/beaker/vial/nerveworm_eggs = 1, /obj/item/reagent_containers/syringe = 1, /obj/item/reagent_containers/pill/antiparasitic = 1, /obj/item/reagent_containers/pill/asinodryl = 1)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/heartworms
|
||||
name = "heart fluke kit"
|
||||
desc = "Contains the eggs of a Heart Fluke (lethal)."
|
||||
starts_with = list(/obj/item/reagent_containers/glass/beaker/vial/heartworm_eggs = 1, /obj/item/reagent_containers/syringe = 1, /obj/item/reagent_containers/pill/antiparasitic = 1, /obj/item/reagent_containers/pill/asinodryl = 1)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/radsuit
|
||||
name = "radiation suit kit"
|
||||
desc = "Contains a radiation suit and geiger counter to protect you from radiation."
|
||||
starts_with = list(/obj/item/clothing/head/radiation = 1, /obj/item/clothing/suit/radiation = 1, /obj/item/clothing/glasses/safety/goggles = 1, /obj/item/device/geiger = 1, /obj/item/reagent_containers/pill/hyronalin = 1)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/syringe_gun
|
||||
name = "syringe gun kit"
|
||||
desc = "Contains a syringe gun and the parts require to assemble a few darts."
|
||||
starts_with = list(/obj/item/gun/launcher/syringe = 1, /obj/item/syringe_cartridge = 3, /obj/item/reagent_containers/syringe = 3)
|
||||
|
||||
@@ -152,12 +152,24 @@
|
||||
/obj/item/stack/medical/splint = 1,
|
||||
/obj/item/bodybag = 2,
|
||||
/obj/item/bodybag/cryobag = 1,
|
||||
/obj/item/storage/pill_bottle/kelotane = 2,
|
||||
/obj/item/storage/pill_bottle/bicaridine = 2,
|
||||
/obj/item/storage/pill_bottle/antitox = 2,
|
||||
/obj/item/auto_cpr = 1,
|
||||
/obj/item/storage/pill_bottle/kelotane = 3,
|
||||
/obj/item/storage/pill_bottle/bicaridine = 3,
|
||||
/obj/item/storage/pill_bottle/antitox = 3,
|
||||
/obj/item/storage/pill_bottle/mortaphenyl = 2,
|
||||
/obj/item/reagent_containers/syringe/dylovene = 2,
|
||||
/obj/item/reagent_containers/syringe/inaprovaline = 2,
|
||||
/obj/item/storage/pill_bottle/antiparasitic = 1,
|
||||
/obj/item/storage/pill_bottle/asinodryl = 1,
|
||||
/obj/item/storage/pill_bottle/steramycin =1,
|
||||
/obj/item/reagent_containers/syringe/dylovene = 3,
|
||||
/obj/item/reagent_containers/syringe/inaprovaline = 3,
|
||||
/obj/item/reagent_containers/syringe/antiparasitic = 1,
|
||||
/obj/item/reagent_containers/syringe/antibiotic = 2,
|
||||
/obj/item/reagent_containers/syringe/fluvectionem = 2,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/coagzolug = 2,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/hyronalin = 2,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone = 1,
|
||||
/obj/item/reagent_containers/inhaler/pneumalin = 1,
|
||||
/obj/item/reagent_containers/inhaler/peridaxon = 1,
|
||||
/obj/item/stack/nanopaste = 1
|
||||
)
|
||||
|
||||
|
||||
@@ -973,6 +973,10 @@
|
||||
|
||||
if(stomach.ingested.total_volume)
|
||||
stomach.ingested.trans_to_obj(splat, min(15, stomach.ingested.total_volume))
|
||||
for(var/obj/item/organ/internal/parasite/P in src.internal_organs)
|
||||
if(P)
|
||||
if(P.egg && (P.stage == P.max_stage))
|
||||
splat.reagents.add_reagent(P.egg, 2)
|
||||
handle_additional_vomit_reagents(splat)
|
||||
splat.update_icon()
|
||||
|
||||
@@ -985,6 +989,10 @@
|
||||
if(!check_has_mouth() || isSynthetic() || !timevomit || !level || stat == DEAD || lastpuke)
|
||||
return
|
||||
|
||||
if(chem_effects[CE_ANTIEMETIC])
|
||||
to_chat(src, SPAN_WARNING("You feel a very brief wave of nausea, but it quickly disapparates."))
|
||||
return
|
||||
|
||||
if(deliberate)
|
||||
if(incapacitated())
|
||||
to_chat(src, SPAN_WARNING("You cannot do that right now."))
|
||||
|
||||
@@ -605,10 +605,7 @@
|
||||
adjustToxLoss(chem_effects[CE_TOXIN])
|
||||
|
||||
if(CE_EMETIC in chem_effects)
|
||||
var/nausea = chem_effects[CE_EMETIC]
|
||||
if(CE_ANTIEMETIC in chem_effects)
|
||||
nausea -= min(nausea, chem_effects[CE_ANTIEMETIC]) // so it can only go down to 0
|
||||
if(prob(nausea))
|
||||
if(prob(chem_effects[CE_EMETIC]))
|
||||
delayed_vomit()
|
||||
|
||||
if(CE_ITCH in chem_effects)
|
||||
|
||||
@@ -731,6 +731,10 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HURT)
|
||||
return
|
||||
if(stat == DEAD)
|
||||
return
|
||||
if(chem_effects[CE_ANTIEMETIC])
|
||||
to_chat(src, SPAN_WARNING("You feel a very brief wave of nausea, but it quickly disapparates."))
|
||||
return
|
||||
|
||||
if(!lastpuke)
|
||||
lastpuke = 1
|
||||
to_chat(src, "<span class='warning'>You feel nauseous...</span>")
|
||||
|
||||
@@ -5,11 +5,14 @@
|
||||
var/stage = 1
|
||||
var/max_stage = 4
|
||||
var/stage_ticker = 0
|
||||
var/recession = 0
|
||||
var/infection_speed = 2 //Will be determined by get_infect_speed()
|
||||
var/infect_speed_high = 35 //The fastest this parasite will advance stages
|
||||
var/infect_speed_low = 15 //The slowest this parasite will advance stages
|
||||
var/stage_interval = 600 //time between stages, in seconds
|
||||
var/stage_interval = 300 //time between stages, in seconds. interval of 300 allows convenient treating with antiparasitics, higher will require spaced dosing of medications.
|
||||
var/subtle = 0 //will the body reject the parasite naturally?
|
||||
var/egg = null //does the parasite have a reagent which seeds an infection?
|
||||
var/drug_resistance = 0 //is the parasite resistant to antiparasitic medications?
|
||||
|
||||
/obj/item/organ/internal/parasite/Initialize()
|
||||
. = ..()
|
||||
@@ -20,17 +23,28 @@
|
||||
|
||||
/obj/item/organ/internal/parasite/process()
|
||||
..()
|
||||
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if(stage < max_stage)
|
||||
stage_ticker += infection_speed
|
||||
if(owner.chem_effects[CE_ANTIPARASITE] && !drug_resistance)
|
||||
recession = owner.chem_effects[CE_ANTIPARASITE]/10
|
||||
|
||||
if(stage_ticker >= stage*stage_interval)
|
||||
stage = min(stage+1,max_stage)
|
||||
get_infect_speed() //Each stage may progress faster or slower than the previous one
|
||||
stage_effect()
|
||||
if((stage < max_stage) && !recession)
|
||||
stage_ticker = Clamp(stage_ticker+=infection_speed, 0, stage_interval*max_stage)
|
||||
if(stage_ticker >= stage*stage_interval)
|
||||
stage = min(stage+1,max_stage)
|
||||
get_infect_speed() //Each stage may progress faster or slower than the previous one
|
||||
stage_effect()
|
||||
|
||||
if(recession)
|
||||
stage_ticker = Clamp(stage_ticker-=recession, 0, stage_interval*max_stage)
|
||||
if(stage_ticker <= stage*stage_interval-stage_interval)
|
||||
stage = max(stage-1, 1)
|
||||
stage_effect()
|
||||
if(!owner.chem_effects[CE_ANTIPARASITE] || drug_resistance)
|
||||
recession = 0
|
||||
if(stage_ticker == 0)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/organ/internal/parasite/handle_rejection()
|
||||
if(subtle)
|
||||
@@ -57,9 +71,12 @@
|
||||
|
||||
parent_organ = BP_CHEST
|
||||
stage_interval = 150
|
||||
drug_resistance = 1
|
||||
|
||||
origin_tech = list(TECH_BIO = 3)
|
||||
|
||||
egg = /singleton/reagent/kois
|
||||
|
||||
/obj/item/organ/internal/parasite/kois/process()
|
||||
..()
|
||||
|
||||
@@ -128,8 +145,12 @@
|
||||
parent_organ = BP_HEAD
|
||||
var/removed_langs = 0
|
||||
stage_interval = 150
|
||||
drug_resistance = 1
|
||||
|
||||
origin_tech = list(TECH_BIO = 7)
|
||||
|
||||
egg = /singleton/reagent/kois/black
|
||||
|
||||
/obj/item/organ/internal/parasite/blackkois/process()
|
||||
..()
|
||||
|
||||
@@ -229,8 +250,11 @@
|
||||
organ_tag = BP_ZOMBIE_PARASITE
|
||||
parent_organ = BP_HEAD
|
||||
stage_interval = 150
|
||||
drug_resistance = 1
|
||||
relative_size = 0
|
||||
|
||||
egg = /singleton/reagent/toxin/trioxin
|
||||
|
||||
var/last_heal = 0
|
||||
var/heal_rate = 5 SECONDS
|
||||
|
||||
@@ -320,3 +344,97 @@
|
||||
owner.update_dna()
|
||||
else
|
||||
owner.adjustToxLoss(50)
|
||||
|
||||
//Parasitic Worms//
|
||||
|
||||
/obj/item/organ/internal/parasite/nerveworm
|
||||
name = "bundle of nerve flukes"
|
||||
icon = 'icons/obj/organs/organs.dmi'
|
||||
icon_state = "helminth"
|
||||
dead_icon = "helminth_dead"
|
||||
|
||||
organ_tag = BP_WORM_NERVE
|
||||
parent_organ = BP_L_ARM //if desperate, can lop your arm off to remove the infection :)
|
||||
subtle = 1
|
||||
|
||||
origin_tech = list(TECH_BIO = 4)
|
||||
|
||||
egg = /singleton/reagent/toxin/nerveworm_eggs
|
||||
|
||||
/obj/item/organ/internal/parasite/nerveworm/process()
|
||||
..()
|
||||
|
||||
if (!owner)
|
||||
return
|
||||
|
||||
if(prob(10))
|
||||
owner.adjustNutritionLoss(10)
|
||||
|
||||
if(stage >= 2) //after ~5 minutes
|
||||
owner.confused = max(owner.confused, 10)
|
||||
|
||||
if(stage >= 3) //after ~10 minutes
|
||||
owner.slurring = max(owner.slurring, 100)
|
||||
owner.drowsiness = max(owner.drowsiness, 20)
|
||||
if(prob(1))
|
||||
owner.delayed_vomit()
|
||||
if(prob(2))
|
||||
to_chat(owner, SPAN_WARNING(pick("You feel a tingly sensation in your fingers.", "Is that pins and needles?", "An electric sensation jolts its way up your left arm.", "You smell something funny.", "You taste something funny.")))
|
||||
|
||||
if(stage >= 4) //after ~15 minutes
|
||||
if(prob(2))
|
||||
to_chat(owner, SPAN_WARNING(pick("A deep, tingling sensation paralyses your left arm.", "You feel as if you just struck your funny bone.", "You feel a pulsing sensation within your left arm.")))
|
||||
owner.emote(pick("twitch", "shiver"))
|
||||
owner.stuttering = 20
|
||||
if(prob(1))
|
||||
owner.seizure()
|
||||
if(prob(5))
|
||||
owner.reagents.add_reagent(/singleton/reagent/toxin/nerveworm_eggs, 2)
|
||||
owner.adjustHalLoss(15)
|
||||
to_chat(owner, SPAN_WARNING("An <b>extreme</b>, nauseating pain erupts from deep within your left arm!"))
|
||||
|
||||
|
||||
/obj/item/organ/internal/parasite/heartworm
|
||||
name = "bundle of heart flukes"
|
||||
icon = 'icons/obj/organs/organs.dmi'
|
||||
icon_state = "helminth"
|
||||
dead_icon = "helminth_dead"
|
||||
|
||||
organ_tag = BP_WORM_HEART
|
||||
parent_organ = BP_CHEST
|
||||
subtle = 1
|
||||
|
||||
stage_interval = 450 //~7.5 minutes/stage
|
||||
|
||||
origin_tech = list(TECH_BIO = 4)
|
||||
|
||||
egg = /singleton/reagent/toxin/heartworm_eggs
|
||||
|
||||
/obj/item/organ/internal/parasite/heartworm/process()
|
||||
..()
|
||||
|
||||
var/obj/item/organ/internal/heart = owner.internal_organs_by_name[BP_HEART]
|
||||
|
||||
if (!owner)
|
||||
return
|
||||
|
||||
if(prob(10))
|
||||
owner.adjustNutritionLoss(10)
|
||||
|
||||
if(stage >= 2) //after ~7.5 minutes
|
||||
if(prob(2))
|
||||
owner.emote("cough")
|
||||
|
||||
if(stage >= 3) //after ~15 minutes
|
||||
if(prob(7))
|
||||
heart.take_damage(rand(2,5))
|
||||
if(prob(5))
|
||||
to_chat(owner, SPAN_WARNING(pick("Your chest feels tight.", "Your chest is aching.", "You feel a stabbing pain in your chest!", "You feel a painful, tickly sensation within your chest.")))
|
||||
owner.adjustHalLoss(15)
|
||||
|
||||
if(stage >= 4) //after ~22.5 minutes
|
||||
if(prob(5))
|
||||
owner.reagents.add_reagent(/singleton/reagent/toxin/heartworm_eggs, 2)
|
||||
owner.adjustHalLoss(15)
|
||||
to_chat(owner, SPAN_WARNING("An <b>extreme</b>, nauseating pain erupts from the centre of your chest!"))
|
||||
|
||||
|
||||
@@ -665,6 +665,11 @@
|
||||
condiment_desc = "Perfect for repelling vampires and/or potential dates."
|
||||
condiment_icon_state = "garlic_sauce"
|
||||
|
||||
/singleton/reagent/nutriment/garlicsauce/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
. = ..()
|
||||
if(.)
|
||||
M.add_chemical_effect(CE_ANTIPARASITE, 10)
|
||||
|
||||
/singleton/reagent/nutriment/mayonnaise
|
||||
name = "Mayonnaise"
|
||||
description = "Mayonnaise, a staple classic for sandwiches."
|
||||
@@ -1214,6 +1219,11 @@
|
||||
|
||||
germ_adjust = 7.5 // has allicin, an antibiotic
|
||||
|
||||
/singleton/reagent/drink/garlicjuice/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
. = ..()
|
||||
if(.)
|
||||
M.add_chemical_effect(CE_ANTIPARASITE, 10)
|
||||
|
||||
/singleton/reagent/drink/onionjuice
|
||||
name = "Onion Juice"
|
||||
description = "Juice from an onion, for when you need to cry."
|
||||
|
||||
@@ -777,10 +777,17 @@
|
||||
metabolism = REM * 0.25
|
||||
fallback_specific_heat = 1
|
||||
|
||||
/singleton/reagent/asinodryl/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
. = ..()
|
||||
if(.)
|
||||
M.add_chemical_effect(CE_ANTIEMETIC, M.chem_doses[type]/4) // 1u should suppress 2u thetamycin
|
||||
M.add_chemical_effect(CE_STRAIGHTWALK)
|
||||
|
||||
/singleton/reagent/asinodryl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
M.add_chemical_effect(CE_ANTIEMETIC, M.chem_doses[type]/4) // 1u should suppress 2u thetamycin
|
||||
M.confused = max(M.confused - 10, 0)
|
||||
M.dizziness = max(M.confused - 10, 0)
|
||||
|
||||
/singleton/reagent/antidexafen
|
||||
name = "Antidexafen"
|
||||
@@ -1624,3 +1631,29 @@
|
||||
if(heart)
|
||||
to_chat(H, SPAN_DANGER("Your heart skips a beat and screams out in pain!"))
|
||||
heart.take_internal_damage(10)
|
||||
|
||||
/singleton/reagent/antiparasitic
|
||||
name = "Helmizole"
|
||||
description = "Helmizole is an anti-helminthic medication which combats parasitic worm infections, compromising their nervous system and inducing respiratory paralysis."
|
||||
reagent_state = LIQUID
|
||||
color = "#c7f3a4"
|
||||
overdose = 10
|
||||
od_minimum_dose = 1
|
||||
metabolism = REM*0.2
|
||||
scannable = TRUE
|
||||
taste_description = "alcohol"
|
||||
|
||||
/singleton/reagent/antiparasitic/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
. = ..()
|
||||
if(.)
|
||||
M.add_chemical_effect(CE_ANTIPARASITE, 50) //~10u will get rid of a standard-lengthed (stage interval = 300) parasitic infection. ~5mins to eliminate symptoms, ~7.5mins to kill parasite.
|
||||
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/2)
|
||||
|
||||
/singleton/reagent/antiparasitic/overdose(mob/living/carbon/M, alien, removed, scale, datum/reagents/holder)
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
for(var/obj/item/organ/internal/parasite/P in H.internal_organs)
|
||||
if(P)
|
||||
if(P.drug_resistance == 0)
|
||||
P.drug_resistance = 1
|
||||
|
||||
@@ -661,7 +661,7 @@
|
||||
taste_description = "acrid smoke"
|
||||
nicotine = 0.1
|
||||
|
||||
/singleton/reagent/toxin/tobacco/sweet
|
||||
/singleton/reagent/toxin/tobacco/sweet
|
||||
name = "Sweet Tobacco"
|
||||
description = "This tobacco is much sweeter than the strains usually found in human space."
|
||||
taste_description = "sweet tobacco"
|
||||
@@ -854,3 +854,53 @@
|
||||
/singleton/reagent/toxin/coagulated_blood/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder)
|
||||
M.add_chemical_effect(CE_NEPHROTOXIC, 0) // deal no damage, but prevent regeneration
|
||||
..()
|
||||
|
||||
/singleton/reagent/toxin/nerveworm_eggs
|
||||
name = "Nerve Fluke Eggs"
|
||||
description = "The eggs of a parasitic worm. These ones grow to infest the nervous system, working their way up from the peripheral to the central nervous system. The infection is gradual: lethargy, issues with motor coordination, then eventually seizures."
|
||||
reagent_state = SOLID
|
||||
color = "#b9b9d9"
|
||||
metabolism = REM*2
|
||||
ingest_met = REM*2
|
||||
touch_met = REM*5
|
||||
taste_description = "something tingly"
|
||||
taste_mult = 0.25
|
||||
strength = 0
|
||||
|
||||
/singleton/reagent/toxin/nerveworm_eggs/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder)
|
||||
..()
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(H.chem_effects[CE_ANTIPARASITE])
|
||||
return
|
||||
|
||||
if(!H.internal_organs_by_name[BP_WORM_NERVE])
|
||||
var/obj/item/organ/external/affected = H.get_organ(BP_L_ARM)
|
||||
var/obj/item/organ/internal/parasite/nerveworm/infest = new()
|
||||
infest.replaced(H, affected)
|
||||
|
||||
/singleton/reagent/toxin/heartworm_eggs
|
||||
name = "Heart Fluke Eggs"
|
||||
description = "The eggs of a parasitic worm. These ones grow to infest the cardiac tissue of the heart. The infection is gradual: coughing first, then eventually heart failure."
|
||||
reagent_state = SOLID
|
||||
color = "#caaaaa"
|
||||
metabolism = REM/2 //Slow metabolisation so medical can potentially screen it early, given it's danger.
|
||||
ingest_met = REM/2
|
||||
touch_met = REM*5
|
||||
taste_description = "something quite sour"
|
||||
taste_mult = 0.75
|
||||
strength = 0
|
||||
|
||||
/singleton/reagent/toxin/heartworm_eggs/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder)
|
||||
..()
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(H.chem_effects[CE_ANTIPARASITE])
|
||||
return
|
||||
|
||||
if(!H.internal_organs_by_name[BP_WORM_HEART])
|
||||
var/obj/item/organ/external/affected = H.get_organ(BP_CHEST)
|
||||
var/obj/item/organ/internal/parasite/heartworm/infest = new()
|
||||
infest.replaced(H, affected)
|
||||
|
||||
@@ -389,6 +389,13 @@
|
||||
required_reagents = list(/singleton/reagent/thetamycin = 2, /singleton/reagent/sterilizine = 1, /singleton/reagent/radium = 1)
|
||||
result_amount = 2
|
||||
|
||||
/datum/chemical_reaction/antiparasitic
|
||||
name = "Helmizole"
|
||||
id = "helmizole"
|
||||
result = /singleton/reagent/antiparasitic
|
||||
required_reagents = list(/singleton/reagent/dylovene = 1, /singleton/reagent/fluvectionem = 1, /singleton/reagent/leporazine = 1)
|
||||
result_amount = 2
|
||||
|
||||
/datum/chemical_reaction/cetahydramine
|
||||
name = "Cetahydramine"
|
||||
id = "cetahydramine"
|
||||
|
||||
@@ -294,7 +294,25 @@
|
||||
reagents_to_add = list(/singleton/reagent/iron = 5, /singleton/reagent/sugar = 10)
|
||||
|
||||
/obj/item/reagent_containers/pill/antidexafen
|
||||
name = "15u antidexafen"
|
||||
name = "15u Antidexafen"
|
||||
desc = "Common cold mediciation. Safe for babies!"
|
||||
icon_state = "pill4"
|
||||
reagents_to_add = list(/singleton/reagent/antidexafen = 10, /singleton/reagent/drink/lemonjuice = 5, /singleton/reagent/nutriment/mint = REM*0.2)
|
||||
|
||||
/obj/item/reagent_containers/pill/antiparasitic
|
||||
name = "5u Helmizole"
|
||||
desc = "An antiparasitic used to treat worms."
|
||||
icon_state = "pill11"
|
||||
reagents_to_add = list(/singleton/reagent/antiparasitic = 5)
|
||||
|
||||
/obj/item/reagent_containers/pill/asinodryl
|
||||
name = "10u Asinodryl"
|
||||
desc = "An antiemetic which prevents vomiting."
|
||||
icon_state = "pill20"
|
||||
reagents_to_add = list(/singleton/reagent/asinodryl = 10)
|
||||
|
||||
/obj/item/reagent_containers/pill/steramycin
|
||||
name = "5u Steramycin"
|
||||
desc = "A prophylactic antibiotic that kills infections before they start."
|
||||
icon_state = "pill8"
|
||||
reagents_to_add = list(/singleton/reagent/steramycin = 5)
|
||||
|
||||
@@ -441,3 +441,13 @@
|
||||
. = ..()
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/syringe/antiparasitic
|
||||
name = "Syringe (helmizole)"
|
||||
desc = "Contains an antiparasitic medication."
|
||||
reagents_to_add = list(/singleton/reagent/antiparasitic = 10)
|
||||
|
||||
/obj/item/reagent_containers/syringe/antiparasitic/Initialize()
|
||||
. = ..()
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
Reference in New Issue
Block a user