diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm
index f15e61ebe6..492884b12a 100644
--- a/code/datums/diseases/_disease.dm
+++ b/code/datums/diseases/_disease.dm
@@ -73,12 +73,19 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease))
stage = min(stage + 1, max_stages)
if(!discovered && stage >= CEILING(max_stages * discovery_threshold, 1))
discovered = TRUE
- BITSET(affected_mob.hud_updateflag, STATUS_HUD)
/datum/disease/proc/handle_cure_testing(has_cure = FALSE)
if(has_cure && prob(cure_chance))
stage = max(stage -1, 1)
+ for(var/organ in required_organs)
+ if(locate(organ) in affected_mob.internal_organs)
+ continue
+ if(locate(organ) in affected_mob.organs)
+ continue
+ cure()
+ return FALSE
+
if(disease_flags & CURABLE)
if(has_cure && prob(cure_chance))
cure()
@@ -165,7 +172,6 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease))
/datum/disease/proc/remove_virus()
affected_mob.viruses -= src
- BITSET(affected_mob.hud_updateflag, STATUS_HUD)
/datum/disease/proc/Start()
return
diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm
index 039d9ad8db..dc28c109a2 100644
--- a/code/datums/diseases/advance/symptoms/confusion.dm
+++ b/code/datums/diseases/advance/symptoms/confusion.dm
@@ -16,7 +16,6 @@ Bonus
*/
/datum/symptom/confusion
-
name = "Confusion"
stealth = 1
resistance = -1
@@ -25,7 +24,6 @@ Bonus
level = 4
severity = 2
-
/datum/symptom/confusion/Activate(datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm
index 00a33e9ce6..cc932ab4cc 100644
--- a/code/datums/diseases/advance/symptoms/cough.dm
+++ b/code/datums/diseases/advance/symptoms/cough.dm
@@ -10,8 +10,7 @@ Coughing
Low Level.
BONUS
- Will force the affected mob to drop small items.
- Small spread if not wearing a mask
+ Will force the affected mob to drop small items. Small spread if not wearing a mask.
//////////////////////////////////////
*/
diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm
index f2a299469b..b47aa89a6c 100644
--- a/code/datums/diseases/advance/symptoms/damage_converter.dm
+++ b/code/datums/diseases/advance/symptoms/damage_converter.dm
@@ -22,6 +22,7 @@ Bonus
stage_speed = -4
transmittable = -2
level = 4
+ severity = 0
/datum/symptom/damage_converter/Activate(datum/disease/advance/A)
..()
diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm
index fdedcba79c..90bc8836b0 100644
--- a/code/datums/diseases/advance/symptoms/dizzy.dm
+++ b/code/datums/diseases/advance/symptoms/dizzy.dm
@@ -15,7 +15,6 @@ Bonus
//////////////////////////////////////
*/
-/// Not the egg
/datum/symptom/dizzy
name = "Dizziness"
stealth = 2
diff --git a/code/datums/diseases/advance/symptoms/flip.dm b/code/datums/diseases/advance/symptoms/flip.dm
index e210e4b3bf..2c9164a536 100644
--- a/code/datums/diseases/advance/symptoms/flip.dm
+++ b/code/datums/diseases/advance/symptoms/flip.dm
@@ -11,7 +11,6 @@ Flippinov
BONUS
Makes the host FLIP.
- Should be used for buffing your disease.
//////////////////////////////////////
*/
@@ -23,7 +22,7 @@ BONUS
stage_speed = 3
transmittable = 1
level = 1
- severity = 1
+ severity = 0
/datum/symptom/spyndrome/Activate(datum/disease/advance/A)
..()
diff --git a/code/datums/diseases/advance/symptoms/hair.dm b/code/datums/diseases/advance/symptoms/hair.dm
index 1a6c2ff109..2b2342ae08 100644
--- a/code/datums/diseases/advance/symptoms/hair.dm
+++ b/code/datums/diseases/advance/symptoms/hair.dm
@@ -1,5 +1,6 @@
/*
//////////////////////////////////////
+
Alopecia
Noticable.
diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm
index 431ed9b670..de84b21fc1 100644
--- a/code/datums/diseases/advance/symptoms/headache.dm
+++ b/code/datums/diseases/advance/symptoms/headache.dm
@@ -10,8 +10,7 @@ Headache
Low Level.
BONUS
- Displays an annoying message!
- Should be used for buffing your disease.
+ Displays an annoying message.
//////////////////////////////////////
*/
diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm
index 340b88d6b4..0d77fc6f07 100644
--- a/code/datums/diseases/advance/symptoms/heal.dm
+++ b/code/datums/diseases/advance/symptoms/heal.dm
@@ -22,6 +22,7 @@ Bonus
stage_speed = -4
transmittable = -4
level = 6
+ severity = 0
/datum/symptom/heal/Activate(datum/disease/advance/A)
..()
@@ -61,6 +62,7 @@ Bonus
stage_speed = -1
transmittable = -4
level = 3
+ severity = 0
var/list/cured_diseases = list()
/datum/symptom/heal/metabolism/Heal(mob/living/M, datum/disease/advance/A)
@@ -108,6 +110,7 @@ Bonus
stage_speed = 4
transmittable = 4
level = 3
+ severity = 0
var/longevity = 30
/datum/symptom/heal/longevity/Heal(mob/living/M, datum/disease/advance/A)
@@ -142,6 +145,7 @@ Bonus
stage_speed = 0
transmittable = -3
level = 5
+ severity = 0
/datum/symptom/heal/dna/Heal(var/mob/living/carbon/M, var/datum/disease/advance/A)
var/amt_healed = max(0, (sqrtor0(20+A.totalStageSpeed()*(3+rand())))-(sqrtor0(16+A.totalStealth()*rand())))
diff --git a/code/datums/diseases/advance/symptoms/hematophagy.dm b/code/datums/diseases/advance/symptoms/hematophagy.dm
index 53e5aa842d..086c0400a9 100644
--- a/code/datums/diseases/advance/symptoms/hematophagy.dm
+++ b/code/datums/diseases/advance/symptoms/hematophagy.dm
@@ -22,6 +22,7 @@ BONUS
resistance = -4
transmittable = 1
level = 4
+ severity = 1
/datum/symptom/hematophagy/Start(datum/disease/advance/A)
if(ishuman(A.affected_mob))
diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm
index fdf2f5f5e4..f9e6781443 100644
--- a/code/datums/diseases/advance/symptoms/itching.dm
+++ b/code/datums/diseases/advance/symptoms/itching.dm
@@ -10,8 +10,7 @@ Itching
Low Level.
BONUS
- Displays an annoying message!
- Should be used for buffing your disease.
+ Displays an annoying message.
//////////////////////////////////////
*/
diff --git a/code/datums/diseases/advance/symptoms/language.dm b/code/datums/diseases/advance/symptoms/language.dm
index 3ffa7c06bb..1f06e5c030 100644
--- a/code/datums/diseases/advance/symptoms/language.dm
+++ b/code/datums/diseases/advance/symptoms/language.dm
@@ -10,7 +10,7 @@ Lingual Disocation
Moderate Level.
Bonus
- Forces the affected mob to vomit
+ Randomly changes the language of the mob.
//////////////////////////////////////
*/
@@ -22,6 +22,7 @@ Bonus
stage_speed = -2
transmittable = -1
level = 3
+ severity = 1
/datum/symptom/language/Activate(var/datum/disease/advance/A)
..()
diff --git a/code/datums/diseases/advance/symptoms/mlem.dm b/code/datums/diseases/advance/symptoms/mlem.dm
index fdb8672c27..e48329be9c 100644
--- a/code/datums/diseases/advance/symptoms/mlem.dm
+++ b/code/datums/diseases/advance/symptoms/mlem.dm
@@ -11,7 +11,6 @@ Mlemingtong
BONUS
Mlem. Mlem. Mlem.
- Should be used for buffing your disease.
//////////////////////////////////////
*/
diff --git a/code/datums/diseases/advance/symptoms/oxygen.dm b/code/datums/diseases/advance/symptoms/oxygen.dm
index 1e69116c94..a0e0498700 100644
--- a/code/datums/diseases/advance/symptoms/oxygen.dm
+++ b/code/datums/diseases/advance/symptoms/oxygen.dm
@@ -22,6 +22,7 @@ Bonus
stage_speed = -3
transmittable = -4
level = 6
+ severity = 0
/datum/symptom/oxygen/Activate(var/datum/disease/advance/A)
..()
diff --git a/code/datums/diseases/advance/symptoms/pica.dm b/code/datums/diseases/advance/symptoms/pica.dm
index ddd7e282d8..6f8221a74b 100644
--- a/code/datums/diseases/advance/symptoms/pica.dm
+++ b/code/datums/diseases/advance/symptoms/pica.dm
@@ -22,7 +22,7 @@ BONUS
stage_speed = 3
transmittable = 1
level = 1
- severity = 1
+ severity = 0
/datum/symptom/pica/Start(datum/disease/advance/A)
add_verb(A.affected_mob, /mob/living/proc/eat_trash)
diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm
index 529596945b..d2f203bba1 100644
--- a/code/datums/diseases/advance/symptoms/sneeze.dm
+++ b/code/datums/diseases/advance/symptoms/sneeze.dm
@@ -68,7 +68,7 @@ Bonus
stage_speed = 0
transmittable = 1
level = 4
- severity = 1
+ severity = 3
/datum/symptom/sneeze/bluespace/Activate(datum/disease/advance/A)
..()
@@ -79,8 +79,9 @@ Bonus
M.emote("sniff")
else
SneezeTeleport(A, M)
- A.spread(A.stage)
- if(prob(30))
+ if(!M.wear_mask)
+ A.spread(A.stage)
+ if(prob(30) && !M.wear_mask)
var/obj/effect/decal/cleanable/mucus/icky = new(get_turf(M))
icky.viruses |= A.Copy()
diff --git a/code/datums/diseases/advance/symptoms/spin.dm b/code/datums/diseases/advance/symptoms/spin.dm
index 055505dba9..0dc0d7d6bf 100644
--- a/code/datums/diseases/advance/symptoms/spin.dm
+++ b/code/datums/diseases/advance/symptoms/spin.dm
@@ -11,7 +11,6 @@ Spyndrome
BONUS
Makes the host spin.
- Should be used for buffing your disease.
//////////////////////////////////////
*/
@@ -23,7 +22,7 @@ BONUS
stage_speed = 3
transmittable = 1
level = 1
- severity = 1
+ severity = 0
/datum/symptom/spyndrome/Activate(var/datum/disease/advance/A)
..()
diff --git a/code/datums/diseases/advance/symptoms/stimulant.dm b/code/datums/diseases/advance/symptoms/stimulant.dm
index f1f4460266..665fad2a6d 100644
--- a/code/datums/diseases/advance/symptoms/stimulant.dm
+++ b/code/datums/diseases/advance/symptoms/stimulant.dm
@@ -1,7 +1,7 @@
/*
//////////////////////////////////////
-Healing
+Overactve Adrenal Gland
No change to stealth.
Slightly decreases resistance.
@@ -10,7 +10,7 @@ Healing
Moderate Level.
Bonus
- Heals toxins in the affected mob's blood stream.
+ The host produces hyperzine and gets very jittery
//////////////////////////////////////
*/
diff --git a/code/datums/diseases/advance/symptoms/telepathy.dm b/code/datums/diseases/advance/symptoms/telepathy.dm
index 3e02ec94d8..dd3424b7c6 100644
--- a/code/datums/diseases/advance/symptoms/telepathy.dm
+++ b/code/datums/diseases/advance/symptoms/telepathy.dm
@@ -22,6 +22,7 @@ Bonus
stage_speed = -3
transmittable = -4
level = 5
+ severity = 0
/datum/symptom/telepathy/Start(datum/disease/advance/A)
var/mob/living/carbon/human/H = A.affected_mob
diff --git a/code/datums/diseases/advance/symptoms/viral.dm b/code/datums/diseases/advance/symptoms/viral.dm
index 3da1de698c..3c901f371d 100644
--- a/code/datums/diseases/advance/symptoms/viral.dm
+++ b/code/datums/diseases/advance/symptoms/viral.dm
@@ -20,6 +20,7 @@ BONUS
stage_speed = -3
transmittable = 0
level = 3
+ severity = 0
/datum/symptom/viraladaptation/Activate(datum/disease/advance/A)
..()
@@ -53,6 +54,7 @@ BONUS
stage_speed = 5
transmittable = 3
level = 3
+ severity = 0
/datum/symptom/viralevolution/Activate(datum/disease/advance/A)
..()
diff --git a/code/datums/diseases/roanoake.dm b/code/datums/diseases/roanoake.dm
index 3d6176728e..dac36d609f 100644
--- a/code/datums/diseases/roanoake.dm
+++ b/code/datums/diseases/roanoake.dm
@@ -18,7 +18,7 @@
var/list/obj/item/organ/organ_list = list()
var/obj/item/organ/O
-/datum/disease/roanoake/Start
+/datum/disease/roanoake/Start()
var/mob/living/carbon/human/M = affected_mob
organ_list += M.organs
@@ -35,6 +35,7 @@
if(prob(1))
to_chat(M, span_warning(pick("You feel hot.", "You feel like you're burning.")))
if(M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT)
+ fever(M)
if(3)
if(prob(1))
to_chat(M, span_notice("You shiver a bit."))
@@ -77,8 +78,10 @@
O.take_damage(rand(1, 3))
if(prob(1) && prob(10))
+ O = pick(organ_list)
+ var/obj/item/organ/external/E = O.parent_organ
var/datum/wound/W = new /datum/wound/internal_bleeding(5)
- O.wounds += W
+ E.wounds += W
if(M.stat == DEAD)
M.species = /datum/species/xenochimera
diff --git a/code/game/objects/items/devices/scanners/health.dm b/code/game/objects/items/devices/scanners/health.dm
index 1dc29984d0..e7be367e7d 100644
--- a/code/game/objects/items/devices/scanners/health.dm
+++ b/code/game/objects/items/devices/scanners/health.dm
@@ -248,15 +248,15 @@
else
dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.")
dat += "
"
- if(LAZYLEN(C.resistances))
+ if(LAZYLEN(C.viruses))
for (var/datum/disease/virus in C.GetViruses())
if(virus.visibility_flags & HIDDEN_SCANNER || virus.visibility_flags & HIDDEN_PANDEMIC)
continue
- if(virus.discovered)
- dat += span_warning("Warning: [virus.name] detected in subject's blood.")
- dat += "
"
- dat += span_warning("Severity: [virus.severity]")
- dat += "
"
+ virus.discovered = TRUE
+ dat += span_warning("Warning: [virus.name] detected in subject's blood.")
+ dat += "
"
+ dat += span_warning("Severity: [virus.severity]")
+ dat += "
"
if (M.getCloneLoss())
dat += span_warning("Subject appears to have been imperfectly cloned.")
dat += "
"
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 61f413a7a2..2da65c05bc 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -2121,11 +2121,6 @@
apply_hud(LIFE_HUD, holder)
if (BITTEST(hud_updateflag, STATUS_HUD))
- var/foundVirus = 0
- for (var/datum/disease/D in GetViruses())
- if(D.discovered)
- foundVirus = 1
- break
var/image/holder = grab_hud(STATUS_HUD)
var/image/holder2 = grab_hud(STATUS_HUD_OOC)
@@ -2135,7 +2130,7 @@
else if(stat == DEAD)
holder.icon_state = "huddead"
holder2.icon_state = "huddead"
- else if(foundVirus)
+ else if(has_virus())
holder.icon_state = "hudill"
/* Start Chomp edit
else if(has_brain_worms())
@@ -2148,10 +2143,8 @@
End Chomp edit */
else
holder.icon_state = "hudhealthy"
- if(viruses.len)
- for(var/datum/disease/D in GetViruses())
- if(D.discovered)
- holder2.icon_state = "hudill"
+ if(has_virus())
+ holder2.icon_state = "hudill"
else
holder2.icon_state = "hudhealthy"
if(block_hud)
@@ -2312,6 +2305,15 @@ End Chomp edit */
brain.tick_defib_timer()
+/mob/living/carbon/human/proc/has_virus()
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
+ if(!D.discovered)
+ continue
+ if((!(D.visibility_flags & HIDDEN_SCANNER)) && (D.severity != NONTHREAT))
+ return TRUE
+ return FALSE
+
#undef HUMAN_MAX_OXYLOSS
#undef HUMAN_CRIT_MAX_OXYLOSS
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 039275b5bc..b0da74a4f2 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -703,6 +703,7 @@
sdisabilities = 0
disabilities = 0
resting = FALSE
+ viruses.Cut()
// fix blindness and deafness
blinded = 0