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:
smellie
2023-05-16 01:34:10 +01:00
committed by GitHub
parent 0a3be0f04c
commit f237ea8309
24 changed files with 434 additions and 29 deletions
+1
View File
@@ -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"
+1
View File
@@ -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"
+3 -1
View File
@@ -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"
+45
View File
@@ -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."
+3
View File
@@ -88,3 +88,6 @@
/datum/uplink_category/martial_arts
name = "Martial Arts"
/datum/uplink_category/bioweapons
name = "Chemical, Biological & Radiological Weaponary"
+22
View File
@@ -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)
+17 -5
View File
@@ -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."))
+1 -4
View File
@@ -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)
+4
View File
@@ -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>")
+126 -8
View File
@@ -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()
+15
View File
@@ -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)