diff --git a/code/__defines/diseases.dm b/code/__defines/diseases.dm index 97f0025228..ac34e469b5 100644 --- a/code/__defines/diseases.dm +++ b/code/__defines/diseases.dm @@ -5,9 +5,10 @@ #define HIDDEN_PANDEMIC (1<<1) //Disease Flags -#define CURABLE (1<<0) -#define CAN_CARRY (1<<1) -#define CAN_RESIST (1<<2) +#define CURABLE (1<<0) +#define CAN_CARRY (1<<1) +#define CAN_RESIST (1<<2) +#define CAN_NOT_POPULATE (1<<3) //Spread Flags #define SPECIAL (1<<0) diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm index 9dbefd3684..c75909e493 100644 --- a/code/controllers/subsystems/supply.dm +++ b/code/controllers/subsystems/supply.dm @@ -119,7 +119,19 @@ SUBSYSTEM_DEF(supply) EC.contents[EC.contents.len]["quantity"] = cashmoney.worth EC.value += EC.contents[EC.contents.len]["value"] - + if(istype(A, /obj/item/reagent_containers/glass/bottle/vaccine)) + var/obj/item/reagent_containers/glass/bottle/vaccine/sale_bottle = A + if(istype(CR, /obj/structure/closet/crate/freezer)) + EC.contents = list( + "error" = "Error: Product was improperly packaged. Send conents in freezer crate to preserver contents for transport." + ) + else if(sale_bottle.reagents.reagent_list.len != 1 || sale_bottle.reagents.get_reagent_amount(REAGENT_ID_VACCINE) < sale_bottle.volume) + EC.contents = list( + "error" = "Error: Tainted product in batch. Was opened, contaminated, or was full. Payment rendered null under terms of agreement." + ) + else + EC.contents[EC.contents.len]["value"] = 5 + EC.value += EC.contents[EC.contents.len]["value"] // Make a log of it, but it wasn't shipped properly, and so isn't worth anything else diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 6505817fb5..1c4f1ac2d1 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -36,6 +36,7 @@ /mob/proc/AddDisease(datum/disease/D, respect_carrier = FALSE) var/datum/disease/DD = new D.type(1, D, 0) + DD.start_cure_timer() viruses += DD DD.affected_mob = src active_diseases += DD diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 492884b12a..b596f4dcbe 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -42,6 +42,7 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) var/allow_dead = FALSE var/infect_synthetics = FALSE var/processing = FALSE + var/has_timer = FALSE /datum/disease/Destroy() affected_mob = null @@ -147,6 +148,23 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) remove_virus() qdel(src) +/datum/disease/proc/start_cure_timer() + if(has_timer) + return + if(!(disease_flags & CURABLE)) + return + has_timer = TRUE + addtimer(CALLBACK(src, PROC_REF(check_natural_immunity)), (1 HOUR) + rand( -20 MINUTES, 30 MINUTES), TIMER_DELETE_ME) + +/datum/disease/proc/check_natural_immunity() + if(!(disease_flags & CURABLE)) + return + if(prob(rand(10, 15))) + has_timer = FALSE + cure() + return + addtimer(CALLBACK(src, PROC_REF(check_natural_immunity)), rand(5 MINUTES, 10 MINUTES), TIMER_DELETE_ME) + /datum/disease/proc/IsSame(datum/disease/D) if(ispath(D)) return istype(src, D) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index ecf4ff22fc..f2be67bf46 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -1,10 +1,19 @@ GLOBAL_LIST_EMPTY(archive_diseases) GLOBAL_LIST_INIT(advance_cures, list( - REAGENT_ID_SODIUMCHLORIDE, REAGENT_ID_SUGAR, REAGENT_ID_ORANGEJUICE, - REAGENT_ID_SPACEACILLIN, REAGENT_ID_GLUCOSE, REAGENT_ID_ETHANOL, - REAGENT_ID_LEPORAZINE, REAGENT_ID_IMPEDREZENE, REAGENT_ID_HEPANEPHRODAXON, - REAGENT_ID_SILVER, REAGENT_ID_GOLD + REAGENT_ID_SPACEACILLIN, + REAGENT_ID_ORANGEJUICE, + REAGENT_ID_ETHANOL, + REAGENT_ID_GLUCOSE, + REAGENT_ID_COPPER, + REAGENT_ID_LEAD, + REAGENT_ID_LITHIUM, + REAGENT_ID_RADIUM, + REAGENT_ID_MERCURY, + REAGENT_ID_BLISS, + REAGENT_ID_MUTAGEN, + REAGENT_ID_PHORON, + REAGENT_ID_SACID )) /datum/disease/advance @@ -13,6 +22,7 @@ GLOBAL_LIST_INIT(advance_cures, list( form = "Advance Disease" agent = "advance microbes" max_stages = 5 + disease_flags = CAN_NOT_POPULATE spread_text = "Unknown" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/advance/symptoms/stimulant.dm b/code/datums/diseases/advance/symptoms/stimulant.dm index 665fad2a6d..4861a44240 100644 --- a/code/datums/diseases/advance/symptoms/stimulant.dm +++ b/code/datums/diseases/advance/symptoms/stimulant.dm @@ -36,7 +36,7 @@ Bonus if(3, 4) L.jitteriness += 10 else - if(L.reagents.get_reagent_amount(REAGENT_ID_HYPERZINE < 10)) + if(L.reagents.get_reagent_amount(REAGENT_ID_HYPERZINE) < 10) L.reagents.add_reagent(REAGENT_ID_HYPERZINE, 5) if(prob(30)) L.jitteriness += 15 diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index 6b38902b6d..6b9266718f 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -9,7 +9,7 @@ viable_mobtypes = list(/mob/living/carbon/human) desc = "If left untreated the subject will become very weak, and may vomit often." severity = MINOR - disease_flags = CAN_CARRY|CAN_RESIST + disease_flags = CAN_CARRY|CAN_RESIST|CAN_NOT_POPULATE visibility_flags = HIDDEN_PANDEMIC required_organs = list(/obj/item/organ/internal/appendix) bypasses_immunity = TRUE diff --git a/code/datums/diseases/food_poisoning.dm b/code/datums/diseases/food_poisoning.dm index 1cd43b25f2..bfb9aa445a 100644 --- a/code/datums/diseases/food_poisoning.dm +++ b/code/datums/diseases/food_poisoning.dm @@ -11,7 +11,7 @@ viable_mobtypes = list(/mob/living/carbon/human) desc = "Nausea, sickness, and vomitting." severity = MINOR - disease_flags = CURABLE + disease_flags = CURABLE|CAN_NOT_POPULATE virus_heal_resistant = TRUE /datum/disease/food_poisoning/stage_act() diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index 0c61fd309b..10f7bc0011 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -9,6 +9,7 @@ agent = "Gravitokinetic Bipotential SADS+" viable_mobtypes = list(/mob/living/carbon/human) severity = BIOHAZARD + disease_flags = CAN_NOT_POPULATE /datum/disease/gbs/stage_act() if(!..()) diff --git a/code/game/machinery/pandemic.dm b/code/game/machinery/pandemic.dm index ea490d10ca..2969831188 100644 --- a/code/game/machinery/pandemic.dm +++ b/code/game/machinery/pandemic.dm @@ -12,6 +12,12 @@ var/selected_strain_index = 1 var/obj/item/reagent_containers/beaker = null +// PanDEMIC Bottle +/obj/item/reagent_containers/glass/bottle/vaccine + icon_state = "bottle10" + possible_transfer_amounts = (list(5, 10, 15)) + volume = 15 + /obj/machinery/computer/pandemic/Initialize(mapload) . = ..() update_icon() @@ -68,7 +74,7 @@ icon_state = "pandemic[(beaker)?"1":"0"][!(stat & NOPOWER) ? "" : "_nopower"]" /obj/machinery/computer/pandemic/proc/create_culture(name, bottle_type = "culture", cooldown = 50) - var/obj/item/reagent_containers/glass/bottle/B = new/obj/item/reagent_containers/glass/bottle(loc) + var/obj/item/reagent_containers/glass/bottle/vaccine/B = new/obj/item/reagent_containers/glass/bottle/vaccine(loc) B.icon_state = "bottle10" B.pixel_x = rand(-3, 3) B.pixel_y = rand(-3, 3) @@ -146,8 +152,13 @@ atom_say("Unable to synthesize requested antibody.") return - var/obj/item/reagent_containers/glass/bottle/B = create_culture(vaccine_name, REAGENT_ID_VACCINE, 200) + var/obj/item/reagent_containers/glass/bottle/vaccine/B = create_culture(vaccine_name, REAGENT_ID_VACCINE, 200) B.reagents.add_reagent(REAGENT_ID_VACCINE, 15, list(vaccine_type)) + if(beaker && beaker.reagents && length(beaker.reagents.reagent_list)) + beaker.reagents.remove_reagent(REAGENT_ID_BLOOD, 5) + if(!length(beaker.reagents.reagent_list)) + update_tgui_static_data(ui.user) + if("eject_beaker") eject_beaker() update_tgui_static_data(ui.user) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index be8ee51f25..e753d19c22 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -1,11 +1,6 @@ GLOBAL_LIST_EMPTY(current_pending_diseases) /datum/event/disease_outbreak var/datum/disease/chosen_disease - var/list/disease_blacklist = list( - /datum/disease/advance, - /datum/disease/food_poisoning, - /datum/disease/gbs // Terrible. It's only in the code to scare people. - ) var/static/list/transmissable_symptoms = list() var/static/list/diseases_minor = list() var/static/list/diseases_moderate_major = list() @@ -85,7 +80,7 @@ GLOBAL_LIST_EMPTY(current_pending_diseases) /datum/event/disease_outbreak/proc/populate_diseases() for(var/candidate in subtypesof(/datum/disease)) var/datum/disease/CD = new candidate - if(is_type_in_list(CD, disease_blacklist)) + if(CD.disease_flags & CAN_NOT_POPULATE) continue switch(CD.severity) if(NONTHREAT, MINOR) diff --git a/tgui/packages/tgfont/dist/tgfont.css b/tgui/packages/tgfont/dist/tgfont.css deleted file mode 100644 index 568f178c2e..0000000000 --- a/tgui/packages/tgfont/dist/tgfont.css +++ /dev/null @@ -1,53 +0,0 @@ -@font-face { - font-family: 'tgfont'; - src: - url('./tgfont.woff2?958b912b123580c55529f68c4e2261bd') format('woff2'), - url('./tgfont.eot?958b912b123580c55529f68c4e2261bd#iefix') - format('embedded-opentype'); -} - -i[class^='tg-']:before, -i[class*=' tg-']:before { - font-family: tgfont !important; - font-style: normal; - font-weight: normal !important; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.tg-air-tank-slash:before { - content: '\f101'; -} -.tg-air-tank:before { - content: '\f102'; -} -.tg-bad-touch:before { - content: '\f103'; -} -.tg-image-minus:before { - content: '\f104'; -} -.tg-image-plus:before { - content: '\f105'; -} -.tg-nanotrasen-logo:before { - content: '\f106'; -} -.tg-non-binary:before { - content: '\f107'; -} -.tg-prosthetic-leg:before { - content: '\f108'; -} -.tg-sound-minus:before { - content: '\f109'; -} -.tg-sound-plus:before { - content: '\f10a'; -} -.tg-syndicate-logo:before { - content: '\f10b'; -} diff --git a/tgui/packages/tgfont/dist/tgfont.eot b/tgui/packages/tgfont/dist/tgfont.eot deleted file mode 100644 index a72d5ca589..0000000000 Binary files a/tgui/packages/tgfont/dist/tgfont.eot and /dev/null differ diff --git a/tgui/packages/tgfont/dist/tgfont.woff2 b/tgui/packages/tgfont/dist/tgfont.woff2 deleted file mode 100644 index 4dffb0f83c..0000000000 Binary files a/tgui/packages/tgfont/dist/tgfont.woff2 and /dev/null differ