diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm
index 5e04d288764..1baa779b492 100644
--- a/code/__DEFINES/genetics.dm
+++ b/code/__DEFINES/genetics.dm
@@ -125,4 +125,7 @@
#define NUTRITION_LEVEL_STARVING 150
//Used for calculations for negative effects of having genetics powers
-#define DEFAULT_GENE_INSTABILITY -4
+#define DEFAULT_GENE_STABILITY 100
+#define GENE_INSTABILITY_MINOR 5
+#define GENE_INSTABILITY_MODERATE 10
+#define GENE_INSTABILITY_MAJOR 15
diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm
index cb2ab29dae0..4505dc1c1db 100644
--- a/code/game/dna/genes/disabilities.dm
+++ b/code/game/dna/genes/disabilities.dm
@@ -55,7 +55,7 @@
name="Hallucinate"
activation_message="Your mind says 'Hello'."
deactivation_message ="Sanity returns. Or does it?"
- instability = -2
+ instability = -GENE_INSTABILITY_MODERATE
mutation=HALLUCINATE
/datum/dna/gene/disability/hallucinate/New()
@@ -65,7 +65,7 @@
name="Epilepsy"
activation_message="You get a headache."
deactivation_message ="Your headache is gone, at last."
- instability = -2
+ instability = -GENE_INSTABILITY_MODERATE
disability=EPILEPSY
/datum/dna/gene/disability/epilepsy/New()
@@ -75,7 +75,7 @@
name="Coughing"
activation_message="You start coughing."
deactivation_message ="Your throat stops aching."
- instability = -1
+ instability = -GENE_INSTABILITY_MINOR
disability=COUGHING
/datum/dna/gene/disability/cough/New()
@@ -85,7 +85,7 @@
name="Clumsiness"
activation_message="You feel lightheaded."
deactivation_message ="You regain some control of your movements"
- instability = -2
+ instability = -GENE_INSTABILITY_MINOR
mutation=CLUMSY
/datum/dna/gene/disability/clumsy/New()
@@ -95,7 +95,7 @@
name="Tourettes"
activation_message="You twitch."
deactivation_message ="Your mouth tastes like soap."
- instability = -1
+ instability = -GENE_INSTABILITY_MODERATE
disability=TOURETTES
/datum/dna/gene/disability/tourettes/New()
@@ -105,7 +105,6 @@
name="Nervousness"
activation_message="You feel nervous."
deactivation_message ="You feel much calmer."
- instability = -1
disability=NERVOUS
/datum/dna/gene/disability/nervousness/New()
@@ -115,7 +114,7 @@
name="Blindness"
activation_message="You can't seem to see anything."
deactivation_message ="You can see now, in case you didn't notice..."
- instability = -5
+ instability = -GENE_INSTABILITY_MAJOR
sdisability=BLIND
/datum/dna/gene/disability/blindness/New()
@@ -125,7 +124,7 @@
name="Deafness"
activation_message="It's kinda quiet."
deactivation_message ="You can hear again!"
- instability = -4
+ instability = -GENE_INSTABILITY_MAJOR
sdisability=DEAF
/datum/dna/gene/disability/deaf/New()
@@ -139,7 +138,7 @@
name="Nearsightedness"
activation_message="Your eyes feel weird..."
deactivation_message ="You can see clearly now"
- instability = -3
+ instability = -GENE_INSTABILITY_MODERATE
disability=NEARSIGHTED
/datum/dna/gene/disability/nearsighted/New()
@@ -151,7 +150,6 @@
desc = "I wonder wath thith doeth."
activation_message = "Thomething doethn't feel right."
deactivation_message = "You now feel able to pronounce consonants."
- instability = -1
mutation = LISP
/datum/dna/gene/disability/lisp/New()
diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm
index 5fa8d6bb10c..5ec04865591 100644
--- a/code/game/dna/genes/goon_disabilities.dm
+++ b/code/game/dna/genes/goon_disabilities.dm
@@ -12,7 +12,7 @@
desc = "Completely shuts down the speech center of the subject's brain."
activation_message = "You feel unable to express yourself at all."
deactivation_message = "You feel able to speak freely again."
- instability = -3
+ instability = -GENE_INSTABILITY_MODERATE
sdisability = MUTE
/datum/dna/gene/disability/mute/New()
@@ -31,7 +31,7 @@
desc = "The subject suffers from constant radiation sickness and causes the same on nearby organics."
activation_message = "You feel a strange sickness permeate your whole body."
deactivation_message = "You no longer feel awful and sick all over."
- instability = -6
+ instability = -GENE_INSTABILITY_MAJOR
mutation = RADIOACTIVE
/datum/dna/gene/disability/radioactive/New()
@@ -61,7 +61,7 @@
desc = "Greatly slows the subject's metabolism, enabling greater buildup of lipid tissue."
activation_message = "You feel blubbery and lethargic!"
deactivation_message = "You feel fit!"
- instability = -2
+ instability = -GENE_INSTABILITY_MINOR
mutation = OBESITY
/datum/dna/gene/disability/fat/New()
@@ -74,7 +74,6 @@
desc = "Forces the language center of the subject's brain to construct sentences in a more rudimentary manner."
activation_message = "Ye feel like a reet prat like, innit?"
deactivation_message = "You no longer feel like being rude and sassy."
- instability = -1
mutation = CHAV
/datum/dna/gene/disability/speech/chav/New()
@@ -114,7 +113,6 @@
desc = "Forces the language center of the subject's brain to construct sentences in a vaguely norse manner."
activation_message = "You feel Swedish, however that works."
deactivation_message = "The feeling of Swedishness passes."
- instability = -1
mutation = SWEDISH
/datum/dna/gene/disability/speech/swedish/New()
@@ -134,7 +132,7 @@
desc = "Heavily corrupts the part of the brain responsible for forming spoken sentences."
activation_message = "You can't seem to form any coherent thoughts!"
deactivation_message = "Your mind feels more clear."
- instability = -1
+ instability = -GENE_INSTABILITY_MINOR
mutation = SCRAMBLED
/datum/dna/gene/disability/unintelligable/New()
diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 7cc0731e3bb..8df3af9a834 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -28,7 +28,7 @@
/////////////////////////
/datum/dna/gene/basic/stealth
- instability = 4
+ instability = GENE_INSTABILITY_MODERATE
/datum/dna/gene/basic/stealth/can_activate(var/mob/M, var/flags)
// Can only activate one of these at a time.
@@ -121,7 +121,7 @@
desc = "Allows the subject to lower the body temperature of others."
activation_messages = list("You notice a strange cold tingle in your fingertips.")
deactivation_messages = list("Your fingers feel warmer.")
- instability = 4
+ instability = GENE_INSTABILITY_MODERATE
mutation = CRYO
spelltype = /obj/effect/proc_holder/spell/targeted/cryokinesis
@@ -218,7 +218,7 @@
desc = "Allows the subject to eat just about anything without harm."
activation_messages = list("You feel hungry.")
deactivation_messages = list("You don't feel quite so hungry anymore.")
- instability = 2
+ instability = GENE_INSTABILITY_MINOR
mutation = EATER
spelltype=/obj/effect/proc_holder/spell/targeted/eat
@@ -360,7 +360,7 @@
//cooldown = 30
activation_messages = list("Your leg muscles feel taut and strong.")
deactivation_messages = list("Your leg muscles shrink back to normal.")
- instability = 2
+ instability = GENE_INSTABILITY_MINOR
mutation = JUMPY
spelltype =/obj/effect/proc_holder/spell/targeted/leap
@@ -463,7 +463,7 @@
//cooldown = 1800
activation_messages = list("You don't feel entirely like yourself somehow.")
deactivation_messages = list("You feel secure in your identity.")
- instability = 3
+ instability = GENE_INSTABILITY_MODERATE
mutation = POLYMORPH
/datum/dna/gene/basic/grant_spell/polymorph/New()
@@ -514,7 +514,7 @@
spelltype = /obj/effect/proc_holder/spell/targeted/empath
activation_messages = list("You suddenly notice more about others than you did before.")
deactivation_messages = list("You no longer feel able to sense intentions.")
- instability = 1
+ instability = GENE_INSTABILITY_MINOR
mutation=EMPATH
/datum/dna/gene/basic/grant_spell/empath/New()
@@ -632,7 +632,7 @@
desc = "Vastly increases the gas capacity of the subject's digestive tract."
activation_messages = list("You feel bloated and gassy.")
deactivation_messages = list("You no longer feel gassy. What a relief!")
- instability = 2
+ instability = GENE_INSTABILITY_MINOR
mutation = SUPER_FART
spelltype = /obj/effect/proc_holder/spell/aoe_turf/superfart
diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm
index 4e3d77efb66..2f211f7a057 100644
--- a/code/game/dna/genes/powers.dm
+++ b/code/game/dna/genes/powers.dm
@@ -6,7 +6,7 @@
name="No Breathing"
activation_messages=list("You feel no need to breathe.")
deactivation_messages=list("You feel the need to breathe, once more.")
- instability = 2
+ instability = GENE_INSTABILITY_MODERATE
mutation=NO_BREATH
activation_prob=10
@@ -18,7 +18,7 @@
name="Regenerate"
activation_messages=list("Your wounds start healing.")
deactivation_messages=list("Your regenerative powers feel like they've vanished.")
- instability = 1
+ instability = GENE_INSTABILITY_MINOR
mutation=REGEN
/datum/dna/gene/basic/regenerate/New()
@@ -28,7 +28,7 @@
name="Super Speed"
activation_messages=list("You feel swift and unencumbered.")
deactivation_messages=list("You feel slow.")
- instability = 2
+ instability = GENE_INSTABILITY_MINOR
mutation=RUN
/datum/dna/gene/basic/increaserun/New()
@@ -39,7 +39,7 @@
name="Heat Resistance"
activation_messages=list("Your skin is icy to the touch.")
deactivation_messages=list("Your skin no longer feels icy to the touch.")
- instability = 2
+ instability = GENE_INSTABILITY_MODERATE
mutation=RESIST_HEAT
/datum/dna/gene/basic/heat_resist/New()
@@ -52,7 +52,7 @@
name="Cold Resistance"
activation_messages=list("Your body is filled with warmth.")
deactivation_messages=list("Your body is no longer filled with warmth.")
- instability = 2
+ instability = GENE_INSTABILITY_MODERATE
mutation=RESIST_COLD
/datum/dna/gene/basic/cold_resist/New()
@@ -65,7 +65,7 @@
name="No Prints"
activation_messages=list("Your fingers feel numb.")
deactivation_messages=list("your fingers no longer feel numb.")
- instability = 1
+ instability = GENE_INSTABILITY_MINOR
mutation=FINGERPRINTS
/datum/dna/gene/basic/noprints/New()
@@ -75,7 +75,7 @@
name="Shock Immunity"
activation_messages=list("Your skin feels dry and unreactive.")
deactivation_messages=list("Your skin no longer feels dry and unreactive.")
- instability = 2
+ instability = GENE_INSTABILITY_MODERATE
mutation=NO_SHOCK
/datum/dna/gene/basic/noshock/New()
@@ -85,7 +85,7 @@
name="Midget"
activation_messages=list("Everything around you seems bigger now...")
deactivation_messages = list("Everything around you seems to shrink...")
- instability = 1
+ instability = GENE_INSTABILITY_MINOR
mutation=DWARF
/datum/dna/gene/basic/midget/New()
@@ -106,7 +106,7 @@
name="Hulk"
activation_messages=list("Your muscles hurt.")
deactivation_messages=list("Your muscles shrink.")
- instability = 8
+ instability = GENE_INSTABILITY_MAJOR
mutation=HULK
activation_prob=5
@@ -146,7 +146,7 @@
name="X-Ray Vision"
activation_messages=list("The walls suddenly disappear.")
deactivation_messages=list("the walls around you re-appear.")
- instability = 8
+ instability = GENE_INSTABILITY_MAJOR
mutation=XRAY
activation_prob=10
@@ -157,7 +157,7 @@
name="Telekenesis"
activation_messages = list("You feel smarter.")
deactivation_messages = list("You feel dumber.")
- instability = 8
+ instability = GENE_INSTABILITY_MAJOR
mutation=TK
activation_prob=10
diff --git a/code/game/dna/genes/vg_disabilities.dm b/code/game/dna/genes/vg_disabilities.dm
index e3c6b9883c6..ece9cb1da5c 100644
--- a/code/game/dna/genes/vg_disabilities.dm
+++ b/code/game/dna/genes/vg_disabilities.dm
@@ -4,7 +4,6 @@
desc = "Forces the speaking centre of the subjects brain to yell every sentence."
activation_message = "YOU FEEL LIKE YELLING!"
deactivation_message = "You feel like being quiet.."
- instability = -1
mutation = LOUD
/datum/dna/gene/disability/speech/loud/New()
@@ -24,7 +23,7 @@
desc = "Causes the cerebellum to shut down in some places."
activation_message = "You feel very dizzy..."
deactivation_message = "You regain your balance."
- instability = -2
+ instability = -GENE_INSTABILITY_MINOR
mutation = DIZZY
/datum/dna/gene/disability/dizzy/New()
diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm
index fd2061e66fb..0affb14e014 100644
--- a/code/game/dna/genes/vg_powers.dm
+++ b/code/game/dna/genes/vg_powers.dm
@@ -6,7 +6,7 @@
spelltype =/obj/effect/proc_holder/spell/targeted/morph
activation_messages=list("Your body feels if can alter its appearance.")
deactivation_messages = list("Your body doesn't feel capable of altering its appearance.")
- instability = 1
+ instability = GENE_INSTABILITY_MINOR
mutation=MORPH
/datum/dna/gene/basic/grant_spell/morph/New()
@@ -150,7 +150,7 @@
name="Telepathy"
activation_messages=list("You feel you can project your thoughts.")
deactivation_messages=list("You no longer feel you can project your thoughts.")
- instability = 1
+ instability = GENE_INSTABILITY_MINOR
mutation=REMOTE_TALK
spelltype =/obj/effect/proc_holder/spell/targeted/remotetalk
@@ -216,7 +216,7 @@
name="Remote Viewing"
activation_messages=list("Your mind can see things from afar.")
deactivation_messages=list("Your mind can no longer can see things from afar.")
- instability = 1
+ instability = GENE_INSTABILITY_MINOR
mutation=REMOTE_VIEW
spelltype =/obj/effect/proc_holder/spell/targeted/remoteview
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index d1c9b92c917..a7c5e8dc649 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -170,16 +170,33 @@
adjustCloneLoss(0.1)
/mob/living/carbon/human/handle_mutations_and_radiation()
- var/gene_instability = DEFAULT_GENE_INSTABILITY
+ var/gene_stability = DEFAULT_GENE_STABILITY
for(var/datum/dna/gene/gene in dna_genes)
if(!gene.block)
continue
if(gene.is_active(src))
- gene_instability += gene.instability
+ gene_stability -= gene.instability
speech_problem_flag = 1
gene.OnMobLife(src)
- if(prob(10) && prob(max(gene_instability, 0)))
- adjustCloneLoss(0.3 * gene_instability)
+ if(mind && mind.special_role && mind.special_role == "Wizard") //magic
+ gene_instability = DEFAULT_GENE_STABILITY
+ if(gene_stability < 85))
+ if(prob(5))
+ adjustBurnLoss(2)
+ to_chat(src, "You feel like your skin is burning and bubbling off!")
+ if(gene_stability < 70)
+ if(prob(3))
+ adjustCloneLoss(2)
+ to_chat(src, "You feel as if your body is warping.")
+ if(prob(5))
+ adjustToxLoss(3)
+ to_chat(src, "You feel weak and nauseous.")
+ if(gene_stability < 40 && getCloneLoss() > 30)
+ to_chat(src, "You feel incredibly sick... Something isn't right!")
+ spawn(180)
+ if(getCloneLoss())
+ gib()
+
if(!(species.flags & RADIMMUNE))
if (radiation)