mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
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
This commit is contained in:
committed by
AnturK
co-authored by
moo
parent
ec4280f597
commit
eaa00b8744
@@ -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 = "<b>Resistance 8:</b> Causes two harmful mutations at once.<br>\
|
||||
<b>Stage Speed 10:</b> Increases mutation frequency.<br>\
|
||||
<b>Stealth 5:</b> The mutations persist even if the virus is cured."
|
||||
var/mutadone_proof = NONE
|
||||
threshold_desc = "<b>Resistance 8:</b> 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).<br>\
|
||||
<b>Resistance 14:</b> The host's genetic alterations are not undone when the virus is cured.<br>\
|
||||
<b>Stage Speed 10:</b> The virus activates dormant mutations at a much faster rate.<br>\
|
||||
<b>Stealth 5:</b> 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, "<span class='warning'>[pick("Your skin feels itchy.", "You feel light headed.")]</span>")
|
||||
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)
|
||||
|
||||
+3
-1
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user