Refactors virus spreading

This commit is contained in:
XDTM
2017-10-09 08:55:57 -05:00
committed by CitadelStationBot
parent 6f2b89ae88
commit 7a0ce217db
60 changed files with 1057 additions and 187 deletions
+30 -22
View File
@@ -183,19 +183,19 @@
properties["stealth"] += S.stealth
properties["stage_rate"] += S.stage_speed
properties["transmittable"] += S.transmittable
properties["severity"] = max(properties["severity"], S.severity) // severity is based on the highest severity symptom
if(!S.neutered)
properties["severity"] = max(properties["severity"], S.severity) // severity is based on the highest severity non-neutered symptom
return
// Assign the properties that are in the list.
/datum/disease/advance/proc/AssignProperties()
if(properties && properties.len)
switch(properties["stealth"])
if(2 to INFINITY)
visibility_flags = HIDDEN_SCANNER
if(properties["stealth"] >= 2)
visibility_flags = HIDDEN_SCANNER
SetSpread(Clamp(2 ** (properties["transmittable"] - symptoms.len), VIRUS_SPREAD_BLOOD, VIRUS_SPREAD_AIRBORNE))
// The more symptoms we have, the less transmittable it is but some symptoms can make up for it.
SetSpread(Clamp(2 ** (properties["transmittable"] - symptoms.len), BLOOD, AIRBORNE))
permeability_mod = max(Ceiling(0.4 * properties["transmittable"]), 1)
cure_chance = 15 - Clamp(properties["resistance"], -5, 5) // can be between 10 and 20
stage_prob = max(properties["stage_rate"], 2)
@@ -208,35 +208,43 @@
// Assign the spread type and give it the correct description.
/datum/disease/advance/proc/SetSpread(spread_id)
switch(spread_id)
if(NON_CONTAGIOUS)
if(VIRUS_SPREAD_NON_CONTAGIOUS)
spread_flags = VIRUS_SPREAD_NON_CONTAGIOUS
spread_text = "None"
if(SPECIAL)
if(VIRUS_SPREAD_SPECIAL)
spread_flags = VIRUS_SPREAD_SPECIAL
spread_text = "None"
if(CONTACT_GENERAL, CONTACT_HANDS, CONTACT_FEET)
spread_text = "On contact"
if(AIRBORNE)
spread_text = "Airborne"
if(BLOOD)
if(VIRUS_SPREAD_BLOOD)
spread_flags = VIRUS_SPREAD_BLOOD
spread_text = "Blood"
spread_flags = spread_id
if(VIRUS_SPREAD_CONTACT_FLUIDS)
spread_flags = VIRUS_SPREAD_BLOOD | VIRUS_SPREAD_CONTACT_FLUIDS
spread_text = "Fluids"
if(VIRUS_SPREAD_CONTACT_SKIN)
spread_flags = VIRUS_SPREAD_BLOOD | VIRUS_SPREAD_CONTACT_FLUIDS | VIRUS_SPREAD_CONTACT_SKIN
spread_text = "On contact"
if(VIRUS_SPREAD_AIRBORNE)
spread_flags = VIRUS_SPREAD_BLOOD | VIRUS_SPREAD_CONTACT_FLUIDS | VIRUS_SPREAD_CONTACT_SKIN | VIRUS_SPREAD_AIRBORNE
spread_text = "Airborne"
/datum/disease/advance/proc/SetSeverity(level_sev)
switch(level_sev)
if(-INFINITY to 0)
severity = NONTHREAT
severity = VIRUS_SEVERITY_POSITIVE
if(1)
severity = MINOR
severity = VIRUS_SEVERITY_NONTHREAT
if(2)
severity = MEDIUM
severity = VIRUS_SEVERITY_MINOR
if(3)
severity = HARMFUL
severity = VIRUS_SEVERITY_MEDIUM
if(4)
severity = DANGEROUS
if(5 to INFINITY)
severity = BIOHAZARD
severity = VIRUS_SEVERITY_HARMFUL
if(5)
severity = VIRUS_SEVERITY_DANGEROUS
if(6 to INFINITY)
severity = VIRUS_SEVERITY_BIOHAZARD
else
severity = "Unknown"
@@ -94,7 +94,7 @@ Bonus
stage_speed = -1
transmittable = -2
level = 7
severity = 3
severity = 6
base_message_chance = 15
symptom_delay_min = 14
symptom_delay_max = 30
@@ -40,7 +40,7 @@ BONUS
return
if(A.properties["stealth"] >= 4)
suppress_warning = TRUE
if(A.spread_flags &= AIRBORNE) //infect bystanders
if(A.spread_flags &= VIRUS_SPREAD_AIRBORNE) //infect bystanders
infective = TRUE
if(A.properties["resistance"] >= 3) //strong enough to drop items
power = 1.5
@@ -24,7 +24,7 @@ Bonus
stage_speed = -1
transmittable = -3
level = 4
severity = 3
severity = 4
base_message_chance = 100
symptom_delay_min = 25
symptom_delay_max = 80
@@ -23,7 +23,7 @@ Bonus
stage_speed = 0
transmittable = -3
level = 6
severity = 3
severity = 4
var/list/possible_mutations
var/archived_dna = null
base_message_chance = 50
@@ -23,7 +23,7 @@ Bonus
stage_speed = -3
transmittable = -1
level = 5
severity = 3
severity = 2
base_message_chance = 25
symptom_delay_min = 25
symptom_delay_max = 90
@@ -22,7 +22,7 @@ Bonus
level = 6
symptom_delay_min = 15
symptom_delay_max = 80
severity = 5
severity = 4
var/sleep_level = 0
var/sleepy_ticks = 0
var/stamina = FALSE
@@ -23,7 +23,6 @@ Bonus
stage_speed = -4
transmittable = -3
level = 5
severity = 0
symptom_delay_min = 5
symptom_delay_max = 10
var/purge_alcohol = FALSE
@@ -24,7 +24,7 @@ Bonus
stage_speed = -4
transmittable = -3
level = 5
severity = 4
severity = 5
base_message_chance = 50
symptom_delay_min = 25
symptom_delay_max = 80
@@ -28,7 +28,7 @@ Bonus
stage_speed = 0
transmittable = 1
level = 3
severity = 4
severity = 3
base_message_chance = 100
symptom_delay_min = 25
symptom_delay_max = 80
@@ -24,7 +24,7 @@ Bonus
stage_speed = -2
transmittable = -2
level = 4
severity = 1
severity = 3
base_message_chance = 100
symptom_delay_min = 15
symptom_delay_max = 45
@@ -75,7 +75,7 @@ Bonus
stage_speed = -2
transmittable = -2
level = 3
severity = 1
severity = 3
base_message_chance = 100
symptom_delay_min = 15
symptom_delay_max = 45