From bc06935aa02081c7553bd0da987698a1271b541c Mon Sep 17 00:00:00 2001 From: Guti <32563288+TheCaramelion@users.noreply.github.com> Date: Mon, 16 Dec 2024 05:46:05 +0100 Subject: [PATCH] Virology Fixes 6 (#16715) * Fixes * Fix * BS Sneeze --- code/datums/diseases/_disease.dm | 10 +++++++-- .../diseases/advance/symptoms/confusion.dm | 2 -- .../datums/diseases/advance/symptoms/cough.dm | 3 +-- .../advance/symptoms/damage_converter.dm | 1 + .../datums/diseases/advance/symptoms/dizzy.dm | 1 - code/datums/diseases/advance/symptoms/flip.dm | 3 +-- code/datums/diseases/advance/symptoms/hair.dm | 1 + .../diseases/advance/symptoms/headache.dm | 3 +-- code/datums/diseases/advance/symptoms/heal.dm | 4 ++++ .../diseases/advance/symptoms/hematophagy.dm | 1 + .../diseases/advance/symptoms/itching.dm | 3 +-- .../diseases/advance/symptoms/language.dm | 3 ++- code/datums/diseases/advance/symptoms/mlem.dm | 1 - .../diseases/advance/symptoms/oxygen.dm | 1 + code/datums/diseases/advance/symptoms/pica.dm | 2 +- .../diseases/advance/symptoms/sneeze.dm | 7 +++--- code/datums/diseases/advance/symptoms/spin.dm | 3 +-- .../diseases/advance/symptoms/stimulant.dm | 4 ++-- .../diseases/advance/symptoms/telepathy.dm | 1 + .../datums/diseases/advance/symptoms/viral.dm | 2 ++ code/datums/diseases/roanoake.dm | 7 ++++-- .../objects/items/devices/scanners/health.dm | 12 +++++----- code/modules/mob/living/carbon/human/life.dm | 22 ++++++++++--------- code/modules/mob/living/living.dm | 1 + 24 files changed, 57 insertions(+), 41 deletions(-) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index f15e61ebe65..492884b12a4 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 039d9ad8db6..dc28c109a23 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 00a33e9ce64..cc932ab4cc9 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 f2a299469b1..b47aa89a6c3 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 fdedcba79c0..90bc8836b05 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 e210e4b3bfe..2c9164a5365 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 1a6c2ff109c..2b2342ae08a 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 431ed9b6703..de84b21fc11 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 340b88d6b4c..0d77fc6f072 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 53e5aa842d4..086c0400a99 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 fdf2f5f5e4f..f9e67814439 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 3ffa7c06bb6..1f06e5c030c 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 fdb8672c276..e48329be9cc 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 1e69116c941..a0e04987003 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 ddd7e282d85..6f8221a74b4 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 529596945b8..d2f203bba1b 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 055505dba95..0dc0d7d6bf8 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 f1f4460266a..665fad2a6d4 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 3e02ec94d83..dd3424b7c69 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 3da1de698ca..3c901f371de 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 3d6176728e1..dac36d609f4 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 1dc29984d03..e7be367e7db 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 3b3cca77bef..d23aa3d7811 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -2040,11 +2040,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) @@ -2054,7 +2049,7 @@ else if(stat == DEAD) holder.icon_state = "huddead" holder2.icon_state = "huddead" - else if(foundVirus) + else if(has_virus()) holder.icon_state = "hudill" else if(has_brain_worms()) var/mob/living/simple_mob/animal/borer/B = has_brain_worms() @@ -2065,10 +2060,8 @@ holder2.icon_state = "hudbrainworm" 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) @@ -2229,6 +2222,15 @@ 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 90bdef8fdd7..7dd65aca0ec 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -675,6 +675,7 @@ sdisabilities = 0 disabilities = 0 resting = FALSE + viruses.Cut() // fix blindness and deafness blinded = 0