diff --git a/code/datums/diseases/annorwa.dm b/code/datums/diseases/annorwa.dm
new file mode 100644
index 000000000000..7198cb99f767
--- /dev/null
+++ b/code/datums/diseases/annorwa.dm
@@ -0,0 +1,69 @@
+/datum/disease/annorwa
+ form = "Disease"
+ name = "AN-04"
+ max_stages = 5
+ spread_text = "Touch"
+ cure_text = "Spaceacillin"
+ cures = list(/datum/reagent/medicine/spaceacillin)
+ agent = "Bacillus Cerebrus"
+ viable_mobtypes = list(/mob/living/carbon/human)
+ cure_chance = 2
+ desc = "A virus that was made by syndicate to annoy crew"
+ required_organ = ORGAN_SLOT_BRAIN
+ severity = DISEASE_SEVERITY_MINOR
+ bypasses_immunity = TRUE // Да
+
+/datum/disease/annorwa/stage_act(seconds_per_tick, times_fired)
+ . = ..()
+ if(!.)
+ return
+
+ if(SPT_PROB(stage * 2, seconds_per_tick))
+ affected_mob.emote("faint")
+ to_chat(affected_mob, span_danger("You wanna sleep..."))
+
+ switch(stage)
+ if(2)
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_danger("You feel very weak..."))
+ if(SPT_PROB(5, seconds_per_tick))
+ to_chat(affected_mob, span_danger("You REALLY wanna sleep."))
+ if(4)
+ var/need_mob_update = FALSE
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_userdanger("You wanna sleep."))
+ affected_mob.set_dizzy_if_lower(15 SECONDS)
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_danger("You feel really weak"))
+ need_mob_update += affected_mob.adjustStaminaLoss(100, updating_health = FALSE)
+ affected_mob.emote("Cough")
+ if(SPT_PROB(5, seconds_per_tick))
+ to_chat(affected_mob, span_danger("You feel eepy..."))
+ need_mob_update += affected_mob.adjustStaminaLoss(50, updating_health = FALSE)
+ affected_mob.emote("yawn")
+ if(need_mob_update)
+ affected_mob.updatehealth()
+ if(5)
+ var/need_mob_update = FALSE
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_userdanger("[pick("You feel weak... Maybe rest will help?", "You're muscles collapses in a sharp pain.")]"))
+ need_mob_update += affected_mob.adjustStaminaLoss(70, updating_stamina = FALSE)
+ if(SPT_PROB(5, seconds_per_tick))
+ need_mob_update += affected_mob.adjustStaminaLoss(100, updating_stamina = FALSE)
+ affected_mob.visible_message(span_warning("[affected_mob] faints!"), span_userdanger("You decide to take a nap."))
+ affected_mob.AdjustSleeping(20 SECONDS)
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_userdanger("Zzzzz..."))
+ affected_mob.adjust_confusion_up_to(0 SECONDS, 300 SECONDS)
+ if(SPT_PROB(20, seconds_per_tick))
+ affected_mob.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 1)
+ if(SPT_PROB(1.5, seconds_per_tick))
+ to_chat(affected_mob, span_warning("[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 - (10 SECONDS), 0)
+ affected_mob.adjust_nutrition(-10)
+ if(SPT_PROB(7.5, seconds_per_tick))
+ to_chat(affected_mob, span_danger("[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit...", "You feel like taking off some clothes...")]"))
+ affected_mob.adjust_bodytemperature(40)
+ if(need_mob_update)
+ affected_mob.updatehealth()
+
diff --git a/code/datums/diseases/cordafungi.dm b/code/datums/diseases/cordafungi.dm
new file mode 100644
index 000000000000..5a8432b80eff
--- /dev/null
+++ b/code/datums/diseases/cordafungi.dm
@@ -0,0 +1,69 @@
+/datum/disease/cordafungi
+ form = "Disease"
+ name = "Corda"
+ max_stages = 5
+ spread_text = "Airborne"
+ cure_text = "Pest spray & cyanide"
+ cures = list(/datum/reagent/toxin/cyanide, /datum/reagent/toxin/pestkiller)
+ agent = "Cordius Fungi"
+ viable_mobtypes = list(/mob/living/carbon/human)
+ cure_chance = 8
+ desc = "Strange shroom that turns humans into maniacs"
+ required_organ = ORGAN_SLOT_BRAIN
+ severity = DISEASE_SEVERITY_BIOHAZARD
+ bypasses_immunity = TRUE // А как там извините бешенство распростроняется, напомните
+
+/datum/disease/cordafungi/stage_act(seconds_per_tick, times_fired)
+ . = ..()
+ if(!.)
+ return
+
+ if(SPT_PROB(stage * 2, seconds_per_tick))
+ affected_mob.emote("gasp")
+ to_chat(affected_mob, span_danger("You're head hurts..."))
+
+ switch(stage)
+ if(2)
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_danger("You feel stranger than before..."))
+ if(SPT_PROB(5, seconds_per_tick))
+ to_chat(affected_mob, span_danger("Your thoughts are confused."))
+ if(4)
+ var/need_mob_update = FALSE
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_userdanger("You're muscles collapses in a sharp pain!"))
+ affected_mob.set_dizzy_if_lower(15 SECONDS)
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_danger("You feel PAIN!"))
+ need_mob_update += affected_mob.adjustOxyLoss(10, updating_health = FALSE)
+ affected_mob.emote("gasp")
+ if(SPT_PROB(5, seconds_per_tick))
+ to_chat(affected_mob, span_danger("You feel like your skin falls off."))
+ need_mob_update += affected_mob.adjustBruteLoss(15, updating_health = FALSE)
+ affected_mob.emote("scream")
+ if(need_mob_update)
+ affected_mob.updatehealth()
+ if(5)
+ var/need_mob_update = FALSE
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_userdanger("[pick("You feel weak... Maybe rest will help?", "You're muscles collapses in a sharp pain.")]"))
+ need_mob_update += affected_mob.adjustStaminaLoss(70, updating_stamina = FALSE)
+ if(SPT_PROB(5, seconds_per_tick))
+ need_mob_update += affected_mob.adjustStaminaLoss(100, updating_stamina = FALSE)
+ affected_mob.visible_message(span_warning("[affected_mob] faints!"), span_userdanger("You feel like it's over... But it's not"))
+ affected_mob.AdjustSleeping(3 SECONDS)
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_userdanger("I MUST BITE THEM ALL!"))
+ affected_mob.adjust_confusion_up_to(0 SECONDS, 5 SECONDS)
+ if(SPT_PROB(5, seconds_per_tick))
+ affected_mob.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 20)
+ if(SPT_PROB(1.5, seconds_per_tick))
+ to_chat(affected_mob, span_warning("[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 - (10 SECONDS), 0)
+ affected_mob.adjust_nutrition(-100)
+ if(SPT_PROB(7.5, seconds_per_tick))
+ to_chat(affected_mob, span_danger("[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit...", "You feel like taking off some clothes...")]"))
+ affected_mob.adjust_bodytemperature(40)
+ if(need_mob_update)
+ affected_mob.updatehealth()
+
diff --git a/code/modules/cargo/packs/imports.dm b/code/modules/cargo/packs/imports.dm
index f11680dc0e8e..637eba1b5df3 100644
--- a/code/modules/cargo/packs/imports.dm
+++ b/code/modules/cargo/packs/imports.dm
@@ -357,3 +357,14 @@
/obj/item/stack/ore/bluespace_crystal/artificial = 2,
/obj/item/stock_parts/subspace/ansible,
)
+
+/datum/supply_pack/imports/viruscrateillegal
+ name = "Illegal virus crate"
+ desc = "Sometimes, normal weapons isn't enough..."
+ hidden = TRUE
+ cost = CARGO_CRATE_VALUE * 30
+ contains = list(
+ /obj/item/reagent_containers/cup/bottle/cordafungi = 1,
+ /obj/item/reagent_containers/cup/bottle/annorwa = 1
+ )
+
diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm
index ef0ba9c53bfe..4be1e499a78f 100644
--- a/code/modules/reagents/reagent_containers/cups/bottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/bottle.dm
@@ -348,6 +348,16 @@
desc = "A small bottle containing Bio Virus Antidote Kit."
list_reagents = list(/datum/reagent/vaccine/fungal_tb = 30)
+/obj/item/reagent_containers/cup/bottle/annorwa
+ name = "Annoying virus sample culture bottle"
+ desc = "A small bottle. Contains a sample of Annorwa."
+ spawned_disease = /datum/disease/annorwa
+
+/obj/item/reagent_containers/cup/bottle/cordafungi
+ name = "Fungal Rabies culture bottle"
+ desc = "A small bottle. Contains a sample of Cordius Fungi."
+ spawned_disease = /datum/disease/cordafungi
+
//Oldstation.dmm chemical storage bottles
/obj/item/reagent_containers/cup/bottle/hydrogen
diff --git a/tgstation.dme b/tgstation.dme
index b9aa093b989a..d3fb91dbcee4 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1396,12 +1396,14 @@
#include "code\datums\diseases\_disease.dm"
#include "code\datums\diseases\_MobProcs.dm"
#include "code\datums\diseases\adrenal_crisis.dm"
+#include "code\datums\diseases\annorwa.dm"
#include "code\datums\diseases\anaphylaxis.dm"
#include "code\datums\diseases\anxiety.dm"
#include "code\datums\diseases\beesease.dm"
#include "code\datums\diseases\brainrot.dm"
#include "code\datums\diseases\chronic_illness.dm"
#include "code\datums\diseases\cold.dm"
+#include "code\datums\diseases\cordafungi.dm"
#include "code\datums\diseases\cold9.dm"
#include "code\datums\diseases\death_sandwich_poisoning.dm"
#include "code\datums\diseases\decloning.dm"