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