diff --git a/code/__defines/diseases.dm b/code/__defines/diseases.dm
index 30f1d6252b..97f0025228 100644
--- a/code/__defines/diseases.dm
+++ b/code/__defines/diseases.dm
@@ -18,7 +18,6 @@
#define CONTACT_GENERAL (1<<5)
#define AIRBORNE (1<<6)
-
//Severity Defines
#define NONTHREAT "No threat"
#define MINOR "Minor"
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index 6eda375458..e5790c3bca 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -3,8 +3,8 @@ GLOBAL_LIST_EMPTY(archive_diseases)
GLOBAL_LIST_INIT(advance_cures, list(
"sodiumchloride", "sugar", "orangejuice",
"spaceacillin", "glucose", "ethanol",
- "dyloteane", "impedrezene", "hepanephrodaxon",
- "gold", "silver"
+ "leporazine", "impedrezene", "hepanephrodaxon",
+ "silver", "gold"
))
/datum/disease/advance
@@ -236,6 +236,13 @@ GLOBAL_LIST_INIT(advance_cures, list(
Refresh(1)
return
+/datum/disease/advance/proc/PickyEvolve(var/list/datum/symptom/D)
+ var/s = safepick(D)
+ if(s)
+ AddSymptom(new s)
+ Refresh(1)
+ return
+
// Randomly remove a symptom.
/datum/disease/advance/proc/Devolve()
if(length(symptoms) > 1)
diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm
new file mode 100644
index 0000000000..21a44b2e9f
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/deafness.dm
@@ -0,0 +1,38 @@
+/*
+//////////////////////////////////////
+
+Deafness
+
+ Slightly hidden.
+ Lowers resistance.
+ Increases stage speed slightly.
+ Decreases transmittablity.
+ Intense Level.
+
+Bonus
+ Causes intermittent loss of hearing.
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/deafness
+ name = "Deafness"
+ stealth = 1
+ resistance = -2
+ stage_speed = 1
+ transmittable = -3
+ level = 4
+ severity = 3
+
+/datum/symptom/deafness/Activate(datum/disease/advance/A)
+ ..()
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/mob/living/M = A.affected_mob
+
+ switch(A.stage)
+ if(3, 4)
+ to_chat(M, span_warning("[pick("you hear a ringing in your ear.", "You ears pop.")]"))
+ if(5)
+ to_chat(M, span_userdanger("You ear pop and begin ringing loudly!"))
+ M.ear_deaf += 20
+ return
diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm
index e91efab1c7..00a5a273e7 100644
--- a/code/datums/diseases/advance/symptoms/flesh_eating.dm
+++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm
@@ -6,7 +6,7 @@ Necrotizing Fasciitis (AKA Flesh-Eating Disease)
Very very noticable.
Lowers resistance tremendously.
No changes to stage speed.
- Decreases transmittablity temrendously.
+ Decreases transmittablity tremendously.
Fatal Level.
Bonus
diff --git a/code/datums/diseases/advance/symptoms/flip.dm b/code/datums/diseases/advance/symptoms/flip.dm
new file mode 100644
index 0000000000..e210e4b3bf
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/flip.dm
@@ -0,0 +1,33 @@
+/*
+//////////////////////////////////////
+
+Flippinov
+
+ Slightly hidden.
+ No change to resistance.
+ Increases stage speed.
+ Little transmittable.
+ Low Level.
+
+BONUS
+ Makes the host FLIP.
+ Should be used for buffing your disease.
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/spyndrome
+ name = "Flippinov"
+ stealth = 2
+ resistance = 0
+ stage_speed = 3
+ transmittable = 1
+ level = 1
+ severity = 1
+
+/datum/symptom/spyndrome/Activate(datum/disease/advance/A)
+ ..()
+
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/mob/living/L = A.affected_mob
+ L.emote("flip")
diff --git a/code/datums/diseases/advance/symptoms/hair.dm b/code/datums/diseases/advance/symptoms/hair.dm
new file mode 100644
index 0000000000..1a6c2ff109
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/hair.dm
@@ -0,0 +1,56 @@
+/*
+//////////////////////////////////////
+Alopecia
+
+ Noticable.
+ Decreases resistance slightly.
+ Reduces stage speed slightly.
+ Transmittable.
+ Intense Level.
+
+BONUS
+ Makes the mob lose hair.
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/shedding
+ name = "Alopecia"
+ stealth = -1
+ resistance = -1
+ stage_speed = -1
+ transmittable = 2
+ level = 4
+ severity = 1
+
+/datum/symptom/shedding/Activate(datum/disease/advance/A)
+ ..()
+ if(!prob(SYMPTOM_ACTIVATION_PROB))
+ return
+ if(ishuman(A.affected_mob))
+ return
+ var/mob/living/carbon/human/H = A.affected_mob
+ var/obj/item/organ/external/head/head_organ = H.get_organ(BP_HEAD)
+ if(!istype(head_organ))
+ return
+ to_chat(H, span_warning("[pick("Your scalp itches.", "Your skin feels flakey.")]"))
+
+ switch(A.stage)
+ if(3, 4)
+ if(H.h_style != "Bald" && H.h_style != "Balding Hair")
+ to_chat(H, span_warning("Your hair starts to fall out in clumps..."))
+ addtimer(CALLBACK(src, PROC_REF(change_hair), H, null, "Balding Hair"), 5 SECONDS)
+ if(5)
+ if(H.h_style != "Shaved" && H.h_style != "Bald")
+ to_chat(H, span_warning("Your hair starts to fall out in clumps..."))
+ addtimer(CALLBACK(src, PROC_REF(change_hair), H, "Shaved", "Bald"), 5 SECONDS)
+ return
+
+/datum/symptom/shedding/proc/change_hair(var/mob/living/carbon/human/H, f_style, h_style)
+ if(!H)
+ return
+ if(f_style)
+ H.f_style = f_style
+ if(h_style)
+ H.h_style = h_style
+ return
diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm
index 1138d4adba..340b88d6b4 100644
--- a/code/datums/diseases/advance/symptoms/heal.dm
+++ b/code/datums/diseases/advance/symptoms/heal.dm
@@ -130,7 +130,7 @@ Bonus
Very high level.
Bonus
- Heals brain damage, treats radiation.
+ Heals clone damage, treats radiation.
//////////////////////////////////////
*/
diff --git a/code/datums/diseases/advance/symptoms/hematophagy.dm b/code/datums/diseases/advance/symptoms/hematophagy.dm
new file mode 100644
index 0000000000..53e5aa842d
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/hematophagy.dm
@@ -0,0 +1,42 @@
+/*
+//////////////////////////////////////
+
+Hematophagy
+
+ Little bit hidden.
+ Decreases resistance slightly.
+ Decreases stage speed tremendously.
+ Slightly increased transmittablity.
+ Intense level.
+
+BONUS
+ The host must feed on BLOOD
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/hematophagy
+ name = "Hematophagy"
+ stealth = 1
+ resistance = -1
+ resistance = -4
+ transmittable = 1
+ level = 4
+
+/datum/symptom/hematophagy/Start(datum/disease/advance/A)
+ if(ishuman(A.affected_mob))
+ var/mob/living/carbon/human/H = A.affected_mob
+
+ H.species.organic_food_coeff = 0
+ H.species.bloodsucker = TRUE
+
+ add_verb(H, /mob/living/carbon/human/proc/bloodsuck)
+
+/datum/symptom/hematophagy/End(datum/disease/advance/A)
+ if(ishuman(A.affected_mob))
+ var/mob/living/carbon/human/H = A.affected_mob
+
+ H.species.organic_food_coeff = initial(H.species.organic_food_coeff)
+ H.species.bloodsucker = initial(H.species.bloodsucker)
+
+ remove_verb(H, /mob/living/carbon/human/proc/bloodsuck)
diff --git a/code/datums/diseases/advance/symptoms/photosensitivity.dm b/code/datums/diseases/advance/symptoms/photosensitivity.dm
new file mode 100644
index 0000000000..5908bfb259
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/photosensitivity.dm
@@ -0,0 +1,41 @@
+/*
+//////////////////////////////////////
+
+Photosensitivity
+
+ Noticable.
+ Increases resistance.
+ Increases stage speed slightly.
+ Decreases transmittablity tremendously.
+ Fatal Level.
+
+Bonus
+ Deals brute damage over time.
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/photosensitivity
+ name = "Photosensitivity"
+ stealth = -2
+ resistance = 2
+ stage_speed = 1
+ transmittable = -4
+ level = 6
+ severity = 5
+
+/datum/symptom/photosensitivity/Activate(datum/disease/advance/A)
+ ..()
+
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/mob/living/carbon/human/H = A.affected_mob
+ var/turf/T = get_turf(H)
+ switch(A.stage)
+ if(3)
+ if(T.get_lumcount() > 0.5)
+ to_chat(H, span_danger("Your skin itches under the light..."))
+ if(4, 5)
+ if(T.get_lumcount() > 0.5)
+ to_chat(H, span_danger("Your skin feels like burning!"))
+ H.adjustFireLoss(T.get_lumcount())
+ return
diff --git a/code/datums/diseases/advance/symptoms/pica.dm b/code/datums/diseases/advance/symptoms/pica.dm
new file mode 100644
index 0000000000..ddd7e282d8
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/pica.dm
@@ -0,0 +1,46 @@
+/*
+//////////////////////////////////////
+
+Pica
+
+ Not noticable or unnoticable.
+ Decreases resistance.
+ Increases stage speed.
+ Little transmittable.
+ Low Level.
+
+BONUS
+ The host gains hunger for any kind of object.
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/pica
+ name = "Pica"
+ stealth = 0
+ resistance = -2
+ stage_speed = 3
+ transmittable = 1
+ level = 1
+ severity = 1
+
+/datum/symptom/pica/Start(datum/disease/advance/A)
+ add_verb(A.affected_mob, /mob/living/proc/eat_trash)
+ add_verb(A.affected_mob, /mob/living/proc/toggle_trash_catching)
+
+/datum/symptom/pica/End(datum/disease/advance/A)
+ remove_verb(A.affected_mob, /mob/living/proc/eat_trash)
+ remove_verb(A.affected_mob, /mob/living/proc/toggle_trash_catching)
+
+/datum/symptom/pica/Activate(datum/disease/advance/A)
+ ..()
+
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/list/nearby = oview(5, A.affected_mob)
+ to_chat(A.affected_mob, span_warning("You could go fo a bite of [pick(nearby)]..."))
+ else if (prob(SYMPTOM_ACTIVATION_PROB))
+ if(ishuman(A.affected_mob))
+ var/mob/living/carbon/human/H = A.affected_mob
+ var/list/item = H.get_equipped_items()
+ to_chat(H, span_warning("[pick(item)] looks oddly [pick("delicious", "tasty", "scrumptious", "inviting")]..."))
+ return
diff --git a/code/datums/diseases/advance/symptoms/size.dm b/code/datums/diseases/advance/symptoms/size.dm
new file mode 100644
index 0000000000..a0a71fe1b7
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/size.dm
@@ -0,0 +1,98 @@
+/*
+//////////////////////////////////////
+
+Mass Revectoring
+
+ Very noticeable.
+ Increases resistance slightly.
+ Increases stage speed.
+ Decreases transmittablity
+ Intense level.
+
+BONUS
+ Changes the size of the host.
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/size
+ name = "Mass Revectoring"
+ stealth = -4
+ resistance = 1
+ stage_speed = 2
+ transmittable = -2
+ level = 4
+ severity = 1
+
+/datum/symptom/size/Activate(datum/disease/advance/A)
+ ..()
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/mob/living/M = A.affected_mob
+
+ switch(A.stage)
+ if(4, 5)
+ M.emote("twitch")
+ Resize(M, rand(25, 200))
+
+/datum/symptom/size/proc/Resize(mob/living/M, var/size)
+ M.resize(size+M.size_multiplier/100)
+
+/*
+//////////////////////////////////////
+
+Enlargement Disorder
+
+ Very noticeable.
+ Increases resistance slightly.
+ Increases stage speed.
+ Decreases transmittablity
+ Intense level.
+
+BONUS
+ Grows the host to bigger sizes
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/size/grow
+ name = "Enlargement Disorder"
+
+/datum/symptom/size/Activate(datum/disease/advance/A)
+ ..()
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/mob/living/M = A.affected_mob
+
+ switch(A.stage)
+ if(4, 5)
+ M.emote("twitch")
+ Resize(M, rand(100, 200))
+
+/*
+//////////////////////////////////////
+
+Dwindling Malady
+
+ Very noticeable.
+ Increases resistance slightly.
+ Increases stage speed.
+ Decreases transmittablity
+ Intense level.
+
+BONUS
+ Shrinks the host to small sizes
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/size/shrink
+ name = "Dwindling Malady"
+
+/datum/symptom/size/Activate(datum/disease/advance/A)
+ ..()
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/mob/living/M = A.affected_mob
+
+ switch(A.stage)
+ if(4, 5)
+ M.emote("twitch")
+ Resize(M, rand(25, 100))
diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm
index 63f2ab00e1..529596945b 100644
--- a/code/datums/diseases/advance/symptoms/sneeze.dm
+++ b/code/datums/diseases/advance/symptoms/sneeze.dm
@@ -42,3 +42,78 @@ Bonus
icky.viruses |= A.Copy()
return
+
+/*
+//////////////////////////////////////
+
+Bluespace Sneezing
+
+ Very Noticable.
+ Resistant
+ Doesn't increase stage speed.
+ Little transmittable.
+ Low Level.
+
+Bonus
+ Forces a spread type of AIRBORNE
+ with extra range AND teleports the mob
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/sneeze/bluespace
+ name = "Bluespace Sneezing"
+ stealth = -2
+ resistance = 3
+ stage_speed = 0
+ transmittable = 1
+ level = 4
+ severity = 1
+
+/datum/symptom/sneeze/bluespace/Activate(datum/disease/advance/A)
+ ..()
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3)
+ M.emote("sniff")
+ else
+ SneezeTeleport(A, M)
+ A.spread(A.stage)
+ if(prob(30))
+ var/obj/effect/decal/cleanable/mucus/icky = new(get_turf(M))
+ icky.viruses |= A.Copy()
+
+ return
+
+/datum/symptom/sneeze/bluespace/proc/SneezeTeleport(datum/disease/advance/A, var/mob/living/M)
+ var/list/destination = list()
+ var/mob/living/carbon/human/H = M
+ var/place
+
+ for(var/mob/living/carbon/human/B in range(A.stage, M))
+ if(B.can_be_drop_pred && H.can_be_drop_prey && H.devourable)
+ destination += B.vore_selected
+
+ for(var/turf/T in range(A.stage, H))
+ if(istype(T, /turf/space)) // No danger, this is just a fun/vore symptom
+ continue
+ destination += T
+
+ if(isemptylist(destination))
+ to_chat(H, span_warning("You go to sneeze, but can't."))
+ return FALSE
+
+ place = safepick(destination)
+
+ var/mob/living/carbon/human/unlucky = locate() in place
+
+ if(unlucky)
+ if(unlucky.can_be_drop_pred && H.can_be_drop_prey && H.devourable)
+ place = unlucky.vore_selected
+ else if(unlucky.devourable && unlucky.can_be_drop_prey && H.can_be_drop_pred)
+ unlucky.forceMove(H.vore_selected)
+
+ H.emote("sneeze")
+ do_teleport(H, place)
+ return TRUE
diff --git a/code/datums/diseases/advance/symptoms/spin.dm b/code/datums/diseases/advance/symptoms/spin.dm
index 995be34071..055505dba9 100644
--- a/code/datums/diseases/advance/symptoms/spin.dm
+++ b/code/datums/diseases/advance/symptoms/spin.dm
@@ -16,7 +16,7 @@ BONUS
//////////////////////////////////////
*/
-/datum/symptom/mlem
+/datum/symptom/spyndrome
name = "Spyndrome"
stealth = 2
resistance = 0
@@ -24,9 +24,8 @@ BONUS
transmittable = 1
level = 1
severity = 1
- var/list/directions = list(2,4,1,8,2,4,1,8,2,4,1,8,2,4,1,8,2,4,1,8)
-/datum/symptom/mlem/Activate(var/datum/disease/advance/A)
+/datum/symptom/spyndrome/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
@@ -34,7 +33,5 @@ BONUS
to_chat(viewers(A.affected_mob), span_warning("[A.affected_mob.name] struggles violently against their restraints!"))
else
to_chat(viewers(A.affected_mob), span_warning("[A.affected_mob.name] spins around violently!"))
- for(var/D in directions)
- A.affected_mob.dir = D
- A.affected_mob.dir = pick(2,4,1,8)
+ A.affected_mob.emote("spin")
return
diff --git a/code/datums/diseases/advance/symptoms/stimulant.dm b/code/datums/diseases/advance/symptoms/stimulant.dm
new file mode 100644
index 0000000000..4a427d4036
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/stimulant.dm
@@ -0,0 +1,43 @@
+/*
+//////////////////////////////////////
+
+Healing
+
+ No change to stealth.
+ Slightly decreases resistance.
+ Increases stage speed.
+ Decreases transmittablity considerably.
+ Moderate Level.
+
+Bonus
+ Heals toxins in the affected mob's blood stream.
+
+//////////////////////////////////////
+*/
+
+/datum/symptom/stimulant
+ name = "Overactive Adrenal Gland"
+ stealth = 0
+ resistance = -1
+ stage_speed = 2
+ transmittable = -3
+ level = 3
+ severity = 1
+
+/datum/symptom/stimulant/Activate(datum/disease/advance/A)
+ ..()
+
+ if(prob(SYMPTOM_ACTIVATION_PROB))
+ var/mob/living/L = A.affected_mob
+ to_chat(L, span_notice("You feel a rush of energy inside you!"))
+ switch(A.stage)
+ if(1, 2)
+ L.jitteriness += 5
+ if(3, 4)
+ L.jitteriness += 10
+ else
+ if(L.reagents.get_reagent_amount("hyperzine" < 10))
+ L.reagents.add_reagent("hyperzine", 5)
+ if(prob(30))
+ L.jitteriness += 15
+ return
diff --git a/code/datums/diseases/advance/symptoms/synthetic_infection.dm b/code/datums/diseases/advance/symptoms/synthetic_infection.dm
index cb17d88c81..b34ce07481 100644
--- a/code/datums/diseases/advance/symptoms/synthetic_infection.dm
+++ b/code/datums/diseases/advance/symptoms/synthetic_infection.dm
@@ -1,7 +1,7 @@
/*
//////////////////////////////////////
-Sneezing
+Synthetic Infection
Slightly hidden.
Increases resistance.
@@ -23,7 +23,6 @@ Bonus
transmittable = 1
level = 5
severity = 3
- id = "synthetic_infection"
/datum/symptom/infect_synthetics/Start(datum/disease/advance/A)
A.infect_synthetics = TRUE
diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm
new file mode 100644
index 0000000000..ab7f5383b3
--- /dev/null
+++ b/code/datums/diseases/appendicitis.dm
@@ -0,0 +1,45 @@
+/datum/disease/appendicitis
+ form = "Condition"
+ name = "Appendicitis"
+ max_stages = 3
+ spread_text = "Non-contagius"
+ spread_flags = NON_CONTAGIOUS
+ cure_text = "Surgery"
+ agent = "Shitty Appendix"
+ viable_mobtypes = list(/mob/living/carbon/human)
+ desc = "If left untreated the subject will become very weak, and may vomit often."
+ severity = MINOR
+ disease_flags = CAN_CARRY|CAN_CARRY
+ visibility_flags = HIDDEN_PANDEMIC
+ required_organs = list(/obj/item/organ/internal/appendix)
+ bypasses_immunity = TRUE
+ virus_heal_resistant = TRUE
+
+/datum/disease/appendicitis/stage_act()
+ if(!..())
+ return
+ switch(stage)
+ if(1)
+ if(prob(5))
+ affected_mob.adjustToxLoss(1)
+ if(2)
+ var/obj/item/organ/internal/appendix/A = affected_mob.internal_organs_by_name[O_APPENDIX]
+ if(A)
+ A.inflamed = TRUE
+ if(prob(3))
+ to_chat(affected_mob, span_warning("You feel a stabbing pain in your abdomen!"))
+ affected_mob.custom_emote(VISIBLE_MESSAGE, "winces painfully.")
+ affected_mob.Stun(rand(4, 6))
+ affected_mob.adjustToxLoss(1)
+ if(3)
+ if(prob(1))
+ to_chat(affected_mob, span_danger("Your abdomen is a world of pain!"))
+ affected_mob.custom_emote(VISIBLE_MESSAGE, "winces painfully.")
+ affected_mob.Weaken(10)
+ if(prob(1))
+ affected_mob.vomit(95)
+ if(prob(5))
+ to_chat(affected_mob, span_warning("You feel a stabbing pain in your abdomen!"))
+ affected_mob.custom_emote(VISIBLE_MESSAGE, "winces painfully.")
+ affected_mob.Stun(rand(4, 6))
+ affected_mob.adjustToxLoss(2)
diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm
new file mode 100644
index 0000000000..ca36f57d87
--- /dev/null
+++ b/code/datums/diseases/fake_gbs.dm
@@ -0,0 +1,32 @@
+/datum/disease/fake_gbs
+ name = "GBS"
+ max_stages = 5
+ spread_text = "On contact"
+ spread_flags = CONTACT_GENERAL
+ cure_text = "Adranol & Sulfur"
+ cures = list("adranol", "sulfur")
+ agent = "Gravitokinetic Bipotential SADS-"
+ viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/human/monkey)
+ desc = "if left untreated death will occur."
+ severity = BIOHAZARD // Mimics real GBS
+
+/datum/disease/fake_gbs/stage_act()
+ if(!..())
+ return FALSE
+ switch(stage)
+ if(2)
+ if(prob(1))
+ affected_mob.emote("sneeze")
+ if(3)
+ if(prob(5))
+ affected_mob.emote("cough")
+ else if(prob(5))
+ affected_mob.emote("gasp")
+ if(prob(10))
+ to_chat(span_danger("You're starting to feel very weak..."))
+ if(4)
+ if(prob(10))
+ affected_mob.emote("cough")
+ if(5)
+ if(prob(10))
+ affected_mob.emote("cough")
diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm
new file mode 100644
index 0000000000..ea2c755e27
--- /dev/null
+++ b/code/datums/diseases/gbs.dm
@@ -0,0 +1,49 @@
+/datum/disease/gbs
+ name = "GBS"
+ max_stages = 5
+ spread_text = "On contact"
+ spread_flags = CONTACT_GENERAL
+ cure_text = "Adranol & Sulfur"
+ cures = list("adranol", "sulfur")
+ cure_chance = 15
+ agent = "Gravitokinetic Bipotential SADS+"
+ viable_mobtypes = list(/mob/living/carbon/human)
+ severity = BIOHAZARD
+
+/datum/disease/gbs/stage_act()
+ if(!..())
+ return FALSE
+ switch(stage)
+ if(2)
+ if(prob(45))
+ affected_mob.adjustToxLoss(5)
+ if(prob(1))
+ affected_mob.emote("sneeze")
+ if(3)
+ if(prob(5))
+ affected_mob.emote("cough")
+ else if(prob(5))
+ affected_mob.emote("gasp")
+ if(prob(10))
+ to_chat(affected_mob, span_danger("You're starting to feel very weak..."))
+ if(4)
+ if(prob(10))
+ affected_mob.emote("cough")
+ affected_mob.adjustToxLoss(5)
+ if(5)
+ to_chat(affected_mob, span_danger("Your body feels as if it's trying to rip itself open..."))
+ if(prob(50))
+ affected_mob.delayed_gib()
+ else
+ return
+
+/datum/disease/gbs/curable
+ name = "Non-Contagious GBS"
+ stage_prob = 5
+ spread_text = "Non-contagious"
+ spread_flags = NON_CONTAGIOUS
+ cure_text = "Cryoxadone"
+ cures = list("cryoxadone")
+ cure_chance = 10
+ agent = "gibbis"
+ disease_flags = CURABLE
diff --git a/code/game/machinery/pandemic.dm b/code/game/machinery/pandemic.dm
index cd51b2a9fc..a3521facbf 100644
--- a/code/game/machinery/pandemic.dm
+++ b/code/game/machinery/pandemic.dm
@@ -1,6 +1,7 @@
/obj/machinery/computer/pandemic
name = "PanD.E.M.I.C 2200"
desc = "Used to work with viruses."
+ circuit = /obj/item/circuitboard/pandemic
density = TRUE
anchored = TRUE
icon = 'icons/obj/pandemic.dmi'
@@ -325,7 +326,7 @@
printing = 1
var/obj/item/paper/P = new /obj/item/paper(loc)
visible_message(span_notice("[src] rattles and prints out a sheet of paper."))
- // playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
+ playsound(loc, 'sound/machines/printer.ogg', 50, 1)
P.info = "