mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-14 09:27:45 +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:
@@ -380,6 +380,7 @@
|
||||
#include "code\datums\uplink\ammunition.dm"
|
||||
#include "code\datums\uplink\announcements.dm"
|
||||
#include "code\datums\uplink\badassery.dm"
|
||||
#include "code\datums\uplink\bioweapons.dm"
|
||||
#include "code\datums\uplink\corporate_equipment.dm"
|
||||
#include "code\datums\uplink\devices_and_tools.dm"
|
||||
#include "code\datums\uplink\exosuit.dm"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
author: kermit
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Added a Chemical, Biological & Radiological Weapons tab on the Traitor Uplink"
|
||||
- rscadd: "Adds a 2 different parasitic worm kits: Nerve Flukes (3TC) which are non-lethal, incapacitating; Heart Flukes (5TC) which are lethal if left untreated."
|
||||
- rscadd: "Adds Helmizole (1u Dylovene, 1u Fluvectionem, 1u Leporazine) which is used to treat parasitic infections (does not treat k'ois mycosis parasites). 2x syringes spawn in the Medications Cabinet. ODing will make the parasite drug resistant, forcing surgical extraction."
|
||||
- rscadd: "Garlic(juice/sauce) also has weak antiparasitic properties. Only enough to slow progression."
|
||||
- rscadd: "Adds Greimorian Eggs (4TC) which are planted on the ground on-purchase."
|
||||
- rscadd: "Adds a Dirty Bomb (4TC). It functions like a plastic explosive but irradiates the room it detonates in for ~10 minutes. It has a minimum timer of 5 minutes. This is alongside a Radiation Suit Kit (1TC)"
|
||||
- rscadd: "Adds a Syringe Gun Kit (3TC) to the CBR tab with the components for 3 darts."
|
||||
- tweak: "The Random Toxin Kit is under the new CBR tab."
|
||||
- tweak: "Pill bottle naming consistency."
|
||||
- tweak: "Asinodryl now works properly. In addition to actually preventing vomiting, it now prevents dizziness (screen wobbling) and confusion (random step direction)."
|
||||
- tweak: "Updated the warehouse/strange crate spawns to include more recently added medical items/drugs (coagzolug, helmizole, pill bottles of x, stabiliser harnesses)."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -19311,6 +19311,8 @@
|
||||
/obj/item/storage/pill_bottle/dylovene,
|
||||
/obj/item/storage/pill_bottle/dermaline,
|
||||
/obj/item/storage/pill_bottle/bicaridine,
|
||||
/obj/item/reagent_containers/syringe/antiparasitic,
|
||||
/obj/item/reagent_containers/syringe/antiparasitic,
|
||||
/obj/item/reagent_containers/glass/bottle/antitoxin,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/gen_treatment)
|
||||
|
||||
Reference in New Issue
Block a user