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"