Add files via upload

This commit is contained in:
zeskorion
2020-01-09 21:05:38 -08:00
committed by GitHub
parent 2104ba551b
commit 52afe3d2a8
11 changed files with 657 additions and 144 deletions
@@ -0,0 +1,69 @@
/datum/symptom/beesease
name = "Bee Infestation"
desc = "Causes the host to cough toxin bees and occasionally synthesize toxin."
stealth = -2
resistance = 2
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> Host synthesizes honey instead of toxins, bees now sting with honey instead of toxin.<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
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(prob(15))
to_chat(M, "<span class='notice'>Your stomach squirms.</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_list(list(/datum/reagent/consumable/honey = 5, /datum/reagent/medicine/insulin = 15)) //honey rooooughly equivalent to 1.5u omnizine. due to how honey synthesizes 7.5 sugar per unit, the large amounts of insulin are necessary to prevent hyperglycaemic shock due to the bees
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(honey)
var/mob/living/simple_animal/hostile/poison/bees/B = new(M.loc)
B.assign_reagent(GLOB.chemical_reagents_list[/datum/reagent/consumable/honey])
else 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)
@@ -0,0 +1,52 @@
/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))
M.adjustBrainLoss(rand(5,90), 200)
to_chat(M, "<span class='danger'>Your brain hurts immensely!</span>")
else
if(prob(35))
M.adjustBrainLoss(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)
@@ -0,0 +1,58 @@
/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)
+14 -12
View File
@@ -67,14 +67,14 @@ Bonus
/datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A)
M.adjust_fire_stacks(1 * power)
M.adjustFireLoss(3 * power)
M.take_overall_damage(burn = 3 * power, required_status = BODYPART_ORGANIC)
if(infective)
A.spread(2)
return 1
/datum/symptom/fire/proc/Firestacks_stage_5(mob/living/M, datum/disease/advance/A)
M.adjust_fire_stacks(3 * power)
M.adjustFireLoss(5 * power)
M.take_overall_damage(burn = 5 * power, required_status = BODYPART_ORGANIC)
if(infective)
A.spread(4)
return 1
@@ -105,7 +105,7 @@ Bonus
resistance = -2
stage_speed = -2
transmittable = -2
level = 7
level = 9
severity = 6
base_message_chance = 100
symptom_delay_min = 30
@@ -137,32 +137,34 @@ 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>")
M.emote("scream")
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))
Alkali_fire_stage_5(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")
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),0,0,2 * explosion_power)
Alkali_fire_stage_5(M, A)
/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.adjustFireLoss(get_stacks/2)
M.take_overall_damage(burn = get_stacks / 2, required_status = BODYPART_ORGANIC)
if(chems)
M.reagents.add_reagent("clf3", 2 * power)
M.reagents.add_reagent(/datum/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.adjustFireLoss(get_stacks)
M.take_overall_damage(burn = get_stacks, required_status = BODYPART_ORGANIC)
if(chems)
M.reagents.add_reagent_list(list("napalm" = 4 * power, "clf3" = 4 * power))
M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power))
return 1
@@ -1,130 +1,135 @@
/*
//////////////////////////////////////
Necrotizing Fasciitis (AKA Flesh-Eating Disease)
Very very noticable.
Lowers resistance tremendously.
No changes to stage speed.
Decreases transmittablity temrendously.
Fatal Level.
Bonus
Deals brute damage over time.
//////////////////////////////////////
*/
/datum/symptom/flesh_eating
name = "Necrotizing Fasciitis"
desc = "The virus aggressively attacks body cells, necrotizing tissues and organs."
stealth = -3
resistance = -4
stage_speed = 0
transmittable = -4
level = 6
severity = 5
base_message_chance = 50
symptom_delay_min = 15
symptom_delay_max = 60
var/bleed = FALSE
var/pain = FALSE
threshold_desc = "<b>Resistance 7:</b> Host will bleed profusely during necrosis.<br>\
<b>Transmission 8:</b> Causes extreme pain to the host, weakening it."
/datum/symptom/flesh_eating/Start(datum/disease/advance/A)
if(!..())
return
if(A.properties["resistance"] >= 7) //extra bleeding
bleed = TRUE
if(A.properties["transmittable"] >= 8) //extra stamina damage
pain = TRUE
/datum/symptom/flesh_eating/Activate(datum/disease/advance/A)
if(!..())
return
var/mob/living/M = A.affected_mob
switch(A.stage)
if(2,3)
if(prob(base_message_chance))
to_chat(M, "<span class='warning'>[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]</span>")
if(4,5)
to_chat(M, "<span class='userdanger'>[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]</span>")
Flesheat(M, A)
/datum/symptom/flesh_eating/proc/Flesheat(mob/living/M, datum/disease/advance/A)
var/get_damage = rand(15,25) * power
M.adjustBruteLoss(get_damage)
if(pain)
M.adjustStaminaLoss(get_damage)
if(bleed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.bleed_rate += 5 * power
return 1
/*
//////////////////////////////////////
Autophagocytosis (AKA Programmed mass cell death)
Very noticable.
Lowers resistance.
Fast stage speed.
Decreases transmittablity.
Fatal Level.
Bonus
Deals brute damage over time.
//////////////////////////////////////
*/
/datum/symptom/flesh_death
name = "Autophagocytosis Necrosis"
desc = "The virus rapidly consumes infected cells, leading to heavy and widespread damage."
stealth = -2
resistance = -2
stage_speed = 1
transmittable = -2
level = 7
severity = 6
base_message_chance = 50
symptom_delay_min = 3
symptom_delay_max = 6
var/chems = FALSE
var/zombie = FALSE
threshold_desc = "<b>Stage Speed 7:</b> Synthesizes Heparin and Lipolicide inside the host, causing increased bleeding and hunger.<br>\
<b>Stealth 5:</b> The symptom remains hidden until active."
/datum/symptom/flesh_death/Start(datum/disease/advance/A)
if(!..())
return
if(A.properties["stealth"] >= 5)
suppress_warning = TRUE
if(A.properties["stage_rate"] >= 7) //bleeding and hunger
chems = TRUE
/datum/symptom/flesh_death/Activate(datum/disease/advance/A)
if(!..())
return
var/mob/living/M = A.affected_mob
switch(A.stage)
if(2,3)
if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "<span class='warning'>[pick("You feel your body break apart.", "Your skin rubs off like dust.")]</span>")
if(4,5)
if(prob(base_message_chance / 2)) //reduce spam
to_chat(M, "<span class='userdanger'>[pick("You feel your muscles weakening.", "Some of your skin detaches itself.", "You feel sandy.")]</span>")
Flesh_death(M, A)
/datum/symptom/flesh_death/proc/Flesh_death(mob/living/M, datum/disease/advance/A)
var/get_damage = rand(6,10)
M.adjustBruteLoss(get_damage)
if(chems)
M.reagents.add_reagent_list(list("heparin" = 2, "lipolicide" = 2))
if(zombie)
M.reagents.add_reagent("romerol", 1)
return 1
/*
//////////////////////////////////////
Necrotizing Fasciitis (AKA Flesh-Eating Disease)
Very very noticable.
Lowers resistance tremendously.
No changes to stage speed.
Decreases transmittablity temrendously.
Fatal Level.
Bonus
Deals brute damage over time.
//////////////////////////////////////
*/
/datum/symptom/flesh_eating
name = "Necrotizing Fasciitis"
desc = "The virus aggressively attacks body cells, necrotizing tissues and organs."
stealth = -3
resistance = -4
stage_speed = 0
transmittable = -4
level = 6
severity = 5
base_message_chance = 50
symptom_delay_min = 15
symptom_delay_max = 60
var/bleed = FALSE
var/pain = FALSE
threshold_desc = "<b>Resistance 7:</b> Host will bleed profusely during necrosis.<br>\
<b>Transmission 8:</b> Causes extreme pain to the host, weakening it."
/datum/symptom/flesh_eating/Start(datum/disease/advance/A)
if(!..())
return
if(A.properties["resistance"] >= 7) //extra bleeding
bleed = TRUE
if(A.properties["transmittable"] >= 8) //extra stamina damage
pain = TRUE
/datum/symptom/flesh_eating/Activate(datum/disease/advance/A)
if(!..())
return
var/mob/living/M = A.affected_mob
switch(A.stage)
if(2,3)
if(prob(base_message_chance))
to_chat(M, "<span class='warning'>[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]</span>")
if(4,5)
to_chat(M, "<span class='userdanger'>[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]</span>")
Flesheat(M, A)
/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)
if(pain)
M.adjustStaminaLoss(get_damage * 2)
if(bleed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.bleed_rate += 5 * power
return 1
/*
//////////////////////////////////////
Autophagocytosis (AKA Programmed mass cell death)
Very noticable.
Lowers resistance.
Fast stage speed.
Decreases transmittablity.
Fatal Level.
Bonus
Deals brute damage over time.
//////////////////////////////////////
*/
/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"
stealth = -2
resistance = -2
stage_speed = 1
transmittable = -2
level = 9
severity = 6
base_message_chance = 50
symptom_delay_min = 3
symptom_delay_max = 6
var/chems = FALSE
var/zombie = FALSE
threshold_desc = "<b>Stage Speed 7:</b> Synthesizes Heparin and Lipolicide inside the host, causing increased bleeding and hunger.<br>\
<b>Stealth 5:</b> The symptom remains hidden until active."
/datum/symptom/flesh_death/Start(datum/disease/advance/A)
if(!..())
return
if(A.properties["stealth"] >= 5)
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(!..())
return
var/mob/living/M = A.affected_mob
switch(A.stage)
if(2,3)
if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "<span class='warning'>[pick("You feel your body break apart.", "Your skin rubs off like dust.")]</span>")
if(4,5)
if(prob(base_message_chance / 2)) //reduce spam
to_chat(M, "<span class='userdanger'>[pick("You feel your muscles weakening.", "Some of your skin detaches itself.", "You feel sandy.")]</span>")
Flesh_death(M, A)
/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)
if(chems)
M.reagents.add_reagent_list(list(/datum/reagent/toxin/heparin = 2, /datum/reagent/toxin/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)
return 1
@@ -0,0 +1,66 @@
/*
//////////////////////////////////////
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["transmission"] >= 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)
@@ -0,0 +1,73 @@
/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
@@ -0,0 +1,79 @@
/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
@@ -0,0 +1,51 @@
/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 = 1
symptom_delay_max = 4
var/fastrads = FALSE
var/radothers = FALSE
threshold_desc = "<b>Transmission 12:</b> Makes the host irradiate others around them as well.<br>\
<b>Speed 8:</b> Host takes radiation damage faster."
/datum/symptom/radiation/Start(datum/disease/advance/A)
if(!..())
return
if(A.properties["transmission"] >= 10)
radothers = TRUE
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)
if(fastrads)
radiate(M, 80)
else
radiate(M, 40)
if(radothers && A.stage == 5)
if(prob(40))
M.visible_message("<span class='danger'>[M] glows green for a moment!</span>", \
"<span class='userdanger'>You feel a massive wave of pain flow through you!</span>")
radiation_pulse(M, 20)
/datum/symptom/radiation/proc/radiate(mob/living/carbon/M, chance)
if(prob(chance))
to_chat(M, "<span class='danger'>You feel a wave of pain throughout your body!</span>")
M.radiation += 4
@@ -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 = 3
stealth = 1
resistance = 2
stage_speed = 1
transmittable = 2
level = 5
@@ -46,3 +46,61 @@ 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