From 52afe3d2a887a5663b2f652ec5864982b9642cce Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:05:38 -0800 Subject: [PATCH] Add files via upload --- .../diseases/advance/symptoms/beesymptom.dm | 69 +++++ .../diseases/advance/symptoms/braindamage.dm | 52 ++++ .../diseases/advance/symptoms/cockroach.dm | 58 ++++ code/datums/diseases/advance/symptoms/fire.dm | 26 +- .../diseases/advance/symptoms/flesh_eating.dm | 265 +++++++++--------- .../diseases/advance/symptoms/heartattack.dm | 66 +++++ .../diseases/advance/symptoms/lubefeet.dm | 73 +++++ .../diseases/advance/symptoms/pierrot.dm | 79 ++++++ .../diseases/advance/symptoms/radiation.dm | 51 ++++ code/datums/diseases/advance/symptoms/skin.dm | 4 +- .../datums/diseases/advance/symptoms/viral.dm | 58 ++++ 11 files changed, 657 insertions(+), 144 deletions(-) create mode 100644 code/datums/diseases/advance/symptoms/beesymptom.dm create mode 100644 code/datums/diseases/advance/symptoms/braindamage.dm create mode 100644 code/datums/diseases/advance/symptoms/cockroach.dm create mode 100644 code/datums/diseases/advance/symptoms/heartattack.dm create mode 100644 code/datums/diseases/advance/symptoms/lubefeet.dm create mode 100644 code/datums/diseases/advance/symptoms/pierrot.dm create mode 100644 code/datums/diseases/advance/symptoms/radiation.dm diff --git a/code/datums/diseases/advance/symptoms/beesymptom.dm b/code/datums/diseases/advance/symptoms/beesymptom.dm new file mode 100644 index 00000000..b56f2dc8 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/beesymptom.dm @@ -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 = "Resistance 14: Host synthesizes honey instead of toxins, bees now sting with honey instead of toxin.
\ + Transmission 10: 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, "You taste honey in your mouth.") + if(3) + if(prob(15)) + to_chat(M, "Your stomach tingles.") + if(prob(15)) + if(honey) + to_chat(M, "You can't get the taste of honey out of your mouth!.") + M.reagents.add_reagent(/datum/reagent/consumable/honey, 2) + else + to_chat(M, "Your stomach stings painfully.") + M.adjustToxLoss(5) + M.updatehealth() + if(4, 5) + if(prob(15)) + to_chat(M, "Your stomach squirms.") + if(prob(15)) + if(honey) + to_chat(M, "You can't get the taste of honey out of your mouth!.") + 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, "Your stomach stings painfully.") + M.adjustToxLoss(5) + M.updatehealth() + if(prob(10)) + M.visible_message("[M] buzzes.", \ + "Your stomach buzzes violently!") + if(prob(15)) + to_chat(M, "You feel something moving in your throat.") + if(prob(10)) + M.visible_message("[M] coughs up a bee!", \ + "You cough up a bee!") + 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) diff --git a/code/datums/diseases/advance/symptoms/braindamage.dm b/code/datums/diseases/advance/symptoms/braindamage.dm new file mode 100644 index 00000000..c8ee596e --- /dev/null +++ b/code/datums/diseases/advance/symptoms/braindamage.dm @@ -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 = "transmission 12: The disease's damage reaches lethal levels.
\ + Speed 9: 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, "Your head feels strange...") + if(2, 3) + if(prob(10)) + to_chat(M, "Your brain begins hurting...") + if(4, 5) + if(lethal) + if(prob(35)) + M.adjustBrainLoss(rand(5,90), 200) + to_chat(M, "Your brain hurts immensely!") + else + if(prob(35)) + M.adjustBrainLoss(rand(5,90), 120) + to_chat(M, "Your head hurts immensely!") + 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) diff --git a/code/datums/diseases/advance/symptoms/cockroach.dm b/code/datums/diseases/advance/symptoms/cockroach.dm new file mode 100644 index 00000000..4a6a8516 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/cockroach.dm @@ -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 = "Stage Speed 8: CALCULATIONS FORECAST HEIGHTENED ACTIVITY
\ + Transmission 8: CALCULATIONS FORECAST BRIEFLY ESCALATED ACTIVITY IMMEDIATELY FOLLOWING CESSATION OF HOST LIFESIGNS
" + +/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, "You feel a tingle under your skin") + if(3) + if(prob(50)) + to_chat(M, "Your pores feel drafty.") + if(prob(5)) + to_chat(M, "You feel attuned to the atmosphere") + if(4) + if(prob(50)) + to_chat(M, "You feel in tune with the station") + if(5) + if(prob(30)) + M.visible_message("[M] squirms as a cockroach crawls from their pores!", \ + "A cockroach crawls out of your face!!") + new /mob/living/simple_animal/cockroach(M.loc) + if(prob(50)) + to_chat(M, "You feel something crawling in your pipes!") + +/datum/symptom/cockroach/OnDeath(datum/disease/advance/A) + if(!..()) + return + if(death_roaches) + var/mob/living/M = A.affected_mob + to_chat(M, "Your pores explode into a colony of roaches!") + for(var/i in 1 to rand(1,5)) + new /mob/living/simple_animal/cockroach(M.loc) + diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index f85024a7..bb1da9ac 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -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, "[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]") if(4) + if(M.fire_stacks < 0) + M.visible_message("[M]'s sweat sizzles and pops on contact with water!") + explosion(get_turf(M),-1,(-1 + explosion_power),(2 * explosion_power)) Alkali_fire_stage_4(M, A) M.IgniteMob() to_chat(M, "Your sweat bursts into flames!") M.emote("scream") if(5) + if(M.fire_stacks < 0) + M.visible_message("[M]'s sweat sizzles and pops on contact with water!") + explosion(get_turf(M),-1,(-1 + explosion_power),(2 * explosion_power)) Alkali_fire_stage_5(M, A) M.IgniteMob() to_chat(M, "Your skin erupts into an inferno!") M.emote("scream") - if(M.fire_stacks < 0) - M.visible_message("[M]'s sweat sizzles and pops on contact with water!") - 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 diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm index 14a654c0..4919cd70 100644 --- a/code/datums/diseases/advance/symptoms/flesh_eating.dm +++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm @@ -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 = "Resistance 7: Host will bleed profusely during necrosis.
\ - Transmission 8: 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, "[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]") - if(4,5) - to_chat(M, "[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]") - 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 = "Stage Speed 7: Synthesizes Heparin and Lipolicide inside the host, causing increased bleeding and hunger.
\ - Stealth 5: 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, "[pick("You feel your body break apart.", "Your skin rubs off like dust.")]") - if(4,5) - if(prob(base_message_chance / 2)) //reduce spam - to_chat(M, "[pick("You feel your muscles weakening.", "Some of your skin detaches itself.", "You feel sandy.")]") - 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 \ No newline at end of file +/* +////////////////////////////////////// + +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 = "Resistance 7: Host will bleed profusely during necrosis.
\ + Transmission 8: 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, "[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]") + if(4,5) + to_chat(M, "[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]") + 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 = "Stage Speed 7: Synthesizes Heparin and Lipolicide inside the host, causing increased bleeding and hunger.
\ + Stealth 5: 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, "[pick("You feel your body break apart.", "Your skin rubs off like dust.")]") + if(4,5) + if(prob(base_message_chance / 2)) //reduce spam + to_chat(M, "[pick("You feel your muscles weakening.", "Some of your skin detaches itself.", "You feel sandy.")]") + 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 diff --git a/code/datums/diseases/advance/symptoms/heartattack.dm b/code/datums/diseases/advance/symptoms/heartattack.dm new file mode 100644 index 00000000..1ed93c8a --- /dev/null +++ b/code/datums/diseases/advance/symptoms/heartattack.dm @@ -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 = "Transmission 10: When the victim has a heart attack, their heart will pop right out of their chest, and attack!.
\ + Stealth 2: 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, "[pick("Your chest aches.", "You need to sit down.", "You feel out of breath.")]") + else if(prob(2) && M.can_heartattack()) + to_chat(M, "[pick("Your chest hurts!.", "You feel like your heart skipped a beat!")]") + 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, "Your heart stops!") + 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, "Your heart bursts out of your chest! It looks furious!") + new /mob/living/simple_animal/hostile/heart(M.loc) + + diff --git a/code/datums/diseases/advance/symptoms/lubefeet.dm b/code/datums/diseases/advance/symptoms/lubefeet.dm new file mode 100644 index 00000000..29a44205 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/lubefeet.dm @@ -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 = "Transmission 10: The host sweats even more profusely, lubing almost every tile they walk over
\ + Resistance 12: 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, "Your feet begin to sweat profusely...") + if(3, 4) + to_chat(M, "You slide about inside your shoes!") + if(A.stage == 4 || A.stage == 5) + if(morelube) + makelube(M, 40) + else + makelube(M, 20) + if(5) + to_chat(M, "You slide about inside your shoes!") + 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, "The lube pools into a puddle!") + 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 diff --git a/code/datums/diseases/advance/symptoms/pierrot.dm b/code/datums/diseases/advance/symptoms/pierrot.dm new file mode 100644 index 00000000..e58a782d --- /dev/null +++ b/code/datums/diseases/advance/symptoms/pierrot.dm @@ -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 = "Transmission 10: There's a rare chance the disease is spread everytime the host honks.
\ + Resistance 10: The host grows a peculiar clown mask.
\ + Resistance 15: 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, "You feel a little silly.") + if(2) + if(prob(30)) + to_chat(M, "You start seeing rainbows.") + if(3) + if(prob(30)) + to_chat(M, "Your thoughts are interrupted by a loud HONK!") + playsound(M, 'sound/items/bikehorn.ogg', 50, 1) + if(4, 5) + if(clumsy) + if(!HAS_TRAIT(M, TRAIT_CLUMSY)) + to_chat(M, "You feel dumber.") + 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, "You feel less dumb.") + 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 diff --git a/code/datums/diseases/advance/symptoms/radiation.dm b/code/datums/diseases/advance/symptoms/radiation.dm new file mode 100644 index 00000000..c52ae6a8 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/radiation.dm @@ -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 = "Transmission 12: Makes the host irradiate others around them as well.
\ + Speed 8: 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, "You feel off...") + if(2, 3) + if(prob(50)) + to_chat(M, "You feel like the atoms inside you are beginning to split...") + if(4, 5) + if(fastrads) + radiate(M, 80) + else + radiate(M, 40) + if(radothers && A.stage == 5) + if(prob(40)) + M.visible_message("[M] glows green for a moment!", \ + "You feel a massive wave of pain flow through you!") + radiation_pulse(M, 20) + + +/datum/symptom/radiation/proc/radiate(mob/living/carbon/M, chance) + if(prob(chance)) + to_chat(M, "You feel a wave of pain throughout your body!") + M.radiation += 4 diff --git a/code/datums/diseases/advance/symptoms/skin.dm b/code/datums/diseases/advance/symptoms/skin.dm index 300eecc8..2d8ec91f 100644 --- a/code/datums/diseases/advance/symptoms/skin.dm +++ b/code/datums/diseases/advance/symptoms/skin.dm @@ -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 diff --git a/code/datums/diseases/advance/symptoms/viral.dm b/code/datums/diseases/advance/symptoms/viral.dm index 55807aed..9fd9d5a0 100644 --- a/code/datums/diseases/advance/symptoms/viral.dm +++ b/code/datums/diseases/advance/symptoms/viral.dm @@ -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 = "Resistance/Stage Speed: Highest between these determines the amount of time before self-curing.
\ + Stealth 4 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, "You suddenly feel healthy.") + 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