diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm
new file mode 100644
index 00000000000..19fed9d99db
--- /dev/null
+++ b/code/datums/diseases/tuberculosis.dm
@@ -0,0 +1,62 @@
+/datum/disease/tuberculosis
+ name = "Fungal tuberculosis"
+ max_stages = 4
+ spread_text = "Airborne"
+ cure_text = "Spaceacillin & salbutamol"
+ cures = list("spaceacillin", "salbutamol")
+ agent = "Fungal Tubercle bacillus Cosmosis"
+ viable_mobtypes = list(/mob/living/carbon/human)
+ cure_chance = 5//like hell are you getting out of hell
+ desc = "A rare highly transmittable virulent virus. Few samples exist, rumoured to be carefully grown and cultured by clandestine bio-weapon specialists. Causes fever, blood vomiting, lung damage, weight loss, and fatigue."
+ required_organs = list(/obj/item/organ/limb/head)
+ severity = DANGEROUS
+
+/datum/disease/tuberculosis/stage_act() //it begins
+ ..()
+
+ switch(stage)
+ if(2)
+ if(prob(2))
+ affected_mob.emote("cough")
+ affected_mob << "Your chest hurts."
+ if(prob(2))
+ affected_mob << "Your stomach violently rumbles!"
+ if(prob(2))
+ affected_mob << "You feel a sharp pain from your lower chest!"
+ affected_mob.adjustOxyLoss(5)
+ affected_mob.emote("gasp")
+ if(prob(5))
+ affected_mob.vomit(20)
+ if(3)
+ if(prob(2))
+ affected_mob << "You see four of everything"
+ affected_mob.Dizzy(5)
+ if(prob(2))
+ affected_mob << "You feel a cold sweat form."
+ if(prob(10))
+ affected_mob << "You feel air escape from your lungs painfully."
+ affected_mob.adjustOxyLoss(25)
+ affected_mob.emote("gasp")
+
+ if(4)
+ if(prob(2))
+ affected_mob << "[pick("You feel your heart slowing...", "You relax and slow your heartbeat.")]"
+ affected_mob.adjustStaminaLoss(70)
+ if(prob(10))
+ affected_mob.adjustStaminaLoss(100)
+ affected_mob.visible_message("[affected_mob] faints!", "You surrender yourself and feel at peace...")
+ affected_mob.sleeping += 5
+ if(prob(2))
+ affected_mob << "You feel your mind relax and your thoughts drift!"
+ affected_mob.confused = min(100, affected_mob.confused + 8)
+ if(prob(15))
+ affected_mob.vomit(0, 1)
+ if(prob(3))
+ affected_mob << "[pick("Your stomach silently rumbles...", "Your stomach seizes up and falls limp, muscles dead and lifeless.", "You could eat a crayon")]"
+ affected_mob.overeatduration = max(affected_mob.overeatduration - 100, 0)
+ affected_mob.nutrition = max(affected_mob.nutrition - 100, 0)
+ if(prob(15))
+ affected_mob << "[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]"
+ affected_mob.bodytemperature += 40
+ return
+
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index e8fa9613def..b79afa72ee4 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -292,6 +292,14 @@ var/list/uplink_items = list()
gamemodes = list(/datum/game_mode/nuclear,/datum/game_mode/gang)
surplus = 0
+/datum/uplink_item/stealthy_weapons/operator_virus_grenade
+ name = "Fungal Tuberculosis grenade"
+ desc = "A primed bio-grenade packed into a compact box. Comes with five Bio Virus Antidote Kit (BVAK) autoinjectors for rapid application on up to two targets each, a syringe, and a bottle containing the BVAK solution."
+ item = /obj/item/weapon/storage/box/syndie_kit/tuberculosisgrenade
+ cost = 12
+ surplus = 35
+ gamemodes = list(/datum/game_mode/nuclear)
+
/datum/uplink_item/dangerous/gygax
name = "Gygax Exosuit"
desc = "A lightweight exosuit, painted in a dark scheme. Its speed and equipment selection make it excellent for hit-and-run style attacks. \
@@ -549,6 +557,14 @@ var/list/uplink_items = list()
cost = 1
surplus = 50
+/datum/uplink_item/stealthy_weapons/traitor_virus_kit
+ name = "Virus Kit"
+ desc = "An active fungal pathogen in a sterile, compact box. Comes with one Bio Virus Antidote Kit (BVAK) autoinjector for rapid application on up to two targets each, a syringe, and a bottle containing the BVAK solution."
+ item = /obj/item/weapon/storage/box/syndie_kit/tuberculosiskit
+ cost = 20 //because nobody knows jack shit about virology
+ surplus = 50
+ excludefrom = list(/datum/game_mode/nuclear)
+
/datum/uplink_item/stealthy_weapons/traitor_chem_bottle
name = "Poison Kit"
desc = "An assortment of deadly chemicals packed into a compact box. Comes with a syringe for more precise application."
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index a6a525541d5..f7037ee5516 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -441,6 +441,25 @@
beakers += B1
beakers += B2
+/obj/item/weapon/grenade/chem_grenade/tuberculosis
+ name = "Fungal tuberculosis grenade"
+ desc = "WARNING: GRENADE WILL RELEASE DEADLY SPORES CONTAINING ACTIVE AGENTS. SEAL SUIT AND AIRFLOW BEFORE USE."
+ stage = READY
+
+/obj/item/weapon/grenade/chem_grenade/tuberculosis/New()
+ ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B2 = new(src)
+
+ B1.reagents.add_reagent("potassium", 50)
+ B1.reagents.add_reagent("phosphorus", 50)
+ B1.reagents.add_reagent("fungalspores", 200)
+ B2.reagents.add_reagent("blood", 250)
+ B2.reagents.add_reagent("sugar", 50)
+
+ beakers += B1
+ beakers += B2
+
#undef EMPTY
#undef WIRED
#undef READY
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 2ccaa9071f0..46963c125f5 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -240,3 +240,32 @@
new /obj/item/weapon/screwdriver/nuke(src)
new /obj/item/nuke_core_container(src)
new /obj/item/weapon/paper/nuke_instructions(src)
+
+
+/obj/item/weapon/storage/box/syndie_kit/tuberculosisgrenade
+ name = "boxed virus grenade kit"
+
+/obj/item/weapon/storage/box/virus_kit/tuberculosisgrenade/New()
+ ..()
+ new /obj/item/weapon/grenade/chem_grenade/tuberculosis
+ new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure
+ new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure
+ new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure
+ new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure
+ new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure
+ new /obj/item/weapon/reagent_containers/syringe
+ new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure
+ return
+
+/obj/item/weapon/storage/box/syndie_kit/tuberculosiskit
+ name = "boxed virus kit"
+
+/obj/item/weapon/storage/box/virus_kit/tuberculosiskit/New()
+ ..()
+ new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosis
+ new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure
+ new /obj/item/weapon/reagent_containers/syringe
+ new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure
+ return
+
+
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 11d169070d1..a1eb743a34e 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -763,6 +763,16 @@
if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
M.ContractDisease(new /datum/disease/transformation/xeno(0))
+/datum/reagent/fungalspores
+ name = "Tubercle bacillus Cosmosis microbes"
+ id = "fungalspores"
+ description = "Active fungal spores."
+ color = "#92D17D" // rgb: 146, 209, 125
+
+/datum/reagent/fungalspores/reaction_mob(mob/M, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0)
+ if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
+ M.ForceContractDisease(new /datum/disease/tuberculosis(0))
+
/datum/reagent/fluorosurfactant//foam precursor
name = "Fluorosurfactant"
id = "fluorosurfactant"
diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm
index 1ac7629b5bd..36b9eb2ed21 100644
--- a/code/modules/reagents/reagent_containers/bottle.dm
+++ b/code/modules/reagents/reagent_containers/bottle.dm
@@ -296,4 +296,16 @@
name = "Spanish flu culture bottle"
desc = "A small bottle. Contains a sample of Inquisitius."
icon_state = "bottle3"
- spawned_disease = /datum/disease/fluspanish
\ No newline at end of file
+ spawned_disease = /datum/disease/fluspanish
+
+/obj/item/weapon/reagent_containers/glass/bottle/tuberculosis
+ name = "Fungal Tuberculosis culture bottle"
+ desc = "A small bottle. Contains a sample of Fungal Tubercle bacillus."
+ icon_state = "bottle3"
+ spawned_disease = /datum/disease/tuberculosis
+
+/obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure
+ name = "BVAK bottle"
+ desc = "A small bottle containing Bio Virus Antidote Kit."
+ icon_state = "bottle5"
+ list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index df207b0b3cf..090942bf0e6 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -112,3 +112,11 @@
name = "morphine medipen"
desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though."
list_reagents = list("morphine" = 10)
+
+/obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure
+ name = "BVAK autoinjector"
+ desc = "Bio Virus Antidote Kit autoinjector. Has a two use system for yourself, and someone else. Inject when infected."
+ icon_state = "stimpen"
+ volume = 60
+ amount_per_transfer_from_this = 30
+ list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20)
diff --git a/tgstation.dme b/tgstation.dme
index e246757c731..c41f946fcbb 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -208,6 +208,7 @@
#include "code\datums\diseases\retrovirus.dm"
#include "code\datums\diseases\rhumba_beat.dm"
#include "code\datums\diseases\transformation.dm"
+#include "code\datums\diseases\tuberculosis.dm"
#include "code\datums\diseases\wizarditis.dm"
#include "code\datums\diseases\advance\advance.dm"
#include "code\datums\diseases\advance\presets.dm"