From eaa00b87449647aee039556c77ccd3ffc70cd8b4 Mon Sep 17 00:00:00 2001
From: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Date: Fri, 20 Sep 2019 02:59:54 -0500
Subject: [PATCH] Reworks the DAS symptom (#46347)
* Update genetics.dm
* Update dna.dm
* Update genetics.dm
* Update genetics.dm
* Update genetics.dm
* Update genetics.dm
* Update genetics.dm
* Update genetics.dm
* Update genetics.dm
* Update dna.dm
* Update genetics.dm
* Update genetics.dm
* Update dna.dm
* Update genetics.dm
* Update genetics.dm
* Update genetics.dm
* Update genetics.dm
* Update dna.dm
* Update genetics.dm
* Update code/datums/diseases/advance/symptoms/genetics.dm
Co-Authored-By: moo <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>
* Update genetics.dm
* Update genetics.dm
* Update dna.dm
---
.../diseases/advance/symptoms/genetics.dm | 59 ++++++++-----------
code/datums/dna.dm | 4 +-
2 files changed, 27 insertions(+), 36 deletions(-)
diff --git a/code/datums/diseases/advance/symptoms/genetics.dm b/code/datums/diseases/advance/symptoms/genetics.dm
index 527fb522cd4..6c403351726 100644
--- a/code/datums/diseases/advance/symptoms/genetics.dm
+++ b/code/datums/diseases/advance/symptoms/genetics.dm
@@ -16,23 +16,36 @@ Bonus
*/
/datum/symptom/genetic_mutation
- name = "Deoxyribonucleic Acid Saboteur"
- desc = "The virus bonds with the DNA of the host, causing damaging mutations until removed."
+ name = "Viral DNA Activator"
+ desc = "The virus bonds with the DNA of the host, activating random dormant mutations within their DNA. When the virus is cured, the host's genetic alterations are undone."
stealth = -2
resistance = -3
stage_speed = 0
transmittable = -3
level = 6
severity = 4
- var/list/possible_mutations
- var/archived_dna = null
base_message_chance = 50
symptom_delay_min = 60
- symptom_delay_max = 120
+ symptom_delay_max = 100
+ var/excludemuts = NONE
var/no_reset = FALSE
- threshold_desc = "Resistance 8: Causes two harmful mutations at once.
\
- Stage Speed 10: Increases mutation frequency.
\
- Stealth 5: The mutations persist even if the virus is cured."
+ var/mutadone_proof = NONE
+ threshold_desc = "Resistance 8: The negative and mildly negative mutations caused by the virus are mutadone-proof (but will still be undone when the virus is cured if the resistance 14 threshold is not met).
\
+ Resistance 14: The host's genetic alterations are not undone when the virus is cured.
\
+ Stage Speed 10: The virus activates dormant mutations at a much faster rate.
\
+ Stealth 5: Only activates negative mutations in hosts."
+
+/datum/symptom/genetic_mutation/Start(datum/disease/advance/A)
+ if(!..())
+ return
+ if(A.properties["stealth"] >= 5) //only give them bad mutations
+ excludemuts = POSITIVE
+ if(A.properties["stage_rate"] >= 10) //activate dormant mutations more often at around twice the pace
+ symptom_delay_max = 60
+ if(A.properties["resistance"] >= 8) //mutadone won't save you now
+ mutadone_proof = (NEGATIVE | MINOR_NEGATIVE)
+ if(A.properties["resistance"] >= 14) //one does not simply escape Nurgle's grasp
+ no_reset = TRUE
/datum/symptom/genetic_mutation/Activate(datum/disease/advance/A)
if(!..())
@@ -43,36 +56,12 @@ Bonus
switch(A.stage)
if(4, 5)
to_chat(C, "[pick("Your skin feels itchy.", "You feel light headed.")]")
- C.dna.remove_mutation_group(possible_mutations)
- for(var/i in 1 to power)
- C.randmut(possible_mutations)
+ C.easy_randmut((NEGATIVE | MINOR_NEGATIVE | POSITIVE) - excludemuts, TRUE, TRUE, TRUE, mutadone_proof)
-// Archive their DNA before they were infected.
-/datum/symptom/genetic_mutation/Start(datum/disease/advance/A)
- if(!..())
- return
- if(A.properties["stealth"] >= 5) //don't restore dna after curing
- no_reset = TRUE
- if(A.properties["stage_rate"] >= 10) //mutate more often
- symptom_delay_min = 20
- symptom_delay_max = 60
- if(A.properties["resistance"] >= 8) //mutate twice
- power = 2
- possible_mutations = (GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.all_mutations[RACEMUT]
- var/mob/living/carbon/M = A.affected_mob
- if(M)
- if(!M.has_dna())
- return
- archived_dna = M.dna.mutation_index
-
-// Give them back their old DNA when cured.
/datum/symptom/genetic_mutation/End(datum/disease/advance/A)
if(!..())
return
if(!no_reset)
var/mob/living/carbon/M = A.affected_mob
- if(M && archived_dna)
- if(!M.has_dna())
- return
- M.dna.mutation_index = archived_dna
- M.domutcheck()
+ if(M.has_dna())
+ M.dna.remove_all_mutations(list(MUT_NORMAL, MUT_EXTRA), FALSE)
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 21dc44bbd64..bdc2ec453df 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -487,7 +487,7 @@
var/mutation = pick(candidates)
. = dna.add_mutation(mutation)
-/mob/living/carbon/proc/easy_randmut(quality = POSITIVE + NEGATIVE + MINOR_NEGATIVE, scrambled = TRUE, sequence = TRUE, exclude_monkey = TRUE)
+/mob/living/carbon/proc/easy_randmut(quality = POSITIVE + NEGATIVE + MINOR_NEGATIVE, scrambled = TRUE, sequence = TRUE, exclude_monkey = TRUE, resilient = NONE)
if(!has_dna())
return
var/list/mutations = list()
@@ -510,6 +510,8 @@
var/datum/mutation/human/HM = dna.get_mutation(mutation)
if(HM)
HM.scrambled = TRUE
+ if(HM.quality & resilient)
+ HM.mutadone_proof = TRUE
return TRUE
/mob/living/carbon/proc/randmuti()