mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-09 23:21:02 +01:00
Reverse Engineering Virology from Beeviro
Attempted to fix virology as the current addition/changes were incomplete with the individual working on it just disappearing and just leaving it in it's current state, this change will revert back virology to the old system with the old symptoms and stats as it was before. (hopefully)
This commit is contained in:
@@ -121,7 +121,6 @@
|
||||
#define TRAIT_LAW_ENFORCEMENT_METABOLISM "law-enforcement-metabolism"
|
||||
#define TRAIT_STRONG_GRABBER "strong_grabber"
|
||||
#define TRAIT_CALCIUM_HEALER "calcium_healer"
|
||||
#define TRAIT_BEEFRIEND "beefriend"
|
||||
|
||||
//non-mob traits
|
||||
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
|
||||
@@ -168,7 +167,6 @@
|
||||
// common trait sources
|
||||
#define TRAIT_GENERIC "generic"
|
||||
#define EYE_DAMAGE "eye_damage"
|
||||
#define DISEASE_TRAIT "disease"
|
||||
#define GENETIC_MUTATION "genetic"
|
||||
#define OBESITY "obesity"
|
||||
#define MAGIC_TRAIT "magic"
|
||||
|
||||
@@ -354,12 +354,10 @@
|
||||
else
|
||||
RemoveSymptom(pick(symptoms))
|
||||
symptoms += S
|
||||
S.OnAdd(src)
|
||||
|
||||
// Simply removes the symptom.
|
||||
/datum/disease/advance/proc/RemoveSymptom(datum/symptom/S)
|
||||
symptoms -= S
|
||||
S.OnRemove(src)
|
||||
|
||||
// Neuter a symptom, so it will only affect stats
|
||||
/datum/disease/advance/proc/NeuterSymptom(datum/symptom/S)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
name = "Experimental Disease"
|
||||
copy_type = /datum/disease/advance
|
||||
|
||||
/datum/disease/advance/random/New(max_symptoms, max_level = 9)
|
||||
/datum/disease/advance/random/New(max_symptoms, max_level = 8)
|
||||
if(!max_symptoms)
|
||||
max_symptoms = rand(1, VIRUS_SYMPTOM_LIMIT)
|
||||
var/list/datum/symptom/possible_symptoms = list()
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
/datum/symptom/beesease
|
||||
name = "Bee Infestation"
|
||||
desc = "Causes the host to cough toxin bees and occasionally synthesize toxin."
|
||||
stealth = -2
|
||||
resistance = 14
|
||||
stage_speed = 1
|
||||
transmittable = 1
|
||||
level = 9
|
||||
severity = 5
|
||||
symptom_delay_min = 5
|
||||
symptom_delay_max = 20
|
||||
var/honey = FALSE
|
||||
var/toxic_bees= FALSE
|
||||
threshold_desc = "<b>Resistance 14:</b> The bees become symbiotic with the host, synthesizing honey and no longer stinging the stomach lining, and no longer attacking the host.<br>\
|
||||
<b>Transmission 10:</b> Bees now contain a completely random toxin, unless resistance exceeds 14"
|
||||
|
||||
/datum/symptom/beesease/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["resistance"] >= 14)
|
||||
honey = TRUE
|
||||
severity = 0
|
||||
if(A.properties["transmittable"] >= 10)
|
||||
toxic_bees = TRUE
|
||||
|
||||
/datum/symptom/beesease/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(2)
|
||||
if(prob(2))
|
||||
to_chat(M, "<span class='notice'>You taste honey in your mouth.</span>")
|
||||
if(3)
|
||||
if(prob(15))
|
||||
to_chat(M, "<span class='notice'>Your stomach tingles.</span>")
|
||||
if(prob(15))
|
||||
if(honey)
|
||||
to_chat(M, "<span class='notice'>You can't get the taste of honey out of your mouth!.</span>")
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/honey, 2)
|
||||
else
|
||||
to_chat(M, "<span class='danger'>Your stomach stings painfully.</span>")
|
||||
M.adjustToxLoss(5)
|
||||
M.updatehealth()
|
||||
if(4, 5)
|
||||
if(honey)
|
||||
ADD_TRAIT(M, TRAIT_BEEFRIEND, DISEASE_TRAIT)
|
||||
if(prob(15))
|
||||
to_chat(M, "<span class='notice'>Your stomach squirms.</span>")
|
||||
if(prob(25))
|
||||
if(honey)
|
||||
to_chat(M, "<span class='notice'>You can't get the taste of honey out of your mouth!.</span>")
|
||||
M.reagents.add_reagent_list(list(/datum/reagent/consumable/honey = 10, /datum/reagent/consumable/honey/special = 5, /datum/reagent/medicine/insulin = 5)) //insulin prevents hyperglycemic shock
|
||||
else
|
||||
to_chat(M, "<span class='danger'>Your stomach stings painfully.</span>")
|
||||
M.adjustToxLoss(5)
|
||||
M.updatehealth()
|
||||
if(prob(10))
|
||||
M.visible_message("<span class='danger'>[M] buzzes.</span>", \
|
||||
"<span class='userdanger'>Your stomach buzzes violently!</span>")
|
||||
if(prob(15))
|
||||
to_chat(M, "<span class='danger'>You feel something moving in your throat.</span>")
|
||||
if(prob(10))
|
||||
M.visible_message("<span class='danger'>[M] coughs up a bee!</span>", \
|
||||
"<span class='userdanger'>You cough up a bee!</span>")
|
||||
if(toxic_bees)
|
||||
new /mob/living/simple_animal/hostile/poison/bees/toxin(M.loc)
|
||||
else
|
||||
new /mob/living/simple_animal/hostile/poison/bees(M.loc)
|
||||
|
||||
/datum/symptom/beesease/End(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
REMOVE_TRAIT(A.affected_mob, TRAIT_BEEFRIEND, DISEASE_TRAIT)
|
||||
@@ -1,52 +0,0 @@
|
||||
/datum/symptom/braindamage
|
||||
name = "Neural Decay"
|
||||
desc = "Causes the host's brain cells to naturally die off, causing severe brain damage."
|
||||
stealth = 1
|
||||
resistance = -2
|
||||
stage_speed = -3
|
||||
transmittable = -1
|
||||
level = 8
|
||||
severity = 5
|
||||
symptom_delay_min = 15
|
||||
symptom_delay_max = 60
|
||||
var/lethal = FALSE
|
||||
var/moretrauma = FALSE
|
||||
threshold_desc = "<b>transmission 12:</b> The disease's damage reaches lethal levels.<br>\
|
||||
<b>Speed 9:</b> Host's brain develops even more traumas than normal."
|
||||
|
||||
/datum/symptom/braindamage/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["transmission"] >= 12)
|
||||
lethal = TRUE
|
||||
if(A.properties["speed"] >= 9)
|
||||
moretrauma = TRUE
|
||||
|
||||
/datum/symptom/braindamage/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='notice'>Your head feels strange...</span>")
|
||||
if(2, 3)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>Your brain begins hurting...</span>")
|
||||
if(4, 5)
|
||||
if(lethal)
|
||||
if(prob(35))
|
||||
A.affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(5,90), 200)
|
||||
to_chat(M, "<span class='danger'>Your brain hurts immensely!</span>")
|
||||
else
|
||||
if(prob(35))
|
||||
A.affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(5,90), 120)
|
||||
to_chat(M, "<span class='danger'>Your head hurts immensely!</span>")
|
||||
if(moretrauma && A.stage == 5)
|
||||
givetrauma(A, 10)
|
||||
|
||||
/datum/symptom/braindamage/proc/givetrauma(datum/disease/advance/A, chance)
|
||||
if(prob(chance))
|
||||
if(ishuman(A.affected_mob))
|
||||
var/mob/living/carbon/human/M = A.affected_mob
|
||||
M?.gain_trauma(BRAIN_TRAUMA_MILD)
|
||||
@@ -1,6 +1,73 @@
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Choking
|
||||
Very very noticable.
|
||||
Lowers resistance.
|
||||
Decreases stage speed.
|
||||
Decreases transmittablity tremendously.
|
||||
Moderate Level.
|
||||
Bonus
|
||||
Inflicts spikes of oxyloss
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/choking
|
||||
|
||||
name = "Choking"
|
||||
desc = "The virus causes inflammation of the host's air conduits, leading to intermittent choking."
|
||||
stealth = -3
|
||||
resistance = -2
|
||||
stage_speed = -2
|
||||
transmittable = -4
|
||||
level = 3
|
||||
severity = 3
|
||||
base_message_chance = 15
|
||||
symptom_delay_min = 10
|
||||
symptom_delay_max = 30
|
||||
threshold_desc = "<b>Stage Speed 8:</b> Causes choking more frequently.<br>\
|
||||
<b>Stealth 4:</b> The symptom remains hidden until active."
|
||||
|
||||
/datum/symptom/choking/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stage_rate"] >= 8)
|
||||
symptom_delay_min = 7
|
||||
symptom_delay_max = 24
|
||||
if(A.properties["stealth"] >= 4)
|
||||
suppress_warning = TRUE
|
||||
|
||||
/datum/symptom/choking/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1, 2)
|
||||
if(prob(base_message_chance) && !suppress_warning)
|
||||
to_chat(M, "<span class='warning'>[pick("You're having difficulty breathing.", "Your breathing becomes heavy.")]</span>")
|
||||
if(3, 4)
|
||||
if(!suppress_warning)
|
||||
to_chat(M, "<span class='warning'>[pick("Your windpipe feels like a straw.", "Your breathing becomes tremendously difficult.")]</span>")
|
||||
else
|
||||
to_chat(M, "<span class='warning'>You feel very [pick("dizzy","woozy","faint")].</span>") //fake bloodloss messages
|
||||
Choke_stage_3_4(M, A)
|
||||
M.emote("gasp")
|
||||
else
|
||||
to_chat(M, "<span class='userdanger'>[pick("You're choking!", "You can't breathe!")]</span>")
|
||||
Choke(M, A)
|
||||
M.emote("gasp")
|
||||
|
||||
/datum/symptom/choking/proc/Choke_stage_3_4(mob/living/M, datum/disease/advance/A)
|
||||
M.adjustOxyLoss(rand(6,13))
|
||||
return 1
|
||||
|
||||
/datum/symptom/choking/proc/Choke(mob/living/M, datum/disease/advance/A)
|
||||
M.adjustOxyLoss(rand(10,18))
|
||||
return 1
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Asphyxiation
|
||||
|
||||
Very very noticable.
|
||||
@@ -23,7 +90,7 @@ Bonus
|
||||
resistance = -0
|
||||
stage_speed = -1
|
||||
transmittable = -2
|
||||
level = 9
|
||||
level = 7
|
||||
severity = 6
|
||||
base_message_chance = 15
|
||||
symptom_delay_min = 14
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
/datum/symptom/cockroach
|
||||
|
||||
name = "SBG Syndrome"
|
||||
desc = "ERROR: BLUESPACE INTERFERENCE RENDERS COMPLETE ANALYSIS IMPOSSIBLE"
|
||||
stealth = 0
|
||||
resistance = 3
|
||||
stage_speed = 3
|
||||
transmittable = 1
|
||||
level = 0
|
||||
severity = 6 //the joke here is that this relatively mundane and harmless symptom, which only spawns cockroaches, seems incredibly frightening
|
||||
symptom_delay_min = 10
|
||||
symptom_delay_max = 30
|
||||
var/death_roaches = FALSE
|
||||
threshold_desc = "<b>Stage Speed 8:</b> CALCULATIONS FORECAST HEIGHTENED ACTIVITY<br>\
|
||||
<b>Transmission 8:</b> CALCULATIONS FORECAST BRIEFLY ESCALATED ACTIVITY IMMEDIATELY FOLLOWING CESSATION OF HOST LIFESIGNS<br>"
|
||||
|
||||
/datum/symptom/cockroach/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stage_speed"] >= 8)
|
||||
symptom_delay_min = 5
|
||||
symptom_delay_max = 15
|
||||
if(A.properties["transmittable"] >= 8)
|
||||
death_roaches = TRUE
|
||||
|
||||
/datum/symptom/cockroach/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(2)
|
||||
if(prob(50))
|
||||
to_chat(M, "<span class='notice'>You feel a tingle under your skin</span>")
|
||||
if(3)
|
||||
if(prob(50))
|
||||
to_chat(M, "<span class='notice'>Your pores feel drafty.</span>")
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>You feel attuned to the atmosphere</span>")
|
||||
if(4)
|
||||
if(prob(50))
|
||||
to_chat(M, "<span class='notice'>You feel in tune with the station</span>")
|
||||
if(5)
|
||||
if(prob(30))
|
||||
M.visible_message("<span class='danger'>[M] squirms as a cockroach crawls from their pores!</span>", \
|
||||
"<span class='userdanger'>A cockroach crawls out of your face!!</span>")
|
||||
new /mob/living/simple_animal/cockroach(M.loc)
|
||||
if(prob(50))
|
||||
to_chat(M, "<span class='notice'>You feel something crawling in your pipes!</span>")
|
||||
|
||||
/datum/symptom/cockroach/OnDeath(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(death_roaches)
|
||||
var/mob/living/M = A.affected_mob
|
||||
to_chat(M, "<span class='warning'>Your pores explode into a colony of roaches!</span>")
|
||||
for(var/i in 1 to rand(1,5))
|
||||
new /mob/living/simple_animal/cockroach(M.loc)
|
||||
|
||||
@@ -20,9 +20,9 @@ Bonus
|
||||
name = "Spontaneous Combustion"
|
||||
desc = "The virus turns fat into an extremely flammable compound, and raises the body's temperature, making the host burst into flames spontaneously."
|
||||
stealth = 1
|
||||
resistance = -2
|
||||
stage_speed = -3
|
||||
transmittable = -3
|
||||
resistance = -4
|
||||
stage_speed = -4
|
||||
transmittable = -4
|
||||
level = 6
|
||||
severity = 5
|
||||
base_message_chance = 20
|
||||
@@ -67,22 +67,18 @@ Bonus
|
||||
|
||||
/datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A)
|
||||
M.adjust_fire_stacks(1 * power)
|
||||
M.take_overall_damage(burn = 3 * power, required_status = BODYPART_ORGANIC)
|
||||
M.adjustFireLoss(3 * power)
|
||||
if(infective)
|
||||
A.spread(2)
|
||||
return 1
|
||||
|
||||
/datum/symptom/fire/proc/Firestacks_stage_5(mob/living/M, datum/disease/advance/A)
|
||||
if(HAS_TRAIT(M, TRAIT_FAT))
|
||||
M.adjust_fire_stacks(6 * power)
|
||||
else
|
||||
M.adjust_fire_stacks(3 * power)
|
||||
M.take_overall_damage(burn = 5 * power, required_status = BODYPART_ORGANIC)
|
||||
M.adjust_fire_stacks(3 * power)
|
||||
M.adjustFireLoss(5 * power)
|
||||
if(infective)
|
||||
A.spread(4)
|
||||
return 1
|
||||
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
@@ -109,7 +105,7 @@ Bonus
|
||||
resistance = -2
|
||||
stage_speed = -2
|
||||
transmittable = -2
|
||||
level = 9
|
||||
level = 7
|
||||
severity = 6
|
||||
base_message_chance = 100
|
||||
symptom_delay_min = 30
|
||||
@@ -141,9 +137,6 @@ Bonus
|
||||
if(prob(base_message_chance))
|
||||
to_chat(M, "<span class='warning'>[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]</span>")
|
||||
if(4)
|
||||
if(M.fire_stacks < 0)
|
||||
M.visible_message("<span class='warning'>[M]'s sweat sizzles and pops on contact with water!</span>")
|
||||
explosion(get_turf(M),-1,(-1 + explosion_power),(2 * explosion_power))
|
||||
Alkali_fire_stage_4(M, A)
|
||||
M.IgniteMob()
|
||||
to_chat(M, "<span class='userdanger'>Your sweat bursts into flames!</span>")
|
||||
@@ -151,7 +144,7 @@ Bonus
|
||||
if(5)
|
||||
if(M.fire_stacks < 0)
|
||||
M.visible_message("<span class='warning'>[M]'s sweat sizzles and pops on contact with water!</span>")
|
||||
explosion(get_turf(M),-1,(-1 + explosion_power),(2 * explosion_power))
|
||||
explosion(get_turf(M),0,0,2 * explosion_power)
|
||||
Alkali_fire_stage_5(M, A)
|
||||
M.IgniteMob()
|
||||
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
|
||||
@@ -160,15 +153,15 @@ Bonus
|
||||
/datum/symptom/alkali/proc/Alkali_fire_stage_4(mob/living/M, datum/disease/advance/A)
|
||||
var/get_stacks = 6 * power
|
||||
M.adjust_fire_stacks(get_stacks)
|
||||
M.take_overall_damage(burn = get_stacks / 2, required_status = BODYPART_ORGANIC)
|
||||
M.adjustFireLoss(get_stacks/2)
|
||||
if(chems)
|
||||
M.reagents.add_reagent(/datum/reagent/clf3, 2 * power)
|
||||
M.reagents.add_reagent("clf3", 2 * power)
|
||||
return 1
|
||||
|
||||
/datum/symptom/alkali/proc/Alkali_fire_stage_5(mob/living/M, datum/disease/advance/A)
|
||||
var/get_stacks = 8 * power
|
||||
M.adjust_fire_stacks(get_stacks)
|
||||
M.take_overall_damage(burn = get_stacks, required_status = BODYPART_ORGANIC)
|
||||
M.adjustFireLoss(get_stacks)
|
||||
if(chems)
|
||||
M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power))
|
||||
M.reagents.add_reagent_list(list("napalm" = 4 * power, "clf3" = 4 * power))
|
||||
return 1
|
||||
|
||||
@@ -55,9 +55,9 @@ Bonus
|
||||
|
||||
/datum/symptom/flesh_eating/proc/Flesheat(mob/living/M, datum/disease/advance/A)
|
||||
var/get_damage = rand(15,25) * power
|
||||
M.take_overall_damage(brute = get_damage, required_status = BODYPART_ORGANIC)
|
||||
M.adjustBruteLoss(get_damage)
|
||||
if(pain)
|
||||
M.adjustStaminaLoss(get_damage * 2)
|
||||
M.adjustStaminaLoss(get_damage)
|
||||
if(bleed)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -84,12 +84,12 @@ Bonus
|
||||
/datum/symptom/flesh_death
|
||||
|
||||
name = "Autophagocytosis Necrosis"
|
||||
desc = "The virus rapidly consumes infected cells, leading to heavy and widespread damage. Contains dormant prions- expert virologists believe it to be the precursor to Romerol, though the mechanism through which they are activated is largely unknown"
|
||||
desc = "The virus rapidly consumes infected cells, leading to heavy and widespread damage."
|
||||
stealth = -2
|
||||
resistance = -2
|
||||
stage_speed = 1
|
||||
transmittable = -2
|
||||
level = 9
|
||||
level = 7
|
||||
severity = 6
|
||||
base_message_chance = 50
|
||||
symptom_delay_min = 3
|
||||
@@ -106,8 +106,6 @@ Bonus
|
||||
suppress_warning = TRUE
|
||||
if(A.properties["stage_rate"] >= 7) //bleeding and hunger
|
||||
chems = TRUE
|
||||
if((A.properties["stealth"] >= 2) && (A.properties["stage_rate"] >= 12))
|
||||
zombie = TRUE
|
||||
|
||||
/datum/symptom/flesh_death/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
@@ -124,12 +122,9 @@ Bonus
|
||||
|
||||
/datum/symptom/flesh_death/proc/Flesh_death(mob/living/M, datum/disease/advance/A)
|
||||
var/get_damage = rand(6,10)
|
||||
M.take_overall_damage(brute = get_damage, required_status = BODYPART_ORGANIC)
|
||||
M.adjustBruteLoss(get_damage)
|
||||
if(chems)
|
||||
M.reagents.add_reagent_list(list(/datum/reagent/toxin/heparin = 2, /datum/reagent/toxin/lipolicide = 2))
|
||||
M.reagents.add_reagent_list(list("heparin" = 2, "lipolicide" = 2))
|
||||
if(zombie)
|
||||
if(ishuman(A.affected_mob))
|
||||
if(!A.affected_mob.getorganslot(ORGAN_SLOT_ZOMBIE))
|
||||
var/obj/item/organ/zombie_infection/ZI = new()
|
||||
ZI.Insert(M)
|
||||
M.reagents.add_reagent("romerol", 1)
|
||||
return 1
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
DNA Saboteur
|
||||
|
||||
Very noticable.
|
||||
Lowers resistance tremendously.
|
||||
No changes to stage speed.
|
||||
Decreases transmittablity tremendously.
|
||||
Fatal Level.
|
||||
|
||||
Bonus
|
||||
Cleans the DNA of a person and then randomly gives them a trait.
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/genetic_mutation
|
||||
name = "Deoxyribonucleic Acid Saboteur"
|
||||
desc = "The virus bonds with the DNA of the host, causing damaging mutations until removed."
|
||||
stealth = -2
|
||||
resistance = -3
|
||||
stage_speed = 0
|
||||
transmittable = -3
|
||||
level = 6
|
||||
severity = 4
|
||||
var/list/possible_mutations
|
||||
var/archived_dna = null
|
||||
base_message_chance = 50
|
||||
symptom_delay_min = 60
|
||||
symptom_delay_max = 120
|
||||
var/no_reset = FALSE
|
||||
threshold_desc = "<b>Resistance 8:</b> Causes two harmful mutations at once.<br>\
|
||||
<b>Stage Speed 10:</b> Increases mutation frequency.<br>\
|
||||
<b>Stage Speed 14:</b> Mutations will be beneficial.<br>\
|
||||
<b>Stealth 5:</b> The mutations persist even if the virus is cured."
|
||||
|
||||
/datum/symptom/genetic_mutation/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/carbon/C = A.affected_mob
|
||||
if(!C.has_dna())
|
||||
return
|
||||
switch(A.stage)
|
||||
if(4, 5)
|
||||
to_chat(C, "<span class='warning'>[pick("Your skin feels itchy.", "You feel light headed.")]</span>")
|
||||
C.dna.remove_mutation_group(possible_mutations)
|
||||
for(var/i in 1 to power)
|
||||
C.randmut(possible_mutations)
|
||||
|
||||
// Archive their DNA before they were infected.
|
||||
/datum/symptom/genetic_mutation/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stealth"] >= 5) //don't restore dna after curing
|
||||
no_reset = TRUE
|
||||
if(A.properties["stage_rate"] >= 10) //mutate more often
|
||||
symptom_delay_min = 20
|
||||
symptom_delay_max = 60
|
||||
if(A.properties["resistance"] >= 8) //mutate twice
|
||||
power = 2
|
||||
if(A.properties["stage_rate"] >= 14)
|
||||
possible_mutations = (GLOB.good_mutations | GLOB.not_good_mutations) - GLOB.all_mutations[RACEMUT]
|
||||
else
|
||||
possible_mutations = (GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.all_mutations[RACEMUT]
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
if(M)
|
||||
if(!M.has_dna())
|
||||
return
|
||||
archived_dna = M.dna.mutation_index
|
||||
|
||||
// Give them back their old DNA when cured.
|
||||
/datum/symptom/genetic_mutation/End(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(!no_reset)
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
if(M && archived_dna)
|
||||
if(!M.has_dna())
|
||||
return
|
||||
M.dna.mutation_index = archived_dna
|
||||
M.domutcheck()
|
||||
@@ -18,23 +18,23 @@ Bonus
|
||||
/datum/symptom/hallucigen
|
||||
name = "Hallucigen"
|
||||
desc = "The virus stimulates the brain, causing occasional hallucinations."
|
||||
stealth = 1
|
||||
stealth = -2
|
||||
resistance = -3
|
||||
stage_speed = -1
|
||||
stage_speed = -3
|
||||
transmittable = -1
|
||||
level = 5
|
||||
severity = 2
|
||||
base_message_chance = 25
|
||||
symptom_delay_min = 10
|
||||
symptom_delay_max = 70
|
||||
symptom_delay_min = 25
|
||||
symptom_delay_max = 90
|
||||
var/fake_healthy = FALSE
|
||||
threshold_desc = "<b>Stage Speed 7:</b> Increases the amount of hallucinations.<br>\
|
||||
<b>Stealth 2:</b> The virus mimics positive symptoms.."
|
||||
<b>Stealth 4:</b> The virus mimics positive symptoms.."
|
||||
|
||||
/datum/symptom/hallucigen/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stealth"] >= 2) //fake good symptom messages
|
||||
if(A.properties["stealth"] >= 4) //fake good symptom messages
|
||||
fake_healthy = TRUE
|
||||
base_message_chance = 50
|
||||
if(A.properties["stage_rate"] >= 7) //stronger hallucinations
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
resistance = 0
|
||||
stage_speed = 0
|
||||
transmittable = 0
|
||||
level = -1 //not obtainable
|
||||
level = 0 //not obtainable
|
||||
base_message_chance = 20 //here used for the overlays
|
||||
symptom_delay_min = 1
|
||||
symptom_delay_max = 1
|
||||
@@ -43,6 +43,59 @@
|
||||
/datum/symptom/heal/proc/passive_message_condition(mob/living/M)
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/symptom/heal/starlight
|
||||
name = "Starlight Condensation"
|
||||
desc = "The virus reacts to direct starlight, producing regenerative chemicals. Works best against toxin-based damage."
|
||||
stealth = -1
|
||||
resistance = -2
|
||||
stage_speed = 0
|
||||
transmittable = 1
|
||||
level = 6
|
||||
passive_message = "<span class='notice'>You miss the feeling of starlight on your skin.</span>"
|
||||
var/nearspace_penalty = 0.3
|
||||
threshold_desc = "<b>Stage Speed 6:</b> Increases healing speed.<br>\
|
||||
<b>Transmission 6:</b> Removes penalty for only being close to space."
|
||||
|
||||
/datum/symptom/heal/starlight/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["transmittable"] >= 6)
|
||||
nearspace_penalty = 1
|
||||
if(A.properties["stage_rate"] >= 6)
|
||||
power = 2
|
||||
|
||||
/datum/symptom/heal/starlight/CanHeal(datum/disease/advance/A)
|
||||
var/mob/living/M = A.affected_mob
|
||||
if(istype(get_turf(M), /turf/open/space))
|
||||
return power
|
||||
else
|
||||
for(var/turf/T in view(M, 2))
|
||||
if(istype(T, /turf/open/space))
|
||||
return power * nearspace_penalty
|
||||
|
||||
/datum/symptom/heal/starlight/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
|
||||
var/heal_amt = actual_power
|
||||
if(M.getToxLoss() && prob(5))
|
||||
to_chat(M, "<span class='notice'>Your skin tingles as the starlight seems to heal you.</span>")
|
||||
|
||||
M.adjustToxLoss(-(4 * heal_amt)) //most effective on toxins
|
||||
|
||||
var/list/parts = M.get_damaged_bodyparts(1,1)
|
||||
|
||||
if(!parts.len)
|
||||
return
|
||||
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len))
|
||||
M.update_damage_overlays()
|
||||
return 1
|
||||
|
||||
/datum/symptom/heal/starlight/passive_message_condition(mob/living/M)
|
||||
if(M.getBruteLoss() || M.getFireLoss() || M.getToxLoss())
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/symptom/heal/chem
|
||||
name = "Toxolysis"
|
||||
stealth = 0
|
||||
@@ -73,6 +126,89 @@
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/datum/symptom/heal/metabolism
|
||||
name = "Metabolic Boost"
|
||||
stealth = -1
|
||||
resistance = -2
|
||||
stage_speed = 2
|
||||
transmittable = 1
|
||||
level = 7
|
||||
var/triple_metabolism = FALSE
|
||||
var/reduced_hunger = FALSE
|
||||
desc = "The virus causes the host's metabolism to accelerate rapidly, making them process chemicals twice as fast,\
|
||||
but also causing increased hunger."
|
||||
threshold_desc = "<b>Stealth 3:</b> Reduces hunger rate.<br>\
|
||||
<b>Stage Speed 10:</b> Chemical metabolization is tripled instead of doubled."
|
||||
|
||||
/datum/symptom/heal/metabolism/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stage_rate"] >= 10)
|
||||
triple_metabolism = TRUE
|
||||
if(A.properties["stealth"] >= 3)
|
||||
reduced_hunger = TRUE
|
||||
|
||||
/datum/symptom/heal/metabolism/Heal(mob/living/carbon/C, datum/disease/advance/A, actual_power)
|
||||
if(!istype(C))
|
||||
return
|
||||
C.reagents.metabolize(C, can_overdose=TRUE) //this works even without a liver; it's intentional since the virus is metabolizing by itself
|
||||
if(triple_metabolism)
|
||||
C.reagents.metabolize(C, can_overdose=TRUE)
|
||||
C.overeatduration = max(C.overeatduration - 2, 0)
|
||||
var/lost_nutrition = 9 - (reduced_hunger * 5)
|
||||
C.nutrition = max(C.nutrition - (lost_nutrition * HUNGER_FACTOR), 0) //Hunger depletes at 10x the normal speed
|
||||
if(prob(2))
|
||||
to_chat(C, "<span class='notice'>You feel an odd gurgle in your stomach, as if it was working much faster than normal.</span>")
|
||||
return 1
|
||||
|
||||
/datum/symptom/heal/darkness
|
||||
name = "Nocturnal Regeneration"
|
||||
desc = "The virus is able to mend the host's flesh when in conditions of low light, repairing physical damage. More effective against brute damage."
|
||||
stealth = 2
|
||||
resistance = -1
|
||||
stage_speed = -2
|
||||
transmittable = -1
|
||||
level = 6
|
||||
passive_message = "<span class='notice'>You feel tingling on your skin as light passes over it.</span>"
|
||||
threshold_desc = "<b>Stage Speed 8:</b> Doubles healing speed."
|
||||
|
||||
/datum/symptom/heal/darkness/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stage_rate"] >= 8)
|
||||
power = 2
|
||||
|
||||
/datum/symptom/heal/darkness/CanHeal(datum/disease/advance/A)
|
||||
var/mob/living/M = A.affected_mob
|
||||
var/light_amount = 0
|
||||
if(isturf(M.loc)) //else, there's considered to be no light
|
||||
var/turf/T = M.loc
|
||||
light_amount = min(1,T.get_lumcount()) - 0.5
|
||||
if(light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD)
|
||||
return power
|
||||
|
||||
/datum/symptom/heal/darkness/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
|
||||
var/heal_amt = 2 * actual_power
|
||||
|
||||
var/list/parts = M.get_damaged_bodyparts(1,1)
|
||||
|
||||
if(!parts.len)
|
||||
return
|
||||
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>The darkness soothes and mends your wounds.</span>")
|
||||
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len * 0.5)) //more effective on brute
|
||||
M.update_damage_overlays()
|
||||
return 1
|
||||
|
||||
/datum/symptom/heal/darkness/passive_message_condition(mob/living/M)
|
||||
if(M.getBruteLoss() || M.getFireLoss())
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/symptom/heal/coma
|
||||
name = "Regenerative Coma"
|
||||
desc = "The virus causes the host to fall into a death-like coma when severely damaged, then rapidly fixes the damage."
|
||||
@@ -148,268 +284,183 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
im not even gonna bother with these for the following symptoms. typed em out, code was deleted, had to start over, read the symptoms yourself.
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/EMP
|
||||
name = "Organic Flux Induction"
|
||||
desc = "Causes electromagnetic interference around the subject"
|
||||
stealth = -2
|
||||
resistance = -1
|
||||
stage_speed = 0
|
||||
transmittable = -2
|
||||
level = 6
|
||||
severity = 4
|
||||
symptom_delay_min = 15
|
||||
symptom_delay_max = 40
|
||||
var/bigemp = FALSE
|
||||
var/cellheal = FALSE
|
||||
threshold_desc = "<b>Stealth 4:</b> The disease resets cell DNA, quickly curing cell damage and mutations<br>\
|
||||
<b>transmission 8:</b> The EMP affects electronics adjacent to the subject as well."
|
||||
|
||||
/datum/symptom/EMP/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stealth"] >= 4)
|
||||
cellheal = TRUE
|
||||
if(A.properties["transmittable"] >= 8)
|
||||
bigemp = TRUE
|
||||
|
||||
/datum/symptom/EMP/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(4, 5)
|
||||
M.emp_act(EMP_HEAVY)
|
||||
if(cellheal)
|
||||
M.adjustCloneLoss(-40)
|
||||
M.reagents.add_reagent(/datum/reagent/medicine/mutadone = 1)
|
||||
if(bigemp)
|
||||
empulse(M.loc, 0, 1)
|
||||
to_chat(M, "<span class='userdanger'>[pick("Your mind fills with static!.", "You feel a jolt!", "Your sense of direction flickers out!")]</span>")
|
||||
else
|
||||
to_chat(M, "<span class='notice'>[pick("You feel a slight tug toward the station's wall.", "Nearby electronics flicker", "Your hair stands on end")]</span>")
|
||||
return
|
||||
|
||||
/datum/symptom/sweat
|
||||
name = "Hyperperspiration"
|
||||
desc = "Causes the host to sweat profusely, leaving small water puddles and extnguishing small fires"
|
||||
stealth = 1
|
||||
/datum/symptom/heal/water
|
||||
name = "Tissue Hydration"
|
||||
desc = "The virus uses excess water inside and outside the body to repair damaged tissue cells. More effective against burns."
|
||||
stealth = 0
|
||||
resistance = -1
|
||||
stage_speed = 0
|
||||
transmittable = 1
|
||||
level = 6
|
||||
severity = 4
|
||||
symptom_delay_min = 10
|
||||
symptom_delay_max = 30
|
||||
var/bigsweat = FALSE
|
||||
var/toxheal = FALSE
|
||||
threshold_desc = "<b>transmission 6:</b> The sweat production ramps up to the point that it cleans messes and puts out fires in the general vicinity<br>\
|
||||
<b>transmission 8:</b> The EMP affects electronics adjacent to the subject as well."
|
||||
passive_message = "<span class='notice'>Your skin feels oddly dry...</span>"
|
||||
var/absorption_coeff = 1
|
||||
threshold_desc = "<b>Resistance 5:</b> Water is consumed at a much slower rate.<br>\
|
||||
<b>Stage Speed 7:</b> Increases healing speed."
|
||||
|
||||
/datum/symptom/sweat/Start(datum/disease/advance/A)
|
||||
/datum/symptom/heal/water/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["transmittable"] >= 8)
|
||||
toxheal = TRUE
|
||||
if(A.properties["transmittable"] >= 6)
|
||||
bigsweat = TRUE
|
||||
|
||||
/datum/symptom/sweat/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(4, 5)
|
||||
M.adjust_fire_stacks(-5)
|
||||
if(prob(30))
|
||||
var/turf/open/OT = get_turf(M)
|
||||
if(istype(OT))
|
||||
to_chat(M, "<span class='danger'>The sweat pools into a puddle!</span>")
|
||||
OT.MakeSlippery(TURF_WET_WATER, min_wet_time = 10 SECONDS, wet_time_to_add = 5 SECONDS)
|
||||
if(bigsweat)
|
||||
var/obj/effect/sweatsplash/S = new(M.loc)
|
||||
if(toxheal)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list) //Not just toxins!
|
||||
M.reagents.remove_reagent(R.type, 5)
|
||||
S.reagents.add_reagent(R.type, 5)
|
||||
M.adjustToxLoss(-20, forced = TRUE)
|
||||
S.splash()
|
||||
to_chat(M, "<span class='userdanger'>You sweat out nearly everything in your body!</span>")
|
||||
else
|
||||
to_chat(M, "<span class='notice'>[pick("You feel moist.", "Your clothes are soaked", "You're sweating buckets")]</span>")
|
||||
return
|
||||
|
||||
/obj/effect/sweatsplash
|
||||
name = "Sweatsplash"
|
||||
|
||||
/obj/effect/sweatsplash/Initialize()
|
||||
create_reagents(1000)
|
||||
reagents.add_reagent(/datum/reagent/water, 10)
|
||||
reagents.add_reagent(/datum/reagent/space_cleaner, 10)
|
||||
|
||||
obj/effect/sweatsplash/proc/splash()
|
||||
chem_splash(loc, 2, list(reagents))
|
||||
qdel(src)
|
||||
|
||||
/datum/symptom/teleport
|
||||
name = "Thermal Retrostable Displacement"
|
||||
desc = "When too hot or cold, the subject will return to a recent location they experienced safe homeostasis"
|
||||
stealth = 1
|
||||
resistance = 2
|
||||
stage_speed = -2
|
||||
transmittable = -3
|
||||
level = 8
|
||||
severity = 0
|
||||
symptom_delay_min = 1
|
||||
symptom_delay_max = 1
|
||||
var/telethreshold = 0
|
||||
var/burnheal = FALSE
|
||||
var/turf/open/location_return = null
|
||||
var/cooldowntimer = 0
|
||||
threshold_desc = "<b>Resistance 8:</b> The disease acts on a smaller scale, resetting burnt tissue back to a state of health<br>\
|
||||
<b>Transmission 8:</b> The disease becomes more active, activating in a smaller temperature range."
|
||||
|
||||
/datum/symptom/teleport/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["resistance"] >= 8)
|
||||
burnheal = TRUE
|
||||
if(A.properties["transmittable"] >= 8)
|
||||
telethreshold = 25
|
||||
if(A.properties["stage_rate"] >= 7)
|
||||
power = 2
|
||||
if(A.properties["stealth"] >= 2)
|
||||
absorption_coeff = 0.25
|
||||
|
||||
/datum/symptom/teleport/Activate(datum/disease/advance/A)
|
||||
/datum/symptom/heal/water/CanHeal(datum/disease/advance/A)
|
||||
. = 0
|
||||
var/mob/living/M = A.affected_mob
|
||||
if(M.fire_stacks < 0)
|
||||
M.fire_stacks = min(M.fire_stacks + 1 * absorption_coeff, 0)
|
||||
. += power
|
||||
if(M.reagents.has_reagent("holywater"))
|
||||
M.reagents.remove_reagent("holywater", 0.5 * absorption_coeff)
|
||||
. += power * 0.75
|
||||
else if(M.reagents.has_reagent("water"))
|
||||
M.reagents.remove_reagent("water", 0.5 * absorption_coeff)
|
||||
. += power * 0.5
|
||||
|
||||
/datum/symptom/heal/water/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
|
||||
var/heal_amt = 2 * actual_power
|
||||
|
||||
var/list/parts = M.get_damaged_bodyparts(1,1) //more effective on burns
|
||||
|
||||
if(!parts.len)
|
||||
return
|
||||
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>You feel yourself absorbing the water around you to soothe your damaged skin.</span>")
|
||||
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(heal_amt/parts.len * 0.5, heal_amt/parts.len))
|
||||
M.update_damage_overlays()
|
||||
|
||||
return 1
|
||||
|
||||
/datum/symptom/heal/water/passive_message_condition(mob/living/M)
|
||||
if(M.getBruteLoss() || M.getFireLoss())
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/symptom/heal/plasma
|
||||
name = "Plasma Fixation"
|
||||
desc = "The virus draws plasma from the atmosphere and from inside the body to heal and stabilize body temperature."
|
||||
stealth = 0
|
||||
resistance = 3
|
||||
stage_speed = -2
|
||||
transmittable = -2
|
||||
level = 8
|
||||
passive_message = "<span class='notice'>You feel an odd attraction to plasma.</span>"
|
||||
var/temp_rate = 1
|
||||
threshold_desc = "<b>Transmission 6:</b> Increases temperature adjustment rate.<br>\
|
||||
<b>Stage Speed 7:</b> Increases healing speed."
|
||||
|
||||
/datum/symptom/heal/plasma/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(4, 5)
|
||||
if(burnheal)
|
||||
M.adjustFireLoss(-1 * power)
|
||||
if(prob(5) && (M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT || M.bodytemperature > BODYTEMP_COLD_DAMAGE_LIMIT))
|
||||
location_return = get_turf(M) //sets up return point
|
||||
if(prob(50))
|
||||
to_chat(M, "<span class='userwarning'>The lukewarm temperature makes you feel strange!</span>")
|
||||
if(cooldowntimer == 0 && (M.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT - telethreshold || M.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT + telethreshold || (burnheal && M.getFireLoss() > 75 - telethreshold)))
|
||||
do_sparks(5,FALSE,M)
|
||||
to_chat(M, "<span class='userdanger'>The change in temperature shocks you back to a previous spacial state!</span>")
|
||||
do_teleport(M, location_return, 0, asoundin = 'sound/effects/phasein.ogg') //Teleports home
|
||||
do_sparks(5,FALSE,M)
|
||||
cooldowntimer = 10
|
||||
if(burnheal)
|
||||
M.adjust_fire_stacks(-10)
|
||||
if(cooldowntimer > 0)
|
||||
cooldowntimer --
|
||||
else
|
||||
if(prob(7))
|
||||
to_chat(M, "<span class='notice'>[pick("Your warm breath fizzles out of existence.", "You feel attracted to temperate climates", "You feel like you're forgetting something")]</span>")
|
||||
return
|
||||
if(A.properties["stage_rate"] >= 7)
|
||||
power = 2
|
||||
if(A.properties["transmittable"] >= 6)
|
||||
temp_rate = 4
|
||||
|
||||
/datum/symptom/growth
|
||||
name = "Pituitary Disruption"
|
||||
desc = "Causes uncontrolled growth in the subject"
|
||||
stealth = -3
|
||||
/datum/symptom/heal/plasma/CanHeal(datum/disease/advance/A)
|
||||
var/mob/living/M = A.affected_mob
|
||||
var/datum/gas_mixture/environment
|
||||
var/plasmamount
|
||||
|
||||
. = 0
|
||||
|
||||
if(M.loc)
|
||||
environment = M.loc.return_air()
|
||||
if(environment)
|
||||
plasmamount = environment.gases[/datum/gas/plasma]
|
||||
if(plasmamount && plasmamount > GLOB.meta_gas_visibility[/datum/gas/plasma]) //if there's enough plasma in the air to see
|
||||
. += power * 0.5
|
||||
if(M.reagents.has_reagent("plasma"))
|
||||
. += power * 0.75
|
||||
|
||||
/datum/symptom/heal/plasma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
|
||||
var/heal_amt = 4 * actual_power
|
||||
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>You feel yourself absorbing plasma inside and around you...</span>")
|
||||
|
||||
if(M.bodytemperature > BODYTEMP_NORMAL)
|
||||
M.adjust_bodytemperature(-20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT,BODYTEMP_NORMAL)
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>You feel less hot.</span>")
|
||||
else if(M.bodytemperature < (BODYTEMP_NORMAL + 1))
|
||||
M.adjust_bodytemperature(20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT,0,BODYTEMP_NORMAL)
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>You feel warmer.</span>")
|
||||
|
||||
M.adjustToxLoss(-heal_amt)
|
||||
|
||||
var/list/parts = M.get_damaged_bodyparts(1,1)
|
||||
if(!parts.len)
|
||||
return
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>The pain from your wounds fades rapidly.</span>")
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len))
|
||||
M.update_damage_overlays()
|
||||
return 1
|
||||
|
||||
|
||||
/datum/symptom/heal/radiation
|
||||
name = "Radioactive Resonance"
|
||||
desc = "The virus uses radiation to fix damage through dna mutations."
|
||||
stealth = -1
|
||||
resistance = -2
|
||||
stage_speed = 1
|
||||
transmittable = -2
|
||||
level = 7
|
||||
severity = 4
|
||||
stage_speed = 2
|
||||
transmittable = -3
|
||||
level = 6
|
||||
symptom_delay_min = 1
|
||||
symptom_delay_max = 1
|
||||
var/current_size = 1
|
||||
var/tetsuo = FALSE
|
||||
var/bruteheal = FALSE
|
||||
threshold_desc = "<b>Stage Speed 8:</b> The disease heals brute damage at a fast rate, but causes expulsion of benign tumors<br>\
|
||||
<b>Stage Speed 12:</b> The disease heals brute damage incredibly fast, but deteriorates cell health and causes tumors to become more advanced."
|
||||
passive_message = "<span class='notice'>Your skin glows faintly for a moment.</span>"
|
||||
var/cellular_damage = FALSE
|
||||
threshold_desc = "<b>Transmission 6:</b> Additionally heals cellular damage.<br>\
|
||||
<b>Resistance 7:</b> Increases healing speed."
|
||||
|
||||
/datum/symptom/growth/Start(datum/disease/advance/A)
|
||||
/datum/symptom/heal/radiation/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stage_rate"] >= 8)
|
||||
bruteheal = TRUE
|
||||
if(A.properties["stage_rate"] >= 12)
|
||||
tetsuo = TRUE
|
||||
if(A.properties["resistance"] >= 7)
|
||||
power = 2
|
||||
if(A.properties["transmittable"] >= 6)
|
||||
cellular_damage = TRUE
|
||||
|
||||
/datum/symptom/growth/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
var/newsize = current_size
|
||||
switch(A.stage)
|
||||
if(4, 5)
|
||||
switch(A.properties["stage_rate"])
|
||||
if(5 to 8)
|
||||
newsize = 1.25
|
||||
if(9 to 12)
|
||||
newsize = 1.5
|
||||
if(13 to 16)
|
||||
newsize = 1.75
|
||||
if(17 to INFINITY)
|
||||
newsize = 2
|
||||
M.resize = newsize/current_size
|
||||
current_size = newsize
|
||||
M.update_transform()
|
||||
if(prob(5) && bruteheal)
|
||||
to_chat(M, "<span class='userdanger'>You retch, and a splatter of gore escapes your gullet</span>")
|
||||
M.Knockdown(40)
|
||||
new /obj/effect/gibspawner/generic(M.loc)
|
||||
if(prob(80))
|
||||
new /obj/effect/spawner/lootdrop/teratoma/minor(M.loc)
|
||||
if(tetsuo && prob(30))
|
||||
new /obj/effect/spawner/lootdrop/teratoma/major(M.loc)
|
||||
if(tetsuo && prob(10) && A.affected_mob.job == "Clown")
|
||||
new /obj/effect/spawner/lootdrop/teratoma/major/clown(M.loc)
|
||||
if(tetsuo)
|
||||
M.adjustBruteLoss(-5)
|
||||
if(prob(20))
|
||||
M.adjustCloneLoss(1)
|
||||
else if(bruteheal)
|
||||
M.adjustBruteLoss(-1)
|
||||
/datum/symptom/heal/radiation/CanHeal(datum/disease/advance/A)
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(M.radiation)
|
||||
if(0)
|
||||
return FALSE
|
||||
if(1 to RAD_MOB_SAFE)
|
||||
return 0.25
|
||||
if(RAD_MOB_SAFE to RAD_BURN_THRESHOLD)
|
||||
return 0.5
|
||||
if(RAD_BURN_THRESHOLD to RAD_MOB_MUTATE)
|
||||
return 0.75
|
||||
if(RAD_MOB_MUTATE to RAD_MOB_KNOCKDOWN)
|
||||
return 1
|
||||
else
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>[pick("You feel bloated.", "The station seems small", "You are the strongest")]</span>")
|
||||
return
|
||||
return 1.5
|
||||
|
||||
/obj/effect/mob_spawn/teratomamonkey //spawning these is one of the downsides of overclocking the symptom
|
||||
name = "fleshy mass"
|
||||
desc = "A writhing mass of flesh."
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blob_spore_temp"
|
||||
density = FALSE
|
||||
anchored = FALSE
|
||||
/datum/symptom/heal/radiation/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
|
||||
var/heal_amt = actual_power
|
||||
|
||||
mob_type = /mob/living/carbon/monkey/tumor
|
||||
mob_name = "a living tumor"
|
||||
death = FALSE
|
||||
roundstart = FALSE
|
||||
flavour_text = {"
|
||||
<b>You are a living teratoma, and your existence is misery. You feel the need to spread woe about the station- but not to kill.
|
||||
"}
|
||||
if(cellular_damage)
|
||||
M.adjustCloneLoss(-heal_amt * 0.5)
|
||||
|
||||
/obj/effect/mob_spawn/teratomamonkey/Initialize()
|
||||
. = ..()
|
||||
var/area/A = get_area(src)
|
||||
if(A)
|
||||
notify_ghosts("A living tumor has been born in [A.name].", 'sound/effects/splat.ogg', source = src, action = NOTIFY_ATTACK, flashwindow = FALSE)
|
||||
M.adjustToxLoss(-(2 * heal_amt))
|
||||
|
||||
/obj/effect/mob_spawn/teratomamonkey/attack_hand(mob/living/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
var/list/parts = M.get_damaged_bodyparts(1,1)
|
||||
|
||||
if(!parts.len)
|
||||
return
|
||||
to_chat(user, "<span class='notice'>Ew... It would be a bad idea to touch this. It could probably be destroyed with the extreme heat of a welder.</span>")
|
||||
|
||||
/obj/effect/mob_spawn/teratomamonkey/attackby(obj/item/W, mob/user, params)
|
||||
if(W.tool_behaviour == TOOL_WELDER && user.a_intent != INTENT_HARM)
|
||||
user.visible_message("<span class='warning'>[usr.name] destroys [src].</span>",
|
||||
"<span class='notice'>You hold the welder to [src], and it violently bursts!</span>",
|
||||
"<span class='italics'>You hear a gurgling noise</span>")
|
||||
new /obj/effect/gibspawner/human(get_turf(src))
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='notice'>Your skin glows faintly, and you feel your wounds mending themselves.</span>")
|
||||
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len))
|
||||
M.update_damage_overlays()
|
||||
return 1
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Heart Disease
|
||||
|
||||
A bit stealthy
|
||||
Slightly resistant
|
||||
Quite slow
|
||||
small transmission penalty
|
||||
max level
|
||||
|
||||
Bonus
|
||||
heart attacks
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/heartattack
|
||||
name = "Heart Disease"
|
||||
desc = "This disease infiltrates the host's heart, causing cardiac arrest after a long incubation period"
|
||||
stealth = 2
|
||||
resistance = 1
|
||||
stage_speed = -6
|
||||
transmittable = -2
|
||||
level = 9
|
||||
severity = 6
|
||||
symptom_delay_min = 1
|
||||
symptom_delay_max = 1
|
||||
var/heartattack = FALSE
|
||||
threshold_desc = "<b>Transmission 10:</b> When the victim has a heart attack, their heart will pop right out of their chest, and attack!.<br>\
|
||||
<b>Stealth 2:</b> The disease is somewhat less noticable to the host."
|
||||
|
||||
/datum/symptom/heartattack/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["transmittable"] >= 10)
|
||||
heartattack = TRUE
|
||||
if(A.properties["stealth"] >= 2)
|
||||
suppress_warning = TRUE
|
||||
|
||||
/datum/symptom/heartattack/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
if(suppress_warning && M.can_heartattack())
|
||||
if(prob(2))
|
||||
to_chat(M, "<span class='warning'>[pick("Your chest aches.", "You need to sit down.", "You feel out of breath.")]</span>")
|
||||
else if(prob(2) && M.can_heartattack())
|
||||
to_chat(M, "<span class='userdanger'>[pick("Your chest hurts!.", "You feel like your heart skipped a beat!")]</span>")
|
||||
if(A.stage == 5)
|
||||
if(M.getorgan(/obj/item/organ/heart) && M.can_heartattack())
|
||||
if(prob(1) && prob(50))
|
||||
M.set_heartattack(TRUE)
|
||||
to_chat(M, "<span class='userdanger'>Your heart stops!</span>")
|
||||
if(heartattack)
|
||||
heartattack(M, A)
|
||||
|
||||
/datum/symptom/heartattack/proc/heartattack(mob/living/M, datum/disease/advance/A)
|
||||
var/obj/item/organ/heart/heart = M.getorganslot(ORGAN_SLOT_HEART)
|
||||
if(M.getorgan(/obj/item/organ/heart))
|
||||
heart.Remove(M)
|
||||
qdel(heart)
|
||||
to_chat(M, "<span class='userdanger'>Your heart bursts out of your chest! It looks furious!</span>")
|
||||
new /mob/living/simple_animal/hostile/heart(M.loc)
|
||||
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
/datum/symptom/lubefeet
|
||||
name = "Ducatopod"
|
||||
desc = "The host now sweats industrial lubricant from their feet, lubing tiles they walk on. Combine with Pierrot's throat for the penultimate form of torture."
|
||||
stealth = -4
|
||||
resistance = -2
|
||||
stage_speed = 4
|
||||
transmittable = 1
|
||||
level = 9
|
||||
severity = 3
|
||||
symptom_delay_min = 1
|
||||
symptom_delay_max = 3
|
||||
var/morelube = FALSE
|
||||
var/clownshoes = TRUE
|
||||
threshold_desc = "<b>Transmission 10:</b> The host sweats even more profusely, lubing almost every tile they walk over<br>\
|
||||
<b>Resistance 12:</b> The host's feet turn into a pair of clown shoes."
|
||||
|
||||
/datum/symptom/lubefeet/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["transmission"] >= 10)
|
||||
morelube = TRUE
|
||||
if(A.properties["resistance"] >= 12)
|
||||
clownshoes = TRUE
|
||||
|
||||
/datum/symptom/lubefeet/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1, 2)
|
||||
if(prob(15))
|
||||
to_chat(M, "<span class='notice'>Your feet begin to sweat profusely...</span>")
|
||||
if(3, 4)
|
||||
to_chat(M, "<span class='danger'>You slide about inside your shoes!</span>")
|
||||
if(A.stage == 4 || A.stage == 5)
|
||||
if(morelube)
|
||||
makelube(M, 40)
|
||||
else
|
||||
makelube(M, 20)
|
||||
if(5)
|
||||
to_chat(M, "<span class='danger'>You slide about inside your shoes!</span>")
|
||||
if(A.stage == 4 || A.stage == 5)
|
||||
if(morelube)
|
||||
makelube(M, 99)
|
||||
else
|
||||
makelube(M, 50)
|
||||
if(clownshoes)
|
||||
give_clown_shoes(A)
|
||||
|
||||
/datum/symptom/lubefeet/proc/makelube(mob/living/carbon/M, chance)
|
||||
if(prob(chance))
|
||||
var/turf/open/OT = get_turf(M)
|
||||
if(istype(OT))
|
||||
to_chat(M, "<span class='danger'>The lube pools into a puddle!</span>")
|
||||
OT.MakeSlippery(TURF_WET_LUBE, min_wet_time = 20 SECONDS, wet_time_to_add = 10 SECONDS)
|
||||
|
||||
/datum/symptom/lubefeet/End(datum/disease/advance/A)
|
||||
..()
|
||||
if(ishuman(A.affected_mob))
|
||||
var/mob/living/carbon/human/M = A.affected_mob
|
||||
if(istype(M.shoes, /obj/item/clothing/shoes/clown_shoes))
|
||||
REMOVE_TRAIT(M.shoes, TRAIT_NODROP, DISEASE_TRAIT)
|
||||
|
||||
/datum/symptom/lubefeet/proc/give_clown_shoes(datum/disease/advance/A)
|
||||
if(ishuman(A.affected_mob))
|
||||
var/mob/living/carbon/human/M = A.affected_mob
|
||||
if(!istype(M.shoes, /obj/item/clothing/shoes/clown_shoes))
|
||||
if(!M.dropItemToGround(M.shoes))
|
||||
qdel(M.shoes)
|
||||
var/obj/item/clothing/C = new /obj/item/clothing/shoes/clown_shoes(M)
|
||||
ADD_TRAIT(C, TRAIT_NODROP, DISEASE_TRAIT)
|
||||
M.equip_to_slot_or_del(C, SLOT_SHOES)
|
||||
return
|
||||
@@ -15,13 +15,13 @@ Bonus
|
||||
/datum/symptom/narcolepsy
|
||||
name = "Narcolepsy"
|
||||
desc = "The virus causes a hormone imbalance, making the host sleepy and narcoleptic."
|
||||
stealth = 1
|
||||
stealth = -1
|
||||
resistance = -2
|
||||
stage_speed = -3
|
||||
transmittable = -2
|
||||
transmittable = -4
|
||||
level = 6
|
||||
symptom_delay_min = 10
|
||||
symptom_delay_max = 30
|
||||
symptom_delay_min = 15
|
||||
symptom_delay_max = 80
|
||||
severity = 4
|
||||
var/sleep_level = 0
|
||||
var/sleepy_ticks = 0
|
||||
@@ -35,8 +35,8 @@ Bonus
|
||||
if(A.properties["transmittable"] >= 7) //stamina damage
|
||||
stamina = TRUE
|
||||
if(A.properties["resistance"] >= 10) //act more often
|
||||
symptom_delay_min = 5
|
||||
symptom_delay_max = 20
|
||||
symptom_delay_min = 10
|
||||
symptom_delay_max = 60
|
||||
|
||||
/datum/symptom/narcolepsy/Activate(var/datum/disease/advance/A)
|
||||
var/mob/living/M = A.affected_mob
|
||||
|
||||
@@ -28,7 +28,7 @@ Bonus
|
||||
symptom_delay_min = 1
|
||||
symptom_delay_max = 1
|
||||
var/regenerate_blood = FALSE
|
||||
threshold_desc = "<b>Resistance 8:</b> Additionally regenerates lost blood.<br>"
|
||||
threshold_desc = "<b>Resistance 8:</b>Additionally regenerates lost blood.<br>"
|
||||
|
||||
/datum/symptom/oxygen/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
@@ -42,25 +42,11 @@ Bonus
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(4, 5)
|
||||
ADD_TRAIT(M, TRAIT_NOBREATH, DISEASE_TRAIT)
|
||||
M.adjustOxyLoss(-7, 0)
|
||||
M.losebreath = max(0, M.losebreath - 4)
|
||||
if(regenerate_blood && M.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
if(regenerate_blood && M.blood_volume < (BLOOD_VOLUME_NORMAL * M.blood_ratio))
|
||||
M.blood_volume += 1
|
||||
else
|
||||
if(prob(base_message_chance))
|
||||
to_chat(M, "<span class='notice'>[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]</span>")
|
||||
return
|
||||
|
||||
/datum/symptom/oxygen/on_stage_change(new_stage, datum/disease/advance/A)
|
||||
if(!..())
|
||||
return FALSE
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
if(A.stage <= 3)
|
||||
REMOVE_TRAIT(M, TRAIT_NOBREATH, DISEASE_TRAIT)
|
||||
return TRUE
|
||||
|
||||
/datum/symptom/oxygen/End(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
REMOVE_TRAIT(A.affected_mob, TRAIT_NOBREATH, DISEASE_TRAIT)
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
/datum/symptom/pierrot
|
||||
name = "Pierrot's Throat"
|
||||
desc = "Causes the host to honk randomly"
|
||||
stealth = -1
|
||||
resistance = 3
|
||||
stage_speed = 1
|
||||
transmittable = 2
|
||||
level = 0
|
||||
severity = 1
|
||||
symptom_delay_min = 2
|
||||
symptom_delay_max = 15
|
||||
var/honkspread = FALSE
|
||||
var/clownmask = FALSE
|
||||
var/clumsy = FALSE
|
||||
threshold_desc = "<b>Transmission 10:</b> There's a rare chance the disease is spread everytime the host honks.<br>\
|
||||
<b>Resistance 10:</b> The host grows a peculiar clown mask.<br>\
|
||||
<b>Resistance 15:</b> Host becomes clumsy, similar to a clown."
|
||||
|
||||
/datum/symptom/pierrot/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["transmission"] >= 10)
|
||||
honkspread = TRUE
|
||||
if(A.properties["resistance"] >= 10)
|
||||
clownmask = TRUE
|
||||
if(A.properties["resistance"] >= 15)
|
||||
clumsy = TRUE
|
||||
|
||||
/datum/symptom/pierrot/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1)
|
||||
if(prob(30))
|
||||
to_chat(M, "<span class='danger'>You feel a little silly.</span>")
|
||||
if(2)
|
||||
if(prob(30))
|
||||
to_chat(M, "<span class='danger'>You start seeing rainbows.</span>")
|
||||
if(3)
|
||||
if(prob(30))
|
||||
to_chat(M, "<span class='danger'>Your thoughts are interrupted by a loud <b>HONK!</b></span>")
|
||||
playsound(M, 'sound/items/bikehorn.ogg', 50, 1)
|
||||
if(4, 5)
|
||||
if(clumsy)
|
||||
if(!HAS_TRAIT(M, TRAIT_CLUMSY))
|
||||
to_chat(M, "<span class='notice'>You feel dumber.</span>")
|
||||
ADD_TRAIT(M, TRAIT_CLUMSY, DISEASE_TRAIT)
|
||||
if(prob(30))
|
||||
M.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ))
|
||||
if(A.stage == 5)
|
||||
if(clownmask)
|
||||
give_clown_mask(A)
|
||||
if(prob(5))
|
||||
playsound(M.loc, 'sound/items/bikehorn.ogg', 50, 1)
|
||||
if(honkspread && prob(25))
|
||||
A.spread(1)
|
||||
|
||||
/datum/symptom/pierrot/End(datum/disease/advance/A)
|
||||
..()
|
||||
if(!A.affected_mob.job == "Clown")
|
||||
to_chat(A.affected_mob, "<span class='notice'>You feel less dumb.</span>")
|
||||
REMOVE_TRAIT(A.affected_mob, TRAIT_CLUMSY, DISEASE_TRAIT)
|
||||
if(ishuman(A.affected_mob))
|
||||
var/mob/living/carbon/human/M = A.affected_mob
|
||||
if(istype(M.wear_mask, /obj/item/clothing/mask/gas/clown_hat))
|
||||
REMOVE_TRAIT(M.wear_mask, TRAIT_NODROP, DISEASE_TRAIT)
|
||||
|
||||
|
||||
/datum/symptom/pierrot/proc/give_clown_mask(datum/disease/advance/A)
|
||||
if(ishuman(A.affected_mob))
|
||||
var/mob/living/carbon/human/M = A.affected_mob
|
||||
if(!istype(M.wear_mask, /obj/item/clothing/mask/gas/clown_hat))
|
||||
if(!M.dropItemToGround(M.wear_mask))
|
||||
qdel(M.wear_mask)
|
||||
var/obj/item/clothing/C = new /obj/item/clothing/mask/gas/clown_hat(M)
|
||||
ADD_TRAIT(C, TRAIT_NODROP, DISEASE_TRAIT)
|
||||
M.equip_to_slot_or_del(C, SLOT_WEAR_MASK)
|
||||
return
|
||||
@@ -1,42 +0,0 @@
|
||||
/datum/symptom/radiation
|
||||
name = "Iraddiant Cells"
|
||||
desc = "Causes the cells in the host's body to give off harmful radiation."
|
||||
stealth = -1
|
||||
resistance = 2
|
||||
stage_speed = -1
|
||||
transmittable = 2
|
||||
level = 8
|
||||
severity = 4
|
||||
symptom_delay_min = 10
|
||||
symptom_delay_max = 40
|
||||
var/fastrads = FALSE
|
||||
var/radothers = FALSE
|
||||
threshold_desc = "<b>Speed 8:</b> Host takes radiation damage faster."
|
||||
|
||||
/datum/symptom/radiation/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["speed"] >= 8)
|
||||
fastrads = TRUE
|
||||
|
||||
/datum/symptom/radiation/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='notice'>You feel off...</span>")
|
||||
if(2, 3)
|
||||
if(prob(50))
|
||||
to_chat(M, "<span class='danger'>You feel like the atoms inside you are beginning to split...</span>")
|
||||
if(4, 5)
|
||||
radiate(M)
|
||||
|
||||
/datum/symptom/radiation/proc/radiate(mob/living/carbon/M)
|
||||
to_chat(M, "<span class='danger'>You feel a wave of pain throughout your body!</span>")
|
||||
if(fastrads)
|
||||
M.radiation += 150
|
||||
else
|
||||
M.radiation += 75
|
||||
return 1
|
||||
@@ -63,8 +63,8 @@ BONUS
|
||||
|
||||
name = "Revitiligo"
|
||||
desc = "The virus causes increased production of skin pigment cells, making the host's skin grow darker over time."
|
||||
stealth = 1
|
||||
resistance = 2
|
||||
stealth = -1
|
||||
resistance = 3
|
||||
stage_speed = 1
|
||||
transmittable = 2
|
||||
level = 5
|
||||
@@ -86,46 +86,3 @@ BONUS
|
||||
H.update_body(0)
|
||||
else
|
||||
H.visible_message("<span class='warning'>[H] looks a bit dark...</span>", "<span class='notice'>Your skin suddenly appears darker...</span>")
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
Polyvitiligo
|
||||
|
||||
Not Noticeable.
|
||||
Increases resistance slightly.
|
||||
Increases stage speed.
|
||||
Transmittable.
|
||||
Low Level.
|
||||
|
||||
BONUS
|
||||
Makes the host change color
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/polyvitiligo
|
||||
name = "Polyvitiligo"
|
||||
desc = "The virus replaces the melanin in the skin with reactive pigment."
|
||||
stealth = 0
|
||||
resistance = 1
|
||||
stage_speed = 2
|
||||
transmittable = 2
|
||||
level = 0
|
||||
severity = 1
|
||||
base_message_chance = 50
|
||||
symptom_delay_min = 45
|
||||
symptom_delay_max = 90
|
||||
|
||||
/datum/symptom/polyvitiligo/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/M = A.affected_mob
|
||||
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("<span class='warning'>[M] looks rather vibrant...</span>", "<span class='notice'>The colors, man, the colors...</span>")
|
||||
|
||||
@@ -15,6 +15,7 @@ Bonus
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/sneeze
|
||||
name = "Sneezing"
|
||||
desc = "The virus causes irritation of the nasal cavity, making the host sneeze occasionally."
|
||||
@@ -26,11 +27,14 @@ Bonus
|
||||
severity = 1
|
||||
symptom_delay_min = 5
|
||||
symptom_delay_max = 35
|
||||
threshold_desc = "<b>Stealth 4:</b> The symptom remains hidden until active."
|
||||
threshold_desc = "<b>Transmission 9:</b> Increases sneezing range, spreading the virus over a larger area.<br>\
|
||||
<b>Stealth 4:</b> The symptom remains hidden until active."
|
||||
|
||||
/datum/symptom/sneeze/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["transmittable"] >= 9) //longer spread range
|
||||
power = 2
|
||||
if(A.properties["stealth"] >= 4)
|
||||
suppress_warning = TRUE
|
||||
|
||||
@@ -44,3 +48,4 @@ Bonus
|
||||
M.emote("sniff")
|
||||
else
|
||||
M.emote("sneeze")
|
||||
A.spread(4 + power)
|
||||
@@ -8,14 +8,12 @@
|
||||
level = 5
|
||||
severity = 0
|
||||
|
||||
/datum/symptom/undead_adaptation/OnAdd(datum/disease/advance/A)
|
||||
/datum/symptom/undead_adaptation/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
A.process_dead = TRUE
|
||||
A.infectable_biotypes |= MOB_UNDEAD
|
||||
|
||||
/datum/symptom/undead_adaptation/OnRemove(datum/disease/advance/A)
|
||||
A.process_dead = FALSE
|
||||
A.infectable_biotypes -= MOB_UNDEAD
|
||||
|
||||
/datum/symptom/inorganic_adaptation
|
||||
name = "Inorganic Biology"
|
||||
desc = "The virus can survive and replicate even in an inorganic environment, increasing its resistance and infection rate."
|
||||
@@ -26,8 +24,8 @@
|
||||
level = 5
|
||||
severity = 0
|
||||
|
||||
/datum/symptom/inorganic_adaptation/OnAdd(datum/disease/advance/A)
|
||||
/datum/symptom/inorganic_adaptation/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
A.infectable_biotypes |= MOB_INORGANIC
|
||||
|
||||
/datum/symptom/inorganic_adaptation/OnRemove(datum/disease/advance/A)
|
||||
A.infectable_biotypes -= MOB_INORGANIC
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/stage_speed = 0
|
||||
var/transmittable = 0
|
||||
// The type level of the symptom. Higher is harder to generate.
|
||||
var/level = -1
|
||||
var/level = 0
|
||||
// The severity level of the symptom. Higher is more dangerous.
|
||||
var/severity = 0
|
||||
// The hash tag for our diseases, we will add it up with our other symptoms to get a unique id! ID MUST BE UNIQUE!!!
|
||||
@@ -60,11 +60,6 @@
|
||||
next_activation = world.time + rand(symptom_delay_min * 10, symptom_delay_max * 10)
|
||||
return TRUE
|
||||
|
||||
/datum/symptom/proc/on_stage_change(new_stage, datum/disease/advance/A)
|
||||
if(neutered)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/symptom/proc/Copy()
|
||||
var/datum/symptom/new_symp = new type
|
||||
new_symp.name = name
|
||||
@@ -72,14 +67,5 @@
|
||||
new_symp.neutered = neutered
|
||||
return new_symp
|
||||
|
||||
/datum/symptom/proc/OnDeath(datum/disease/advance/A)
|
||||
return !neutered
|
||||
|
||||
/datum/symptom/proc/generate_threshold_desc()
|
||||
return
|
||||
|
||||
/datum/symptom/proc/OnAdd(datum/disease/advance/A) //Overload when a symptom needs to be active before processing, like changing biotypes.
|
||||
return
|
||||
|
||||
/datum/symptom/proc/OnRemove(datum/disease/advance/A) //But dont forget to remove them too.
|
||||
return
|
||||
|
||||
@@ -46,61 +46,3 @@ BONUS
|
||||
stage_speed = 5
|
||||
transmittable = 3
|
||||
level = 3
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Viral aggressive metabolism
|
||||
|
||||
Somewhat increased stealth.
|
||||
Abysmal resistance.
|
||||
Increased stage speed.
|
||||
Poor transmitability.
|
||||
Medium Level.
|
||||
|
||||
Bonus
|
||||
The virus starts at stage 5, but after a certain time will start curing itself.
|
||||
Stages still increase naturally with stage speed.
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/viralreverse
|
||||
|
||||
name = "Viral aggressive metabolism"
|
||||
desc = "The virus sacrifices its long term survivability to nearly instantly fully spread inside a host. \
|
||||
The virus will start at the last stage, but will eventually decay and die off by itself."
|
||||
stealth = 1
|
||||
resistance = -4
|
||||
stage_speed = 3
|
||||
transmittable = -3
|
||||
level = 3
|
||||
symptom_delay_min = 1
|
||||
symptom_delay_max = 1
|
||||
var/time_to_cure
|
||||
threshold_desc = "<b>Resistance/Stage Speed:</b> Highest between these determines the amount of time before self-curing.<br>\
|
||||
<b>Stealth 4</b> Doubles the time before the virus self-cures"
|
||||
|
||||
|
||||
/datum/symptom/viralreverse/Activate(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(time_to_cure > 0)
|
||||
time_to_cure--
|
||||
else
|
||||
var/mob/living/M = A.affected_mob
|
||||
Heal(M, A)
|
||||
|
||||
/datum/symptom/viralreverse/proc/Heal(mob/living/M, datum/disease/advance/A)
|
||||
A.stage -= 1
|
||||
if(A.stage < 2)
|
||||
to_chat(M, "<span class='notice'>You suddenly feel healthy.</span>")
|
||||
A.cure()
|
||||
|
||||
/datum/symptom/viralreverse/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
A.stage = 5
|
||||
if(A.properties["stealth"] >= 4) //more time before it's cured
|
||||
power = 2
|
||||
time_to_cure = max(A.properties["resistance"], A.properties["stage_rate"]) * 10 * power
|
||||
|
||||
@@ -20,9 +20,9 @@ Bonus
|
||||
name = "Hyphema"
|
||||
desc = "The virus causes inflammation of the retina, leading to eye damage and eventually blindness."
|
||||
stealth = -1
|
||||
resistance = -3
|
||||
resistance = -4
|
||||
stage_speed = -4
|
||||
transmittable = -2
|
||||
transmittable = -3
|
||||
level = 5
|
||||
severity = 5
|
||||
base_message_chance = 50
|
||||
|
||||
@@ -24,9 +24,9 @@ Bonus
|
||||
name = "Vomiting"
|
||||
desc = "The virus causes nausea and irritates the stomach, causing occasional vomit."
|
||||
stealth = -2
|
||||
resistance = 1
|
||||
resistance = -1
|
||||
stage_speed = 0
|
||||
transmittable = 2
|
||||
transmittable = 1
|
||||
level = 3
|
||||
severity = 3
|
||||
base_message_chance = 100
|
||||
@@ -60,4 +60,4 @@ Bonus
|
||||
vomit(M)
|
||||
|
||||
/datum/symptom/vomit/proc/vomit(mob/living/carbon/M)
|
||||
M.vomit(20, vomit_blood, stun = 0, distance = proj_vomit)
|
||||
M.vomit(20, vomit_blood, distance = proj_vomit)
|
||||
|
||||
@@ -23,7 +23,7 @@ Bonus
|
||||
stealth = -2
|
||||
resistance = 2
|
||||
stage_speed = -2
|
||||
transmittable = -1
|
||||
transmittable = -2
|
||||
level = 3
|
||||
severity = 3
|
||||
base_message_chance = 100
|
||||
@@ -34,7 +34,7 @@ Bonus
|
||||
/datum/symptom/weight_loss/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stealth"] >= 2) //warn less often
|
||||
if(A.properties["stealth"] >= 4) //warn less often
|
||||
base_message_chance = 25
|
||||
|
||||
/datum/symptom/weight_loss/Activate(datum/disease/advance/A)
|
||||
|
||||
@@ -156,70 +156,6 @@
|
||||
"" = 80
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/organ_spawner
|
||||
name = "organ spawner"
|
||||
loot = list(
|
||||
/obj/item/organ/heart/gland/electric = 3,
|
||||
/obj/item/organ/heart/gland/trauma = 4,
|
||||
/obj/item/organ/heart/gland/egg = 7,
|
||||
/obj/item/organ/heart/gland/chem = 5,
|
||||
/obj/item/organ/heart/gland/mindshock = 5,
|
||||
/obj/item/organ/heart/gland/plasma = 7,
|
||||
/obj/item/organ/heart/gland/pop = 5,
|
||||
/obj/item/organ/heart/gland/slime = 4,
|
||||
/obj/item/organ/heart/gland/spiderman = 5,
|
||||
/obj/item/organ/heart/gland/ventcrawling = 1,
|
||||
/obj/item/organ/body_egg/alien_embryo = 1,
|
||||
/obj/item/organ/regenerative_core = 2)
|
||||
lootcount = 3
|
||||
/obj/effect/spawner/lootdrop/teratoma/minor
|
||||
name = "teratoma spawner"
|
||||
loot = list(
|
||||
/obj/item/organ/tongue = 5,
|
||||
/obj/item/organ/tongue/lizard = 1,
|
||||
/obj/item/organ/tail/cat = 1,
|
||||
/obj/item/organ/stomach = 5,
|
||||
/obj/item/organ/tongue/zombie = 1,
|
||||
/obj/item/organ/tongue/fly = 1,
|
||||
/obj/item/organ/stomach/fly = 1,
|
||||
/obj/item/organ/ears = 5,
|
||||
/obj/item/organ/ears/cat = 1,
|
||||
/obj/item/organ/eyes = 5,
|
||||
/obj/item/organ/heart = 5,
|
||||
/obj/item/organ/liver = 5,
|
||||
/obj/item/organ/tail/lizard = 1,
|
||||
/obj/item/organ/appendix = 5,
|
||||
/obj/effect/gibspawner/human = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/teratoma/major
|
||||
name = "advanced teratoma spawner"
|
||||
loot = list(
|
||||
/obj/item/organ/adamantine_resonator = 2,
|
||||
/obj/item/organ/heart/gland/viral = 1,
|
||||
/obj/item/organ/eyes/night_vision = 1,
|
||||
/obj/item/organ/liver/plasmaman = 3,
|
||||
/obj/item/organ/stomach/plasmaman = 3,
|
||||
/obj/item/organ/lungs/plasmaman = 3,
|
||||
/obj/item/organ/lungs/slime = 3,
|
||||
/obj/item/organ/tongue/abductor = 1,
|
||||
/obj/item/organ/tongue/bone = 3,
|
||||
/obj/item/organ/tongue/bone/plasmaman = 1,
|
||||
/obj/item/organ/vocal_cords/adamantine = 1,
|
||||
/obj/effect/gibspawner/xeno = 1,
|
||||
/obj/effect/mob_spawn/human/corpse/assistant = 1,
|
||||
/obj/effect/mob_spawn/teratomamonkey = 5)
|
||||
|
||||
/obj/effect/spawner/lootdrop/teratoma/major/clown
|
||||
name = "funny teratoma spawner"
|
||||
loot = list(
|
||||
/mob/living/simple_animal/hostile/retaliate/frog = 1,
|
||||
/mob/living/simple_animal/hostile/retaliate/clown = 1,
|
||||
/mob/living/simple_animal/hostile/retaliate/spaceman = 1,
|
||||
/obj/item/clothing/mask/gas/clown_hat = 4,
|
||||
/obj/item/clothing/shoes/clown_shoes = 3,
|
||||
/obj/item/bikehorn = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/cream = 3)
|
||||
|
||||
/obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner
|
||||
name = "2% chance xeno egg spawner"
|
||||
loot = list(
|
||||
|
||||
@@ -5,48 +5,26 @@ 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/beard,
|
||||
new /datum/disease_ability/symptom/medium/hallucigen,
|
||||
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/oxygen,
|
||||
new /datum/disease_ability/symptom/powerful/heal/chem,
|
||||
new /datum/disease_ability/symptom/powerful/heal/coma,
|
||||
new /datum/disease_ability/symptom/powerful/heal/teleport,
|
||||
new /datum/disease_ability/symptom/powerful/heal/growth,
|
||||
new /datum/disease_ability/symptom/powerful/heal/EMP,
|
||||
new /datum/disease_ability/symptom/powerful/heal/sweat,
|
||||
new /datum/disease_ability/symptom/powerful/wizarditis,
|
||||
new /datum/disease_ability/symptom/medium/pierrot,
|
||||
new /datum/disease_ability/symptom/medium/cockroach,
|
||||
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/cough(),
|
||||
new /datum/disease_ability/symptom/sneeze(),\
|
||||
new /datum/disease_ability/symptom/hallucigen(),
|
||||
new /datum/disease_ability/symptom/choking(),
|
||||
new /datum/disease_ability/symptom/confusion(),
|
||||
new /datum/disease_ability/symptom/youth(),
|
||||
new /datum/disease_ability/symptom/vomit(),
|
||||
new /datum/disease_ability/symptom/voice_change(),
|
||||
new /datum/disease_ability/symptom/visionloss(),
|
||||
new /datum/disease_ability/symptom/viraladaptation(),
|
||||
new /datum/disease_ability/symptom/vitiligo(),
|
||||
new /datum/disease_ability/symptom/sensory_restoration(),
|
||||
new /datum/disease_ability/symptom/itching(),
|
||||
new /datum/disease_ability/symptom/weight_loss(),
|
||||
new /datum/disease_ability/symptom/metabolism_heal(),
|
||||
new /datum/disease_ability/symptom/coma_heal()
|
||||
))
|
||||
|
||||
/datum/disease_ability
|
||||
var/name
|
||||
@@ -256,180 +234,144 @@ new /datum/disease_ability/symptom/powerful/youth
|
||||
O.AddComponent(/datum/component/infective, D.disease_template, 300)
|
||||
StartCooldown()
|
||||
return TRUE
|
||||
/*******************BASE SYMPTOM TYPES*******************/
|
||||
// cost is for convenience and can be changed. If you're changing req_tot_points then don't use the subtype...
|
||||
//healing no longer costs more, sans regen coma, due to how healing symptoms have been made scary
|
||||
|
||||
/datum/disease_ability/symptom/mild
|
||||
cost = 2
|
||||
required_total_points = 4
|
||||
category = "Symptom (Weak)"
|
||||
//passive symptom abilities
|
||||
|
||||
/datum/disease_ability/symptom/medium
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
category = "Symptom"
|
||||
|
||||
/datum/disease_ability/symptom/medium/heal
|
||||
cost = 5
|
||||
category = "Symptom (+)"
|
||||
|
||||
/datum/disease_ability/symptom/powerful
|
||||
cost = 4
|
||||
required_total_points = 16
|
||||
category = "Symptom (Strong)"
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal
|
||||
cost = 8
|
||||
category = "Symptom (Strong+)"
|
||||
|
||||
/******MILD******/
|
||||
|
||||
/datum/disease_ability/symptom/mild/cough
|
||||
/datum/disease_ability/symptom/cough
|
||||
name = "Involuntary Coughing"
|
||||
symptoms = list(/datum/symptom/cough)
|
||||
cost = 2
|
||||
required_total_points = 4
|
||||
short_desc = "Cause victims to cough intermittently."
|
||||
long_desc = "Cause victims to cough intermittently, spreading your infection if your transmissibility is high."
|
||||
|
||||
/datum/disease_ability/symptom/mild/sneeze
|
||||
/datum/disease_ability/symptom/sneeze
|
||||
name = "Involuntary Sneezing"
|
||||
symptoms = list(/datum/symptom/sneeze)
|
||||
cost = 2
|
||||
required_total_points = 4
|
||||
short_desc = "Cause victims to sneeze intermittently."
|
||||
long_desc = "Cause victims to sneeze intermittently, spreading your infection and also increasing transmissibility and resistance, at the cost of stealth."
|
||||
|
||||
/******MEDIUM******/
|
||||
|
||||
/datum/disease_ability/symptom/medium/beard
|
||||
/datum/disease_ability/symptom/beard
|
||||
//I don't think I need to justify the fact that this is the best symptom
|
||||
name = "Beard Growth"
|
||||
symptoms = list(/datum/symptom/beard)
|
||||
cost = 1
|
||||
required_total_points = 8
|
||||
short_desc = "Cause all victims to grow a luscious beard."
|
||||
long_desc = "Cause all victims to grow a luscious beard. Ineffective against Santa Claus."
|
||||
long_desc = "Cause all victims to grow a luscious beard. Decreases stats slightly. Ineffective against Santa Claus."
|
||||
|
||||
/datum/disease_ability/symptom/medium/hallucigen
|
||||
/datum/disease_ability/symptom/hallucigen
|
||||
name = "Hallucinations"
|
||||
symptoms = list(/datum/symptom/hallucigen)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Cause victims to hallucinate."
|
||||
long_desc = "Cause victims to hallucinate. Decreases stats, especially resistance."
|
||||
|
||||
/datum/disease_ability/symptom/medium/confusion
|
||||
/datum/disease_ability/symptom/choking
|
||||
name = "Choking"
|
||||
symptoms = list(/datum/symptom/choking)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Cause victims to choke."
|
||||
long_desc = "Cause victims to choke, threatening asphyxiation. Decreases stats, especially transmissibility."
|
||||
|
||||
|
||||
/datum/disease_ability/symptom/confusion
|
||||
name = "Confusion"
|
||||
symptoms = list(/datum/symptom/confusion)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Cause victims to become confused."
|
||||
long_desc = "Cause victims to become confused intermittently."
|
||||
|
||||
/datum/disease_ability/symptom/medium/vomit
|
||||
symptoms = list(/datum/symptom/vomit)
|
||||
short_desc = "Cause victims to vomit."
|
||||
long_desc = "Cause victims to vomit. Slightly increases transmissibility. Vomiting also also causes the victims to lose nutrition and removes some toxin damage."
|
||||
|
||||
/datum/disease_ability/symptom/medium/voice_change
|
||||
symptoms = list(/datum/symptom/voice_change)
|
||||
short_desc = "Change the voice of victims."
|
||||
long_desc = "Change the voice of victims, causing confusion in communications."
|
||||
|
||||
/datum/disease_ability/symptom/medium/visionloss
|
||||
symptoms = list(/datum/symptom/visionloss)
|
||||
short_desc = "Damage the eyes of victims, eventually causing blindness."
|
||||
long_desc = "Damage the eyes of victims, eventually causing blindness. Decreases all stats."
|
||||
|
||||
/datum/disease_ability/symptom/medium/deafness
|
||||
symptoms = list(/datum/symptom/deafness)
|
||||
|
||||
/datum/disease_ability/symptom/medium/fever
|
||||
symptoms = list(/datum/symptom/fever)
|
||||
|
||||
/datum/disease_ability/symptom/medium/shivering
|
||||
symptoms = list(/datum/symptom/shivering)
|
||||
|
||||
/datum/disease_ability/symptom/medium/headache
|
||||
symptoms = list(/datum/symptom/headache)
|
||||
|
||||
/datum/disease_ability/symptom/medium/nano_boost
|
||||
symptoms = list(/datum/symptom/nano_boost)
|
||||
|
||||
/datum/disease_ability/symptom/medium/nano_destroy
|
||||
symptoms = list(/datum/symptom/nano_destroy)
|
||||
|
||||
/datum/disease_ability/symptom/medium/viraladaptation
|
||||
symptoms = list(/datum/symptom/viraladaptation)
|
||||
short_desc = "Cause your infection to become more resistant to detection and eradication."
|
||||
long_desc = "Cause your infection to mimic the function of normal body cells, becoming much harder to spot and to eradicate, but reducing its speed."
|
||||
|
||||
/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/revitiligo
|
||||
symptoms = list(/datum/symptom/revitiligo)
|
||||
|
||||
/datum/disease_ability/symptom/medium/pierrot
|
||||
symptoms = list(/datum/symptom/pierrot)
|
||||
|
||||
/datum/disease_ability/symptom/medium/cockroach
|
||||
symptoms = list(/datum/symptom/cockroach)
|
||||
|
||||
/datum/disease_ability/symptom/medium/itching
|
||||
symptoms = list(/datum/symptom/itching)
|
||||
short_desc = "Cause victims to itch."
|
||||
long_desc = "Cause victims to itch, increasing all stats except stealth."
|
||||
|
||||
/datum/disease_ability/symptom/medium/heal/weight_loss
|
||||
symptoms = list(/datum/symptom/weight_loss)
|
||||
short_desc = "Cause victims to lose weight."
|
||||
long_desc = "Cause victims to lose weight, and make it almost impossible for them to gain nutrition from food. Reduced nutrition allows your infection to spread more easily from hosts, especially by sneezing."
|
||||
|
||||
/datum/disease_ability/symptom/medium/heal/sensory_restoration
|
||||
symptoms = list(/datum/symptom/sensory_restoration)
|
||||
short_desc = "Regenerate eye and ear damage of victims."
|
||||
long_desc = "Regenerate eye and ear damage of victims."
|
||||
|
||||
/datum/disease_ability/symptom/medium/heal/mind_restoration
|
||||
symptoms = list(/datum/symptom/mind_restoration)
|
||||
|
||||
/******POWERFUL******/
|
||||
|
||||
/datum/disease_ability/symptom/powerful/fire
|
||||
symptoms = list(/datum/symptom/fire)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/flesh_eating
|
||||
symptoms = list(/datum/symptom/flesh_eating)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/wizarditis //strong because it can remove hardsuits and bio protection
|
||||
symptoms = list(/datum/symptom/wizarditis)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/genetic_mutation
|
||||
symptoms = list(/datum/symptom/genetic_mutation)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/inorganic_adaptation
|
||||
symptoms = list(/datum/symptom/inorganic_adaptation)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/narcolepsy
|
||||
symptoms = list(/datum/symptom/narcolepsy)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/youth
|
||||
/datum/disease_ability/symptom/youth
|
||||
name = "Eternal Youth"
|
||||
symptoms = list(/datum/symptom/youth)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Cause victims to become eternally young."
|
||||
long_desc = "Cause victims to become eternally young. Provides boosts to all stats except transmissibility."
|
||||
|
||||
/****HEALING SUBTYPE****/
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal/oxygen
|
||||
symptoms = list(/datum/symptom/oxygen)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal/chem
|
||||
symptoms = list(/datum/symptom/heal/chem)
|
||||
/datum/disease_ability/symptom/vomit
|
||||
name = "Vomiting"
|
||||
symptoms = list(/datum/symptom/vomit)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Cause victims to vomit."
|
||||
long_desc = "Cause victims to vomit. Slightly increases transmissibility. Vomiting also also causes the victims to lose nutrition and removes some toxin damage."
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal/coma
|
||||
/datum/disease_ability/symptom/voice_change
|
||||
name = "Voice Changing"
|
||||
symptoms = list(/datum/symptom/voice_change)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Change the voice of victims."
|
||||
long_desc = "Change the voice of victims, causing confusion in communications."
|
||||
|
||||
/datum/disease_ability/symptom/visionloss
|
||||
name = "Vision Loss"
|
||||
symptoms = list(/datum/symptom/visionloss)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Damage the eyes of victims, eventually causing blindness."
|
||||
long_desc = "Damage the eyes of victims, eventually causing blindness. Decreases all stats."
|
||||
|
||||
/datum/disease_ability/symptom/viraladaptation
|
||||
name = "Self-Adaptation"
|
||||
symptoms = list(/datum/symptom/viraladaptation)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Cause your infection to become more resistant to detection and eradication."
|
||||
long_desc = "Cause your infection to mimic the function of normal body cells, becoming much harder to spot and to eradicate, but reducing its speed."
|
||||
|
||||
/datum/disease_ability/symptom/vitiligo
|
||||
name = "Skin Paleness"
|
||||
symptoms = list(/datum/symptom/vitiligo)
|
||||
cost = 1
|
||||
required_total_points = 8
|
||||
short_desc = "Cause victims to become pale."
|
||||
long_desc = "Cause victims to become pale. Decreases all stats."
|
||||
|
||||
/datum/disease_ability/symptom/sensory_restoration
|
||||
name = "Sensory Restoration"
|
||||
symptoms = list(/datum/symptom/sensory_restoration)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Regenerate eye and ear damage of victims."
|
||||
long_desc = "Regenerate eye and ear damage of victims."
|
||||
|
||||
/datum/disease_ability/symptom/itching
|
||||
name = "Itching"
|
||||
symptoms = list(/datum/symptom/itching)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Cause victims to itch."
|
||||
long_desc = "Cause victims to itch, increasing all stats except stealth."
|
||||
|
||||
/datum/disease_ability/symptom/weight_loss
|
||||
name = "Weight Loss"
|
||||
symptoms = list(/datum/symptom/weight_loss)
|
||||
cost = 4
|
||||
required_total_points = 8
|
||||
short_desc = "Cause victims to lose weight."
|
||||
long_desc = "Cause victims to lose weight, and make it almost impossible for them to gain nutrition from food. Reduced nutrition allows your infection to spread more easily from hosts, especially by sneezing."
|
||||
|
||||
/datum/disease_ability/symptom/metabolism_heal
|
||||
name = "Metabolic Boost"
|
||||
symptoms = list(/datum/symptom/heal/metabolism)
|
||||
cost = 4
|
||||
required_total_points = 16
|
||||
short_desc = "Increase the metabolism of victims, causing them to process chemicals and grow hungry faster."
|
||||
long_desc = "Increase the metabolism of victims, causing them to process chemicals twice as fast and grow hungry more quickly."
|
||||
|
||||
/datum/disease_ability/symptom/coma_heal
|
||||
name = "Regenerative Coma"
|
||||
symptoms = list(/datum/symptom/heal/coma)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal/teleport
|
||||
symptoms = list(/datum/symptom/teleport)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal/growth
|
||||
symptoms = list(/datum/symptom/growth)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal/EMP
|
||||
symptoms = list(/datum/symptom/EMP)
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal/sweat
|
||||
symptoms = list(/datum/symptom/sweat)
|
||||
cost = 8
|
||||
required_total_points = 16
|
||||
short_desc = "Cause victims to fall into a healing coma when hurt."
|
||||
long_desc = "Cause victims to fall into a healing coma when hurt."
|
||||
|
||||
@@ -467,8 +467,7 @@
|
||||
/obj/item/reagent_containers/glass/bottle/mutagen = 1,
|
||||
/obj/item/reagent_containers/glass/bottle/plasma = 1,
|
||||
/obj/item/reagent_containers/glass/bottle/synaptizine = 1,
|
||||
/obj/item/reagent_containers/glass/bottle/formaldehyde = 1,
|
||||
/obj/item/reagent_containers/glass/bottle/viralbase = 1)
|
||||
/obj/item/reagent_containers/glass/bottle/formaldehyde = 1)
|
||||
|
||||
// ----------------------------
|
||||
// Disk """fridge"""
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
var/obj/item/clothing/CH = head
|
||||
if (CS.clothing_flags & CH.clothing_flags & THICKMATERIAL)
|
||||
return 1
|
||||
if(HAS_TRAIT(src, TRAIT_BEEFRIEND))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
@@ -174,15 +174,3 @@
|
||||
var/obj/item/clothing/head/helmet/justice/escape/helmet = new(src)
|
||||
equip_to_slot_or_del(helmet,SLOT_HEAD)
|
||||
helmet.attack_self(src) // todo encapsulate toggle
|
||||
|
||||
/mob/living/carbon/monkey/tumor
|
||||
name = "living teratoma"
|
||||
verb_say = "blabbers"
|
||||
initial_language_holder = /datum/language_holder/monkey
|
||||
icon = 'icons/mob/monkey.dmi'
|
||||
icon_state = ""
|
||||
butcher_results = list(/obj/effect/spawner/lootdrop/teratoma/minor = 5, /obj/effect/spawner/lootdrop/teratoma/major = 1)
|
||||
type_of_meat = /obj/effect/spawner/lootdrop/teratoma/minor
|
||||
aggressive = TRUE
|
||||
bodyparts = list(/obj/item/bodypart/chest/monkey/teratoma, /obj/item/bodypart/head/monkey/teratoma, /obj/item/bodypart/l_arm/monkey/teratoma,
|
||||
/obj/item/bodypart/r_arm/monkey/teratoma, /obj/item/bodypart/r_leg/monkey/teratoma, /obj/item/bodypart/l_leg/monkey/teratoma)
|
||||
|
||||
@@ -56,10 +56,6 @@
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/obj/item/I in contents)
|
||||
I.on_mob_death(src, gibbed)
|
||||
for(var/datum/disease/advance/D in diseases)
|
||||
for(var/symptom in D.symptoms)
|
||||
var/datum/symptom/S = symptom
|
||||
S.OnDeath(D)
|
||||
if(mind && mind.name && mind.active && !istype(T.loc, /area/ctf))
|
||||
var/rendered = "<span class='deadsay'><b>[mind.name]</b> has died at <b>[get_area_name(T)]</b>.</span>"
|
||||
deadchat_broadcast(rendered, follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE)
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/mob/living/simple_animal/hostile/heart
|
||||
name = "Heart"
|
||||
desc = "A living heart. It's angry!."
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "heart-on"
|
||||
icon_living = "heart-on"
|
||||
icon_dead = "heart-on"
|
||||
gender = NEUTER
|
||||
turns_per_move = 5
|
||||
speak_emote = list("beats")
|
||||
emote_see = list("beats")
|
||||
a_intent = INTENT_HARM
|
||||
maxHealth = 24
|
||||
health = 24
|
||||
speed = -1
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
response_help = "touches"
|
||||
response_disarm = "beats"
|
||||
response_harm = "breaks"
|
||||
density = FALSE
|
||||
attacktext = "beats"
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
attack_sound = 'sound/effects/singlebeat.ogg'
|
||||
stat_attack = UNCONSCIOUS
|
||||
attack_same = 1
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
see_in_dark = 8
|
||||
deathmessage = "falls lifeless."
|
||||
del_on_death = 1
|
||||
loot = list(/obj/item/organ/heart)
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 150
|
||||
maxbodytemp = 500
|
||||
@@ -611,16 +611,13 @@
|
||||
nutriment_factor = 15 * REAGENTS_METABOLISM
|
||||
metabolization_rate = 1 * REAGENTS_METABOLISM
|
||||
taste_description = "sweetness"
|
||||
var/power = 0
|
||||
|
||||
/datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M)
|
||||
if(power == 0)
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/sugar,3)
|
||||
if(prob(55))
|
||||
M.adjustBruteLoss(-1*REM+power, 0)
|
||||
M.adjustFireLoss(-1*REM+power, 0)
|
||||
M.adjustOxyLoss(-1*REM+power, 0)
|
||||
M.adjustToxLoss(-1*REM+power, 0)
|
||||
M.adjustBruteLoss(-1*REM, 0)
|
||||
M.adjustFireLoss(-1*REM, 0)
|
||||
M.adjustOxyLoss(-1*REM, 0)
|
||||
M.adjustToxLoss(-1*REM, 0)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/honey/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
@@ -631,12 +628,6 @@
|
||||
S.success_multiplier = max(0.6, S.success_multiplier) // +60% success probability on each step, compared to bacchus' blessing's ~46%
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/honey/special
|
||||
name = "Royal Honey"
|
||||
id = "royalhoney"
|
||||
description = "A special honey which heals the imbiber far faster than normal honey"
|
||||
power = 1
|
||||
|
||||
/datum/reagent/consumable/mayonnaise
|
||||
name = "Mayonnaise"
|
||||
id = "mayonnaise"
|
||||
|
||||
@@ -1582,25 +1582,6 @@
|
||||
taste_description = "rainbows"
|
||||
var/no_mob_color = FALSE
|
||||
|
||||
/datum/reagent/consumable/laughter/laughtervirusfood
|
||||
name = "anomolous virus food"
|
||||
color = "#ffa6ff" //rgb: 255,166,255
|
||||
taste_description = "a bad idea"
|
||||
id = "laughtervirusfood"
|
||||
|
||||
/datum/reagent/consumable/virus_food/advvirusfood
|
||||
name = "highly unstable virus food"
|
||||
color = "#ffffff" //rgb: 255,255,255 ITS PURE WHITE CMON
|
||||
taste_description = "an EXTREMELY bad idea"
|
||||
id = "advvirusfood"
|
||||
|
||||
/datum/reagent/consumable/virus_food/viralbase
|
||||
name = "Experimental viral base"
|
||||
description = "Recently discovered by Nanotrasen's top scientists after years of research, this substance can be used as the base for extremely rare and extremely dangerous viruses once exposed to uranium."
|
||||
color = "#fff0da"
|
||||
taste_description = "tears of scientists"
|
||||
id = "viralbase"
|
||||
|
||||
/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/M)
|
||||
if(!no_mob_color)
|
||||
M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
|
||||
|
||||
@@ -230,19 +230,6 @@
|
||||
if(D)
|
||||
D.Evolve(level_min, level_max)
|
||||
|
||||
/datum/chemical_reaction/virus_food_laughter
|
||||
name = "Anomolous virus food"
|
||||
id = "virusfood_laughter"
|
||||
results = list("laughtervirusfood" = 1)
|
||||
required_reagents = list("laughter" = 5, "virusfood" = 1)
|
||||
|
||||
/datum/chemical_reaction/virus_food_admin
|
||||
name = "Highly unstable virus Food"
|
||||
id = "virusfood_admin"
|
||||
results = list("advvirusfood" = 1)
|
||||
required_reagents = list("viralbase" = 1, "uranium" = 20)
|
||||
mix_message = "The mixture turns every colour of the rainbow, soon settling on a bright white. There's no way this isn't a good idea."
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_2
|
||||
|
||||
name = "Mix Virus 2"
|
||||
@@ -330,23 +317,6 @@
|
||||
required_reagents = list("uraniumplasmavirusfood_stable" = 1)
|
||||
level_min = 8
|
||||
level_max = 8
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_13
|
||||
|
||||
name = "Mix Virus 13"
|
||||
id = "mixvirus13"
|
||||
required_reagents = list("laughtervirusfood" = 1)
|
||||
level_min = 0
|
||||
level_max = 0
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_14
|
||||
|
||||
name = "Mix Virus 14"
|
||||
id = "mixvirus14"
|
||||
required_reagents = list("advvirusfood" = 1)
|
||||
level_min = 9
|
||||
level_max = 9
|
||||
|
||||
|
||||
/datum/chemical_reaction/mix_virus/rem_virus
|
||||
|
||||
|
||||
@@ -126,11 +126,6 @@
|
||||
/obj/item/reagent_containers/glass/beaker/on_reagent_change(changetype)
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/viralbase
|
||||
name = "Highly potent Viral Base Bottle"
|
||||
desc = "A small bottle. Contains a trace amount of a substance found by scientists that can be used to create extremely advanced diseases once exposed to uranium."
|
||||
list_reagents = list("viralbase" = 1)
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/update_icon()
|
||||
if(!cached_icon)
|
||||
cached_icon = icon_state
|
||||
|
||||
@@ -423,10 +423,7 @@
|
||||
#include "code\datums\diseases\advance\advance.dm"
|
||||
#include "code\datums\diseases\advance\presets.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\beard.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\beesymptom.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\braindamage.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\choking.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\cockroach.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\confusion.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\cough.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\deafness.dm"
|
||||
@@ -434,18 +431,13 @@
|
||||
#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"
|
||||
#include "code\datums\diseases\advance\symptoms\heartattack.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\itching.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\lubefeet.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\nanites.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\narcolepsy.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\oxygen.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\pierrot.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\radiation.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\sensory.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\shedding.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\shivering.dm"
|
||||
@@ -458,7 +450,6 @@
|
||||
#include "code\datums\diseases\advance\symptoms\voice_change.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\vomit.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\weight.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\wizarditis.dm"
|
||||
#include "code\datums\diseases\advance\symptoms\youth.dm"
|
||||
#include "code\datums\helper_datums\events.dm"
|
||||
#include "code\datums\helper_datums\getrev.dm"
|
||||
@@ -2189,7 +2180,6 @@
|
||||
#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\goose.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\headcrab.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\heart.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\illusion.dm"
|
||||
|
||||
Reference in New Issue
Block a user