Virus timers

This commit is contained in:
Guti
2025-01-04 06:57:41 +01:00
parent c7a4f05bbf
commit 2d42fbc61b
14 changed files with 68 additions and 72 deletions
+1
View File
@@ -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
+18
View File
@@ -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)
+14 -4
View File
@@ -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)
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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()
+1
View File
@@ -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(!..())