diff --git a/code/datums/diseases/advance/symptoms/disfiguration.dm b/code/datums/diseases/advance/symptoms/disfiguration.dm
new file mode 100644
index 0000000000..4a4b704dc0
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/disfiguration.dm
@@ -0,0 +1,50 @@
+/*
+//////////////////////////////////////
+Disfiguration
+
+ Hidden.
+ No change to resistance.
+ Increases stage speed.
+ Slightly increases transmittability.
+ Critical Level.
+
+BONUS
+ Adds disfiguration trait making the mob appear as "Unknown" to others.
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/disfiguration
+
+ name = "Disfiguration"
+ desc = "The virus liquefies facial muscles, disfiguring the host."
+ stealth = 2
+ resistance = 0
+ stage_speed = 3
+ transmittable = 1
+ level = 5
+ severity = 1
+ symptom_delay_min = 25
+ symptom_delay_max = 75
+
+/datum/symptom/disfiguration/Activate(datum/disease/advance/A)
+ . = ..()
+ if(!.)
+ return
+ var/mob/living/M = A.affected_mob
+ if (HAS_TRAIT(M, TRAIT_DISFIGURED))
+ return
+ switch(A.stage)
+ if(5)
+ ADD_TRAIT(M, TRAIT_DISFIGURED, DISEASE_TRAIT)
+ M.visible_message("[M]'s face appears to cave in!", "You feel your face crumple and cave in!")
+ else
+ M.visible_message("[M]'s face begins to contort...", "Your face feels wet and malleable...")
+
+
+/datum/symptom/disfiguration/End(datum/disease/advance/A)
+ . = ..()
+ if(!.)
+ return
+ if(A.affected_mob)
+ REMOVE_TRAIT(A.affected_mob, TRAIT_DISFIGURED, DISEASE_TRAIT)
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/skin.dm b/code/datums/diseases/advance/symptoms/skin.dm
index 300eecc80e..e35fe741fd 100644
--- a/code/datums/diseases/advance/symptoms/skin.dm
+++ b/code/datums/diseases/advance/symptoms/skin.dm
@@ -1,68 +1,22 @@
/*
//////////////////////////////////////
-Vitiligo
+Polyvitiligo
- Hidden.
- No change to resistance.
- Increases stage speed.
- Slightly increases transmittability.
- Critical Level.
-
-BONUS
- Makes the mob lose skin pigmentation.
-
-//////////////////////////////////////
-*/
-
-/datum/symptom/vitiligo
-
- name = "Vitiligo"
- desc = "The virus destroys skin pigment cells, causing rapid loss of pigmentation in the host."
- stealth = 2
- resistance = 0
- stage_speed = 3
- transmittable = 1
- level = 5
- severity = 1
- symptom_delay_min = 25
- symptom_delay_max = 75
-
-/datum/symptom/vitiligo/Activate(datum/disease/advance/A)
- if(!..())
- return
- var/mob/living/M = A.affected_mob
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.skin_tone == "albino")
- return
- switch(A.stage)
- if(5)
- H.skin_tone = "albino"
- H.update_body(0)
- else
- H.visible_message("[H] looks a bit pale...", "Your skin suddenly appears lighter...")
-
-
-/*
-//////////////////////////////////////
-Revitiligo
-
- Slightly noticable.
+ Noticeable.
Increases resistance.
Increases stage speed slightly.
Increases transmission.
Critical Level.
BONUS
- Makes the mob gain skin pigmentation.
+ Makes the mob gain a random crayon powder colorful reagent.
//////////////////////////////////////
*/
-/datum/symptom/revitiligo
-
- name = "Revitiligo"
- desc = "The virus causes increased production of skin pigment cells, making the host's skin grow darker over time."
+/datum/symptom/polyvitiligo
+ name = "Polyvitiligo"
+ desc = "The virus replaces the melanin in the skin with reactive pigment."
stealth = -1
resistance = 3
stage_speed = 1
@@ -72,17 +26,16 @@ BONUS
symptom_delay_min = 7
symptom_delay_max = 14
-/datum/symptom/revitiligo/Activate(datum/disease/advance/A)
+/datum/symptom/polyvitiligo/Activate(datum/disease/advance/A)
if(!..())
return
var/mob/living/M = A.affected_mob
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.skin_tone == "african2")
- return
- switch(A.stage)
- if(5)
- H.skin_tone = "african2"
- H.update_body(0)
- else
- H.visible_message("[H] looks a bit dark...", "Your skin suddenly appears darker...")
+ switch(A.stage)
+ if(5)
+ var/static/list/banned_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/invisible, /datum/reagent/colorful_reagent/crayonpowder/white)
+ var/color = pick(subtypesof(/datum/reagent/colorful_reagent/crayonpowder) - banned_reagents)
+ if(M.reagents.total_volume <= (M.reagents.maximum_volume/10)) // no flooding humans with 1000 units of colorful reagent
+ M.reagents.add_reagent(color, 5)
+ else
+ if (prob(50)) // spam
+ M.visible_message("[M] looks rather vibrant...", "The colors, man, the colors...")
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm
index fef6453b3a..a6ea7de5a0 100644
--- a/code/datums/diseases/advance/symptoms/symptoms.dm
+++ b/code/datums/diseases/advance/symptoms/symptoms.dm
@@ -38,10 +38,11 @@
return
CRASH("We couldn't assign an ID!")
-// Called when processing of the advance disease that holds this symptom infects a host and upon each Refresh() of that advance disease.
+// Called when processing of the advance disease, which holds this symptom, starts.
/datum/symptom/proc/Start(datum/disease/advance/A)
if(neutered)
return FALSE
+ next_activation = world.time + rand(symptom_delay_min * 10, symptom_delay_max * 10) //so it doesn't instantly activate on infection
return TRUE
// Called when the advance disease is going to be deleted or when the advance disease stops processing.
@@ -59,7 +60,7 @@
next_activation = world.time + rand(symptom_delay_min * 10, symptom_delay_max * 10)
return TRUE
-/datum/symptom/proc/on_stage_change(datum/disease/advance/A)
+/datum/symptom/proc/on_stage_change(new_stage, datum/disease/advance/A)
if(neutered)
return FALSE
return TRUE
diff --git a/code/modules/antagonists/disease/disease_abilities.dm b/code/modules/antagonists/disease/disease_abilities.dm
index 7b30d10c5d..e8dcaf9cc7 100644
--- a/code/modules/antagonists/disease/disease_abilities.dm
+++ b/code/modules/antagonists/disease/disease_abilities.dm
@@ -5,49 +5,49 @@ is currently following.
*/
GLOBAL_LIST_INIT(disease_ability_singletons, list(
- new /datum/disease_ability/action/cough,
- new /datum/disease_ability/action/sneeze,
- new /datum/disease_ability/action/infect,
- new /datum/disease_ability/symptom/mild/cough,
- new /datum/disease_ability/symptom/mild/sneeze,
- new /datum/disease_ability/symptom/medium/shedding,
- new /datum/disease_ability/symptom/medium/beard,
- new /datum/disease_ability/symptom/medium/hallucigen,
- new /datum/disease_ability/symptom/medium/choking,
- new /datum/disease_ability/symptom/medium/confusion,
- new /datum/disease_ability/symptom/medium/vomit,
- new /datum/disease_ability/symptom/medium/voice_change,
- new /datum/disease_ability/symptom/medium/visionloss,
- new /datum/disease_ability/symptom/medium/deafness,
- new /datum/disease_ability/symptom/powerful/narcolepsy,
- new /datum/disease_ability/symptom/medium/fever,
- new /datum/disease_ability/symptom/medium/shivering,
- new /datum/disease_ability/symptom/medium/headache,
- new /datum/disease_ability/symptom/medium/nano_boost,
- new /datum/disease_ability/symptom/medium/nano_destroy,
- new /datum/disease_ability/symptom/medium/viraladaptation,
- new /datum/disease_ability/symptom/medium/viralevolution,
- new /datum/disease_ability/symptom/medium/vitiligo,
- new /datum/disease_ability/symptom/medium/revitiligo,
- new /datum/disease_ability/symptom/medium/itching,
- new /datum/disease_ability/symptom/medium/heal/weight_loss,
- new /datum/disease_ability/symptom/medium/heal/sensory_restoration,
- new /datum/disease_ability/symptom/medium/heal/mind_restoration,
- new /datum/disease_ability/symptom/powerful/fire,
- new /datum/disease_ability/symptom/powerful/flesh_eating,
-// new /datum/disease_ability/symptom/powerful/genetic_mutation,
- new /datum/disease_ability/symptom/powerful/inorganic_adaptation,
- new /datum/disease_ability/symptom/powerful/heal/starlight,
- new /datum/disease_ability/symptom/powerful/heal/oxygen,
- new /datum/disease_ability/symptom/powerful/heal/chem,
- new /datum/disease_ability/symptom/powerful/heal/metabolism,
- new /datum/disease_ability/symptom/powerful/heal/dark,
- new /datum/disease_ability/symptom/powerful/heal/water,
- new /datum/disease_ability/symptom/powerful/heal/plasma,
- new /datum/disease_ability/symptom/powerful/heal/radiation,
- new /datum/disease_ability/symptom/powerful/heal/coma,
- new /datum/disease_ability/symptom/powerful/youth
- ))
+new /datum/disease_ability/action/cough,
+new /datum/disease_ability/action/sneeze,
+new /datum/disease_ability/action/infect,
+new /datum/disease_ability/symptom/mild/cough,
+new /datum/disease_ability/symptom/mild/sneeze,
+new /datum/disease_ability/symptom/medium/shedding,
+new /datum/disease_ability/symptom/medium/beard,
+new /datum/disease_ability/symptom/medium/hallucigen,
+new /datum/disease_ability/symptom/medium/choking,
+new /datum/disease_ability/symptom/medium/confusion,
+new /datum/disease_ability/symptom/medium/vomit,
+new /datum/disease_ability/symptom/medium/voice_change,
+new /datum/disease_ability/symptom/medium/visionloss,
+new /datum/disease_ability/symptom/medium/deafness,
+new /datum/disease_ability/symptom/powerful/narcolepsy,
+new /datum/disease_ability/symptom/medium/fever,
+new /datum/disease_ability/symptom/medium/shivering,
+new /datum/disease_ability/symptom/medium/headache,
+new /datum/disease_ability/symptom/medium/nano_boost,
+new /datum/disease_ability/symptom/medium/nano_destroy,
+new /datum/disease_ability/symptom/medium/viraladaptation,
+new /datum/disease_ability/symptom/medium/viralevolution,
+new /datum/disease_ability/symptom/medium/disfiguration,
+new /datum/disease_ability/symptom/medium/polyvitiligo,
+new /datum/disease_ability/symptom/medium/itching,
+new /datum/disease_ability/symptom/medium/heal/weight_loss,
+new /datum/disease_ability/symptom/medium/heal/sensory_restoration,
+new /datum/disease_ability/symptom/medium/heal/mind_restoration,
+new /datum/disease_ability/symptom/powerful/fire,
+new /datum/disease_ability/symptom/powerful/flesh_eating,
+new /datum/disease_ability/symptom/powerful/genetic_mutation,
+new /datum/disease_ability/symptom/powerful/inorganic_adaptation,
+new /datum/disease_ability/symptom/powerful/heal/starlight,
+new /datum/disease_ability/symptom/powerful/heal/oxygen,
+new /datum/disease_ability/symptom/powerful/heal/chem,
+new /datum/disease_ability/symptom/powerful/heal/metabolism,
+new /datum/disease_ability/symptom/powerful/heal/dark,
+new /datum/disease_ability/symptom/powerful/heal/water,
+new /datum/disease_ability/symptom/powerful/heal/plasma,
+new /datum/disease_ability/symptom/powerful/heal/radiation,
+new /datum/disease_ability/symptom/powerful/heal/coma,
+new /datum/disease_ability/symptom/powerful/youth
+))
/datum/disease_ability
var/name
@@ -57,7 +57,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
var/short_desc = ""
var/long_desc = ""
var/stat_block = ""
- var/threshold_block = list()
+ var/threshold_block = ""
var/category = ""
var/list/symptoms
@@ -76,7 +76,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
resistance += initial(S.resistance)
stage_speed += initial(S.stage_speed)
transmittable += initial(S.transmittable)
- threshold_block += initial(S.threshold_desc)
+ threshold_block += "
[initial(S.threshold_desc)]"
stat_block = "Resistance: [resistance]
Stealth: [stealth]
Stage Speed: [stage_speed]
Transmissibility: [transmittable]
"
if(symptoms.len == 1) //lazy boy's dream
name = initial(S.name)
@@ -106,10 +106,8 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
for(var/T in symptoms)
var/datum/symptom/S = new T()
SD.symptoms += S
- S.OnAdd(SD)
if(SD.processing)
- if(S.Start(SD))
- S.next_activation = world.time + rand(S.symptom_delay_min * 10, S.symptom_delay_max * 10)
+ S.Start(SD)
SD.Refresh()
for(var/T in actions)
var/datum/action/A = new T()
@@ -136,7 +134,6 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
var/datum/symptom/S = locate(T) in SD.symptoms
if(S)
SD.symptoms -= S
- S.OnRemove(SD)
if(SD.processing)
S.End(SD)
qdel(S)
@@ -296,7 +293,6 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
cost = 8
category = "Symptom (Strong+)"
-
/******MILD******/
/datum/disease_ability/symptom/mild/cough
@@ -377,11 +373,11 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
/datum/disease_ability/symptom/medium/viralevolution
symptoms = list(/datum/symptom/viralevolution)
-/datum/disease_ability/symptom/medium/vitiligo
- symptoms = list(/datum/symptom/vitiligo)
+/datum/disease_ability/symptom/medium/polyvitiligo
+ symptoms = list(/datum/symptom/polyvitiligo)
-/datum/disease_ability/symptom/medium/revitiligo
- symptoms = list(/datum/symptom/revitiligo)
+/datum/disease_ability/symptom/medium/disfiguration
+ symptoms = list(/datum/symptom/disfiguration)
/datum/disease_ability/symptom/medium/itching
symptoms = list(/datum/symptom/itching)
@@ -409,11 +405,9 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
/datum/disease_ability/symptom/powerful/flesh_eating
symptoms = list(/datum/symptom/flesh_eating)
-/*
/datum/disease_ability/symptom/powerful/genetic_mutation
symptoms = list(/datum/symptom/genetic_mutation)
cost = 8
-*/
/datum/disease_ability/symptom/powerful/inorganic_adaptation
symptoms = list(/datum/symptom/inorganic_adaptation)
@@ -457,4 +451,4 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
/datum/disease_ability/symptom/powerful/heal/coma
symptoms = list(/datum/symptom/heal/coma)
short_desc = "Cause victims to fall into a healing coma when hurt."
- long_desc = "Cause victims to fall into a healing coma when hurt."
+ long_desc = "Cause victims to fall into a healing coma when hurt."
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 1f6956c78a..75b6b253fb 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -462,10 +462,12 @@
#include "code\datums\diseases\advance\symptoms\confusion.dm"
#include "code\datums\diseases\advance\symptoms\cough.dm"
#include "code\datums\diseases\advance\symptoms\deafness.dm"
+#include "code\datums\diseases\advance\symptoms\disfiguration.dm"
#include "code\datums\diseases\advance\symptoms\dizzy.dm"
#include "code\datums\diseases\advance\symptoms\fever.dm"
#include "code\datums\diseases\advance\symptoms\fire.dm"
#include "code\datums\diseases\advance\symptoms\flesh_eating.dm"
+#include "code\datums\diseases\advance\symptoms\genetics.dm"
#include "code\datums\diseases\advance\symptoms\hallucigen.dm"
#include "code\datums\diseases\advance\symptoms\headache.dm"
#include "code\datums\diseases\advance\symptoms\heal.dm"