mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
[MIRROR] Virology Update 1 (#9586)
Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
5e64b7d4cc
commit
d3976b78a3
@@ -18,7 +18,6 @@
|
|||||||
#define CONTACT_GENERAL (1<<5)
|
#define CONTACT_GENERAL (1<<5)
|
||||||
#define AIRBORNE (1<<6)
|
#define AIRBORNE (1<<6)
|
||||||
|
|
||||||
|
|
||||||
//Severity Defines
|
//Severity Defines
|
||||||
#define NONTHREAT "No threat"
|
#define NONTHREAT "No threat"
|
||||||
#define MINOR "Minor"
|
#define MINOR "Minor"
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ GLOBAL_LIST_EMPTY(archive_diseases)
|
|||||||
GLOBAL_LIST_INIT(advance_cures, list(
|
GLOBAL_LIST_INIT(advance_cures, list(
|
||||||
"sodiumchloride", "sugar", "orangejuice",
|
"sodiumchloride", "sugar", "orangejuice",
|
||||||
"spaceacillin", "glucose", "ethanol",
|
"spaceacillin", "glucose", "ethanol",
|
||||||
"dyloteane", "impedrezene", "hepanephrodaxon",
|
"leporazine", "impedrezene", "hepanephrodaxon",
|
||||||
"gold", "silver"
|
"silver", "gold"
|
||||||
))
|
))
|
||||||
|
|
||||||
/datum/disease/advance
|
/datum/disease/advance
|
||||||
@@ -236,6 +236,13 @@ GLOBAL_LIST_INIT(advance_cures, list(
|
|||||||
Refresh(1)
|
Refresh(1)
|
||||||
return
|
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.
|
// Randomly remove a symptom.
|
||||||
/datum/disease/advance/proc/Devolve()
|
/datum/disease/advance/proc/Devolve()
|
||||||
if(length(symptoms) > 1)
|
if(length(symptoms) > 1)
|
||||||
|
|||||||
38
code/datums/diseases/advance/symptoms/deafness.dm
Normal file
38
code/datums/diseases/advance/symptoms/deafness.dm
Normal file
@@ -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
|
||||||
@@ -6,7 +6,7 @@ Necrotizing Fasciitis (AKA Flesh-Eating Disease)
|
|||||||
Very very noticable.
|
Very very noticable.
|
||||||
Lowers resistance tremendously.
|
Lowers resistance tremendously.
|
||||||
No changes to stage speed.
|
No changes to stage speed.
|
||||||
Decreases transmittablity temrendously.
|
Decreases transmittablity tremendously.
|
||||||
Fatal Level.
|
Fatal Level.
|
||||||
|
|
||||||
Bonus
|
Bonus
|
||||||
|
|||||||
33
code/datums/diseases/advance/symptoms/flip.dm
Normal file
33
code/datums/diseases/advance/symptoms/flip.dm
Normal file
@@ -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")
|
||||||
56
code/datums/diseases/advance/symptoms/hair.dm
Normal file
56
code/datums/diseases/advance/symptoms/hair.dm
Normal file
@@ -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
|
||||||
@@ -130,7 +130,7 @@ Bonus
|
|||||||
Very high level.
|
Very high level.
|
||||||
|
|
||||||
Bonus
|
Bonus
|
||||||
Heals brain damage, treats radiation.
|
Heals clone damage, treats radiation.
|
||||||
|
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
*/
|
*/
|
||||||
|
|||||||
42
code/datums/diseases/advance/symptoms/hematophagy.dm
Normal file
42
code/datums/diseases/advance/symptoms/hematophagy.dm
Normal file
@@ -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)
|
||||||
41
code/datums/diseases/advance/symptoms/photosensitivity.dm
Normal file
41
code/datums/diseases/advance/symptoms/photosensitivity.dm
Normal file
@@ -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
|
||||||
46
code/datums/diseases/advance/symptoms/pica.dm
Normal file
46
code/datums/diseases/advance/symptoms/pica.dm
Normal file
@@ -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
|
||||||
98
code/datums/diseases/advance/symptoms/size.dm
Normal file
98
code/datums/diseases/advance/symptoms/size.dm
Normal file
@@ -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))
|
||||||
@@ -42,3 +42,78 @@ Bonus
|
|||||||
icky.viruses |= A.Copy()
|
icky.viruses |= A.Copy()
|
||||||
|
|
||||||
return
|
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
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ BONUS
|
|||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/datum/symptom/mlem
|
/datum/symptom/spyndrome
|
||||||
name = "Spyndrome"
|
name = "Spyndrome"
|
||||||
stealth = 2
|
stealth = 2
|
||||||
resistance = 0
|
resistance = 0
|
||||||
@@ -24,9 +24,8 @@ BONUS
|
|||||||
transmittable = 1
|
transmittable = 1
|
||||||
level = 1
|
level = 1
|
||||||
severity = 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))
|
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!"))
|
to_chat(viewers(A.affected_mob), span_warning("[A.affected_mob.name] struggles violently against their restraints!"))
|
||||||
else
|
else
|
||||||
to_chat(viewers(A.affected_mob), span_warning("[A.affected_mob.name] spins around violently!"))
|
to_chat(viewers(A.affected_mob), span_warning("[A.affected_mob.name] spins around violently!"))
|
||||||
for(var/D in directions)
|
A.affected_mob.emote("spin")
|
||||||
A.affected_mob.dir = D
|
|
||||||
A.affected_mob.dir = pick(2,4,1,8)
|
|
||||||
return
|
return
|
||||||
|
|||||||
43
code/datums/diseases/advance/symptoms/stimulant.dm
Normal file
43
code/datums/diseases/advance/symptoms/stimulant.dm
Normal file
@@ -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
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
|
|
||||||
Sneezing
|
Synthetic Infection
|
||||||
|
|
||||||
Slightly hidden.
|
Slightly hidden.
|
||||||
Increases resistance.
|
Increases resistance.
|
||||||
@@ -23,7 +23,6 @@ Bonus
|
|||||||
transmittable = 1
|
transmittable = 1
|
||||||
level = 5
|
level = 5
|
||||||
severity = 3
|
severity = 3
|
||||||
id = "synthetic_infection"
|
|
||||||
|
|
||||||
/datum/symptom/infect_synthetics/Start(datum/disease/advance/A)
|
/datum/symptom/infect_synthetics/Start(datum/disease/advance/A)
|
||||||
A.infect_synthetics = TRUE
|
A.infect_synthetics = TRUE
|
||||||
|
|||||||
45
code/datums/diseases/appendicitis.dm
Normal file
45
code/datums/diseases/appendicitis.dm
Normal file
@@ -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)
|
||||||
32
code/datums/diseases/fake_gbs.dm
Normal file
32
code/datums/diseases/fake_gbs.dm
Normal file
@@ -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")
|
||||||
49
code/datums/diseases/gbs.dm
Normal file
49
code/datums/diseases/gbs.dm
Normal file
@@ -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
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
/obj/machinery/computer/pandemic
|
/obj/machinery/computer/pandemic
|
||||||
name = "PanD.E.M.I.C 2200"
|
name = "PanD.E.M.I.C 2200"
|
||||||
desc = "Used to work with viruses."
|
desc = "Used to work with viruses."
|
||||||
|
circuit = /obj/item/circuitboard/pandemic
|
||||||
density = TRUE
|
density = TRUE
|
||||||
anchored = TRUE
|
anchored = TRUE
|
||||||
icon = 'icons/obj/pandemic.dmi'
|
icon = 'icons/obj/pandemic.dmi'
|
||||||
@@ -325,7 +326,7 @@
|
|||||||
printing = 1
|
printing = 1
|
||||||
var/obj/item/paper/P = new /obj/item/paper(loc)
|
var/obj/item/paper/P = new /obj/item/paper(loc)
|
||||||
visible_message(span_notice("[src] rattles and prints out a sheet of paper."))
|
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 = "<U><font size=\"4\"><B><center> Releasing Virus </B></center></font></U>"
|
P.info = "<U><font size=\"4\"><B><center> Releasing Virus </B></center></font></U>"
|
||||||
P.info += "<HR>"
|
P.info += "<HR>"
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#ifndef T_BOARD
|
||||||
|
#error T_BOARD macro is not defined but we need it!
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/obj/item/circuitboard/pandemic
|
||||||
|
name = T_BOARD("pandemic")
|
||||||
|
build_path = /obj/machinery/computer/pandemic
|
||||||
|
board_type = new /datum/frame/frame_types/computer
|
||||||
|
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
|
||||||
|
req_components = list(
|
||||||
|
/obj/item/stock_parts/matter_bin = 2,
|
||||||
|
/obj/item/stock_parts/scanning_module = 1,
|
||||||
|
/obj/item/stock_parts/manipulator = 1,
|
||||||
|
/obj/item/stack/cable_coil = 5,
|
||||||
|
/obj/item/stock_parts/capacitor = 1
|
||||||
|
)
|
||||||
@@ -201,7 +201,8 @@ var/list/admin_verbs_spawn = list(
|
|||||||
/client/proc/create_gm_message,
|
/client/proc/create_gm_message,
|
||||||
/client/proc/remove_gm_message,
|
/client/proc/remove_gm_message,
|
||||||
/client/proc/AdminCreateVirus,
|
/client/proc/AdminCreateVirus,
|
||||||
/client/proc/ReleaseVirus
|
/client/proc/ReleaseVirus,
|
||||||
|
/client/proc/spawn_reagent
|
||||||
)
|
)
|
||||||
|
|
||||||
var/list/admin_verbs_server = list(
|
var/list/admin_verbs_server = list(
|
||||||
@@ -290,6 +291,7 @@ var/list/admin_verbs_debug = list(
|
|||||||
/client/proc/simple_DPS,
|
/client/proc/simple_DPS,
|
||||||
/datum/admins/proc/view_feedback,
|
/datum/admins/proc/view_feedback,
|
||||||
/client/proc/stop_sounds,
|
/client/proc/stop_sounds,
|
||||||
|
/client/proc/spawn_reagent,
|
||||||
/datum/admins/proc/quick_nif, //CHOMPStation Add,
|
/datum/admins/proc/quick_nif, //CHOMPStation Add,
|
||||||
/datum/admins/proc/quick_authentic_nif, //CHOMPStation add
|
/datum/admins/proc/quick_authentic_nif, //CHOMPStation add
|
||||||
/client/proc/reload_jobwhitelist, //ChompADD
|
/client/proc/reload_jobwhitelist, //ChompADD
|
||||||
|
|||||||
@@ -537,3 +537,18 @@
|
|||||||
set category = "Debug.Misc"
|
set category = "Debug.Misc"
|
||||||
|
|
||||||
src.stat_panel.send_message("create_debug")
|
src.stat_panel.send_message("create_debug")
|
||||||
|
|
||||||
|
/client/proc/spawn_reagent()
|
||||||
|
set name = "Spawn Reagent"
|
||||||
|
set category = "Debug.Game"
|
||||||
|
|
||||||
|
if(!check_rights(R_ADMIN|R_EVENT)) return
|
||||||
|
var/datum/reagent/R = tgui_input_list(usr, "Select a reagent to spawn", "Reagent Spawner", subtypesof(/datum/reagent))
|
||||||
|
if(!R)
|
||||||
|
return
|
||||||
|
|
||||||
|
var/obj/item/reagent_containers/glass/bottle/B = new(usr.loc)
|
||||||
|
|
||||||
|
B.icon_state = "bottle-1"
|
||||||
|
B.reagents.add_reagent(R.id, 60)
|
||||||
|
B.name = "[B.name] of [R.name]"
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ GLOBAL_LIST_EMPTY(current_pending_diseases)
|
|||||||
var/datum/disease/chosen_disease
|
var/datum/disease/chosen_disease
|
||||||
var/list/disease_blacklist = list(
|
var/list/disease_blacklist = list(
|
||||||
/datum/disease/advance,
|
/datum/disease/advance,
|
||||||
/datum/disease/food_poisoning
|
/datum/disease/food_poisoning,
|
||||||
|
/datum/disease/gbs // Terrible. It's only in the code to scare people.
|
||||||
)
|
)
|
||||||
var/static/list/transmissable_symptoms = list()
|
var/static/list/transmissable_symptoms = list()
|
||||||
var/static/list/diseases_minor = list()
|
var/static/list/diseases_minor = list()
|
||||||
|
|||||||
@@ -37,3 +37,9 @@
|
|||||||
// CHOMPStation Add End
|
// CHOMPStation Add End
|
||||||
|
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
|
/mob/living/proc/delayed_gib()
|
||||||
|
visible_message(span_danger(span_bold("[src]") + " starts convulsing violently!"), span_danger("You feel as if your body is tearing itself apart!"))
|
||||||
|
Weaken(30)
|
||||||
|
make_jittery(1000)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(gib)), rand(2 SECONDS, 10 SECONDS))
|
||||||
|
|||||||
@@ -9,12 +9,9 @@
|
|||||||
/mob/living/carbon/human/proc/appendicitis()
|
/mob/living/carbon/human/proc/appendicitis()
|
||||||
if(stat == DEAD)
|
if(stat == DEAD)
|
||||||
return 0
|
return 0
|
||||||
var/obj/item/organ/internal/appendix/A = internal_organs_by_name[O_APPENDIX]
|
ForceContractDisease(new /datum/disease/appendicitis)
|
||||||
if(istype(A) && !A.inflamed)
|
|
||||||
A.inflamed = 1
|
|
||||||
return 1
|
|
||||||
return 0
|
return 0
|
||||||
|
/*
|
||||||
/obj/item/organ/internal/appendix/process()
|
/obj/item/organ/internal/appendix/process()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
@@ -47,7 +44,7 @@
|
|||||||
owner.adjustToxLoss(25)
|
owner.adjustToxLoss(25)
|
||||||
groin.wounds += W
|
groin.wounds += W
|
||||||
inflamed = 1
|
inflamed = 1
|
||||||
|
*/
|
||||||
/obj/item/organ/internal/appendix/removed()
|
/obj/item/organ/internal/appendix/removed()
|
||||||
if(inflamed)
|
if(inflamed)
|
||||||
icon_state = "[initial(icon_state)]inflamed"
|
icon_state = "[initial(icon_state)]inflamed"
|
||||||
|
|||||||
@@ -40,6 +40,13 @@
|
|||||||
required_reagents = list("inaprovaline" = 1, "mutagenvirusfood" = 1)
|
required_reagents = list("inaprovaline" = 1, "mutagenvirusfood" = 1)
|
||||||
result_amount = 2
|
result_amount = 2
|
||||||
|
|
||||||
|
/decl/chemical_reaction/instant/virus_food_size
|
||||||
|
name = "sizeoxadone virus food"
|
||||||
|
id = "sizeoxadonevirusfood"
|
||||||
|
result = "sizevirusfood"
|
||||||
|
required_reagents = list("sizeoxadone" = 1, "phoronvirusfood" = 1)
|
||||||
|
result_amount = 2
|
||||||
|
|
||||||
/decl/chemical_reaction/instant/mix_virus
|
/decl/chemical_reaction/instant/mix_virus
|
||||||
name = "Mix Virus"
|
name = "Mix Virus"
|
||||||
id = "mixvirus"
|
id = "mixvirus"
|
||||||
@@ -48,6 +55,9 @@
|
|||||||
var/level_min = 0
|
var/level_min = 0
|
||||||
var/level_max = 2
|
var/level_max = 2
|
||||||
|
|
||||||
|
/decl/chemical_reaction/instant/mix_virus/picky
|
||||||
|
var/list/datum/symptom/symptoms
|
||||||
|
|
||||||
/decl/chemical_reaction/instant/mix_virus/on_reaction(datum/reagents/holder)
|
/decl/chemical_reaction/instant/mix_virus/on_reaction(datum/reagents/holder)
|
||||||
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
|
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
|
||||||
if(B && B.data)
|
if(B && B.data)
|
||||||
@@ -55,6 +65,13 @@
|
|||||||
if(D)
|
if(D)
|
||||||
D.Evolve(level_min, level_max)
|
D.Evolve(level_min, level_max)
|
||||||
|
|
||||||
|
/decl/chemical_reaction/instant/mix_virus/picky/on_reaction(datum/reagents/holder)
|
||||||
|
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
|
||||||
|
if(B && B.data)
|
||||||
|
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
|
||||||
|
if(D)
|
||||||
|
D.PickyEvolve(symptoms)
|
||||||
|
|
||||||
/decl/chemical_reaction/instant/mix_virus/mix_virus_2
|
/decl/chemical_reaction/instant/mix_virus/mix_virus_2
|
||||||
name = "Mix Virus 2"
|
name = "Mix Virus 2"
|
||||||
id = "mixvirus2"
|
id = "mixvirus2"
|
||||||
@@ -111,6 +128,17 @@
|
|||||||
level_min = 1
|
level_min = 1
|
||||||
level_max = 1
|
level_max = 1
|
||||||
|
|
||||||
|
/decl/chemical_reaction/instant/mix_virus/picky/size
|
||||||
|
name = "Mix Virus Size"
|
||||||
|
id = "mixvirussize"
|
||||||
|
required_reagents = list("sizevirusfood" = 1)
|
||||||
|
symptoms = list(
|
||||||
|
/datum/symptom/macrophage,
|
||||||
|
/datum/symptom/size,
|
||||||
|
/datum/symptom/size/grow,
|
||||||
|
/datum/symptom/size/shrink
|
||||||
|
)
|
||||||
|
|
||||||
/decl/chemical_reaction/instant/mix_virus/rem_virus
|
/decl/chemical_reaction/instant/mix_virus/rem_virus
|
||||||
name = "Devolve Virus"
|
name = "Devolve Virus"
|
||||||
id = "remvirus"
|
id = "remvirus"
|
||||||
|
|||||||
@@ -46,3 +46,9 @@
|
|||||||
id = "weakphoronvirusfood"
|
id = "weakphoronvirusfood"
|
||||||
description = "Mutates viruses when mixed in blood. This one seems to have been weakened, but still strong."
|
description = "Mutates viruses when mixed in blood. This one seems to have been weakened, but still strong."
|
||||||
color = "#CEC3C6"
|
color = "#CEC3C6"
|
||||||
|
|
||||||
|
/datum/reagent/toxin/phoron/phoronvirusfood/sizevirusfood
|
||||||
|
name = "Sizeoxadone virus food"
|
||||||
|
id = "sizevirusfood"
|
||||||
|
description = "Mutates virus when mixed in blood. This is a strange size mix..."
|
||||||
|
color = "#88AFDD"
|
||||||
|
|||||||
@@ -127,6 +127,13 @@ CIRCUITS BELOW
|
|||||||
build_path = /obj/item/circuitboard/crew
|
build_path = /obj/item/circuitboard/crew
|
||||||
sort_string = "FAGAI"
|
sort_string = "FAGAI"
|
||||||
|
|
||||||
|
/datum/design/circuit/pandemic
|
||||||
|
name = "PanD.E.M.I.C 2200"
|
||||||
|
id = "pandemic"
|
||||||
|
req_tech = list(TECH_DATA = 2, TECH_BIO = 2)
|
||||||
|
build_path = /obj/item/circuitboard/pandemic
|
||||||
|
sort_string = "FAGAJ"
|
||||||
|
|
||||||
/datum/design/circuit/teleconsole
|
/datum/design/circuit/teleconsole
|
||||||
name = "teleporter control console"
|
name = "teleporter control console"
|
||||||
id = "teleconsole"
|
id = "teleconsole"
|
||||||
|
|||||||
@@ -185,7 +185,10 @@ const StrainInformationSection = ({
|
|||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
{selectedStrain && selectedStrain.symptoms.length > 0 && (
|
{selectedStrain && selectedStrain.symptoms.length > 0 && (
|
||||||
<StrainSymptomsSection strain={selectedStrain} />
|
<>
|
||||||
|
<StrainSymptomsSection strain={selectedStrain} />
|
||||||
|
<TotalStats strain={selectedStrain} />
|
||||||
|
</>
|
||||||
)}
|
)}
|
||||||
</Flex.Item>
|
</Flex.Item>
|
||||||
);
|
);
|
||||||
@@ -220,6 +223,39 @@ const StrainSymptomsSection = ({ strain }: { strain: Strain }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const TotalStats = ({ strain }: { strain: Strain }) => {
|
||||||
|
const symptoms = strain.symptoms;
|
||||||
|
|
||||||
|
const TotalStats = symptoms.reduce(
|
||||||
|
(totals, symptom) => ({
|
||||||
|
stealth: totals.stealth + symptom.stealth,
|
||||||
|
resistance: totals.resistance + symptom.resistance,
|
||||||
|
stageSpeed: totals.stageSpeed + symptom.stageSpeed,
|
||||||
|
transmissibility: totals.transmissibility + symptom.transmissibility,
|
||||||
|
}),
|
||||||
|
{ stealth: 0, resistance: 0, stageSpeed: 0, transmissibility: 0 },
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Section title="Total Stats">
|
||||||
|
<Table>
|
||||||
|
<Table.Row header>
|
||||||
|
<Table.Cell>Stealth</Table.Cell>
|
||||||
|
<Table.Cell>Resistance</Table.Cell>
|
||||||
|
<Table.Cell>Stage Speed</Table.Cell>
|
||||||
|
<Table.Cell>Transmissibility</Table.Cell>
|
||||||
|
</Table.Row>
|
||||||
|
<Table.Row>
|
||||||
|
<Table.Cell>{TotalStats.stealth}</Table.Cell>
|
||||||
|
<Table.Cell>{TotalStats.resistance}</Table.Cell>
|
||||||
|
<Table.Cell>{TotalStats.stageSpeed}</Table.Cell>
|
||||||
|
<Table.Cell>{TotalStats.transmissibility}</Table.Cell>
|
||||||
|
</Table.Row>
|
||||||
|
</Table>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const StrainInformation = ({
|
const StrainInformation = ({
|
||||||
strain,
|
strain,
|
||||||
strainIndex,
|
strainIndex,
|
||||||
|
|||||||
@@ -507,13 +507,16 @@
|
|||||||
#include "code\datums\diseases\_disease.dm"
|
#include "code\datums\diseases\_disease.dm"
|
||||||
#include "code\datums\diseases\_MobProcs.dm"
|
#include "code\datums\diseases\_MobProcs.dm"
|
||||||
#include "code\datums\diseases\anxiety.dm"
|
#include "code\datums\diseases\anxiety.dm"
|
||||||
|
#include "code\datums\diseases\appendicitis.dm"
|
||||||
#include "code\datums\diseases\beesease.dm"
|
#include "code\datums\diseases\beesease.dm"
|
||||||
#include "code\datums\diseases\brainrot.dm"
|
#include "code\datums\diseases\brainrot.dm"
|
||||||
#include "code\datums\diseases\choreomania.dm"
|
#include "code\datums\diseases\choreomania.dm"
|
||||||
#include "code\datums\diseases\cold.dm"
|
#include "code\datums\diseases\cold.dm"
|
||||||
#include "code\datums\diseases\cold9.dm"
|
#include "code\datums\diseases\cold9.dm"
|
||||||
|
#include "code\datums\diseases\fake_gbs.dm"
|
||||||
#include "code\datums\diseases\flu.dm"
|
#include "code\datums\diseases\flu.dm"
|
||||||
#include "code\datums\diseases\food_poisoning.dm"
|
#include "code\datums\diseases\food_poisoning.dm"
|
||||||
|
#include "code\datums\diseases\gbs.dm"
|
||||||
#include "code\datums\diseases\lycancoughy.dm"
|
#include "code\datums\diseases\lycancoughy.dm"
|
||||||
#include "code\datums\diseases\magnitis.dm"
|
#include "code\datums\diseases\magnitis.dm"
|
||||||
#include "code\datums\diseases\advance\advance.dm"
|
#include "code\datums\diseases\advance\advance.dm"
|
||||||
@@ -522,23 +525,30 @@
|
|||||||
#include "code\datums\diseases\advance\symptoms\confusion.dm"
|
#include "code\datums\diseases\advance\symptoms\confusion.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\cough.dm"
|
#include "code\datums\diseases\advance\symptoms\cough.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\damage_converter.dm"
|
#include "code\datums\diseases\advance\symptoms\damage_converter.dm"
|
||||||
|
#include "code\datums\diseases\advance\symptoms\deafness.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\dizzy.dm"
|
#include "code\datums\diseases\advance\symptoms\dizzy.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\fever.dm"
|
#include "code\datums\diseases\advance\symptoms\fever.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\fire.dm"
|
#include "code\datums\diseases\advance\symptoms\fire.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\flesh_eating.dm"
|
#include "code\datums\diseases\advance\symptoms\flesh_eating.dm"
|
||||||
|
#include "code\datums\diseases\advance\symptoms\flip.dm"
|
||||||
|
#include "code\datums\diseases\advance\symptoms\hair.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\hallucigen.dm"
|
#include "code\datums\diseases\advance\symptoms\hallucigen.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\headache.dm"
|
#include "code\datums\diseases\advance\symptoms\headache.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\heal.dm"
|
#include "code\datums\diseases\advance\symptoms\heal.dm"
|
||||||
|
#include "code\datums\diseases\advance\symptoms\hematophagy.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\itching.dm"
|
#include "code\datums\diseases\advance\symptoms\itching.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\language.dm"
|
#include "code\datums\diseases\advance\symptoms\language.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\macrophage.dm"
|
#include "code\datums\diseases\advance\symptoms\macrophage.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\mlem.dm"
|
#include "code\datums\diseases\advance\symptoms\mlem.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\necrotic_agent.dm"
|
#include "code\datums\diseases\advance\symptoms\necrotic_agent.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\oxygen.dm"
|
#include "code\datums\diseases\advance\symptoms\photosensitivity.dm"
|
||||||
|
#include "code\datums\diseases\advance\symptoms\pica.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\sensory.dm"
|
#include "code\datums\diseases\advance\symptoms\sensory.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\shivering.dm"
|
#include "code\datums\diseases\advance\symptoms\shivering.dm"
|
||||||
|
#include "code\datums\diseases\advance\symptoms\size.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\sneeze.dm"
|
#include "code\datums\diseases\advance\symptoms\sneeze.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\spin.dm"
|
#include "code\datums\diseases\advance\symptoms\spin.dm"
|
||||||
|
#include "code\datums\diseases\advance\symptoms\stimulant.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\symptoms.dm"
|
#include "code\datums\diseases\advance\symptoms\symptoms.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\synthetic_infection.dm"
|
#include "code\datums\diseases\advance\symptoms\synthetic_infection.dm"
|
||||||
#include "code\datums\diseases\advance\symptoms\telepathy.dm"
|
#include "code\datums\diseases\advance\symptoms\telepathy.dm"
|
||||||
@@ -1575,6 +1585,7 @@
|
|||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\mech_recharger.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\mech_recharger.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\pandemic.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\papershredder.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\papershredder.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\power.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\power.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\recharge_station.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\recharge_station.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user