From 5aafcf95697e0e472aaa87dad0211b838cd57f2c Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 20:59:51 -0800 Subject: [PATCH 01/25] Update death.dm --- code/modules/mob/living/death.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index ad3c8982..66d895ed 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -48,6 +48,10 @@ /mob/living/proc/spawn_dust(just_ash = FALSE) new /obj/effect/decal/cleanable/ash(loc) +for(var/datum/disease/advance/D in diseases) + for(var/symptom in D.symptoms) + var/datum/symptom/S = symptom + S.OnDeath(D) /mob/living/death(gibbed) stat = DEAD From 9573acc2cac3186363ce93cd52af7af49d565465 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:01:10 -0800 Subject: [PATCH 02/25] Add files via upload --- .../mob/living/simple_animal/hostile/heart.dm | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 code/modules/mob/living/simple_animal/hostile/heart.dm diff --git a/code/modules/mob/living/simple_animal/hostile/heart.dm b/code/modules/mob/living/simple_animal/hostile/heart.dm new file mode 100644 index 00000000..4e12b01b --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/heart.dm @@ -0,0 +1,35 @@ +/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 From 2104ba551b3358ae6551ea23722ed9be0462e80d Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:02:34 -0800 Subject: [PATCH 03/25] Update symptoms.dm --- code/datums/diseases/advance/symptoms/symptoms.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm index 04fbf334..6d976089 100644 --- a/code/datums/diseases/advance/symptoms/symptoms.dm +++ b/code/datums/diseases/advance/symptoms/symptoms.dm @@ -66,6 +66,9 @@ new_symp.id = id new_symp.neutered = neutered return new_symp + +/datum/symptom/proc/OnDeath(datum/disease/advance/A) + return !neutered /datum/symptom/proc/generate_threshold_desc() return 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 04/25] 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 From 86691eee19dcaef574c84d07917d8d51ac05bb68 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:17:16 -0800 Subject: [PATCH 05/25] Update tgstation.dme --- tgstation.dme | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 59160062..f66370ec 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -420,7 +420,10 @@ #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" @@ -428,13 +431,18 @@ #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" @@ -447,6 +455,7 @@ #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" @@ -2166,6 +2175,7 @@ #include "code\modules\mob\living\simple_animal\guardian\types\standard.dm" #include "code\modules\mob\living\simple_animal\guardian\types\support.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" +#include "code\modules\mob\living\simple_animal\hostile\heart.dm #include "code\modules\mob\living\simple_animal\hostile\bear.dm" #include "code\modules\mob\living\simple_animal\hostile\bees.dm" #include "code\modules\mob\living\simple_animal\hostile\carp.dm" From 197a4d870fb651bb524e014b9b1f91f818256752 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:25:08 -0800 Subject: [PATCH 06/25] Add files via upload --- .../diseases/advance/symptoms/wizarditis.dm | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 code/datums/diseases/advance/symptoms/wizarditis.dm diff --git a/code/datums/diseases/advance/symptoms/wizarditis.dm b/code/datums/diseases/advance/symptoms/wizarditis.dm new file mode 100644 index 00000000..aa216bee --- /dev/null +++ b/code/datums/diseases/advance/symptoms/wizarditis.dm @@ -0,0 +1,110 @@ +/datum/symptom/wizarditis + name = "Wizarditis" + desc = "Causes the host to subconciously believe they are in fact, a wizard." + stealth = 1 + resistance = -2 + stage_speed = -3 + transmittable = -1 + level = 0 + severity = 3 + symptom_delay_min = 15 + symptom_delay_max = 45 + var/teleport = FALSE + var/robes = FALSE + threshold_desc = "Transmission 14: The host teleports occasionally.
\ + Speed 7: The host grows a set of wizard robes." + +/datum/symptom/wizarditis/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["transmission"] >= 14) + teleport = TRUE + if(A.properties["speed"] >= 7) + robes = TRUE + +/datum/symptom/wizarditis/Activate(datum/disease/advance/A) + if(!..()) + return + var/mob/living/M = A.affected_mob + switch(A.stage) + if(2) + if(prob(30) && prob(50)) + M.say(pick("You shall not pass!", "Expeliarmus!", "By Merlins beard!", "Feel the power of the Dark Side!")) + if(prob(30) && prob(50)) + to_chat(M, "You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].") + + + if(3) + if(prob(30) && prob(50)) + M.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!")) + if(prob(30) && prob(50)) + to_chat(M, "You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].") + + if(4) + + if(prob(50)) + M.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!")) + return + if(robes) + to_chat(M, "You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")].") + spawn_wizard_clothes(50, A) + if(prob(20) && teleport) + teleport(A) + return + + + +/datum/symptom/wizarditis/proc/spawn_wizard_clothes(chance = 0, datum/disease/advance/A) + if(ishuman(A.affected_mob)) + var/mob/living/carbon/human/H = A.affected_mob + var/obj/item/clothing/C + if(prob(chance)) + if(!istype(H.head, /obj/item/clothing/head/wizard)) + if(!H.dropItemToGround(H.head)) + qdel(H.head) + C = new /obj/item/clothing/head/wizard(H) + ADD_TRAIT(C, TRAIT_NODROP, DISEASE_TRAIT) + H.equip_to_slot_or_del(C, SLOT_HEAD) + return + if(prob(chance)) + if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe)) + if(!H.dropItemToGround(H.wear_suit)) + qdel(H.wear_suit) + C = new /obj/item/clothing/suit/wizrobe(H) + ADD_TRAIT(C, TRAIT_NODROP, DISEASE_TRAIT) + H.equip_to_slot_or_del(C, SLOT_WEAR_SUIT) + return + if(prob(chance)) + if(!istype(H.shoes, /obj/item/clothing/shoes/sandal/magic)) + if(!H.dropItemToGround(H.shoes)) + qdel(H.shoes) + C = new /obj/item/clothing/shoes/sandal/magic(H) + ADD_TRAIT(C, TRAIT_NODROP, DISEASE_TRAIT) + H.equip_to_slot_or_del(C, SLOT_SHOES) + return + else + var/mob/living/carbon/H = A.affected_mob + if(prob(chance)) + var/obj/item/staff/S = new(H) + if(!H.put_in_hands(S)) + qdel(S) + + +/datum/symptom/wizarditis/proc/teleport(datum/disease/advance/A) + var/turf/L = get_safe_random_station_turf() + A.affected_mob.say("SCYAR NILA!") + do_teleport(A.affected_mob, L, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC) + playsound(get_turf(A.affected_mob), 'sound/weapons/zapbang.ogg', 50,1) + +/datum/symptom/wizarditis/End(datum/disease/advance/A) + if(ishuman(A.affected_mob)) + var/mob/living/carbon/human/H = A.affected_mob + if(istype(H.head, /obj/item/clothing/head/wizard)) + REMOVE_TRAIT(H.head, TRAIT_NODROP, DISEASE_TRAIT) + if(istype(H.wear_suit, /obj/item/clothing/suit/wizrobe)) + REMOVE_TRAIT(H.wear_suit, TRAIT_NODROP, DISEASE_TRAIT) + if(istype(H.shoes, /obj/item/clothing/shoes/sandal/magic)) + REMOVE_TRAIT(H.shoes, TRAIT_NODROP, DISEASE_TRAIT) + + + From be53f7fcc4894473fe8af6382b9438dbce770f7e Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:29:54 -0800 Subject: [PATCH 07/25] Update tgstation.dme --- tgstation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index f66370ec..d56f063e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2175,7 +2175,7 @@ #include "code\modules\mob\living\simple_animal\guardian\types\standard.dm" #include "code\modules\mob\living\simple_animal\guardian\types\support.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" -#include "code\modules\mob\living\simple_animal\hostile\heart.dm +#include "code\modules\mob\living\simple_animal\hostile\heart.dm" #include "code\modules\mob\living\simple_animal\hostile\bear.dm" #include "code\modules\mob\living\simple_animal\hostile\bees.dm" #include "code\modules\mob\living\simple_animal\hostile\carp.dm" From 24b62dd01022bdf2ee762e4592fa853f92da0d39 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:37:02 -0800 Subject: [PATCH 08/25] Update traits.dm --- code/__DEFINES/traits.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 4cb885db..01ab0933 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -160,6 +160,7 @@ // 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" @@ -205,4 +206,4 @@ #define FLIGHTSUIT_TRAIT "flightsuit" #define LOCKED_HELMET_TRAIT "locked-helmet" #define NINJA_SUIT_TRAIT "ninja-suit" -#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant" \ No newline at end of file +#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant" From 30b6206351d49e98d2c780eafd207202e0b6c0a0 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:41:36 -0800 Subject: [PATCH 09/25] Update death.dm --- code/modules/mob/living/death.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 66d895ed..4bdc07a0 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -61,6 +61,10 @@ for(var/datum/disease/advance/D in diseases) 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 = "[mind.name] has died at [get_area_name(T)]." deadchat_broadcast(rendered, follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE) From e4cd4072cb3626fe9e91cb01348c9fadf4e3c0af Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:47:02 -0800 Subject: [PATCH 10/25] Update braindamage.dm --- code/datums/diseases/advance/symptoms/braindamage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/braindamage.dm b/code/datums/diseases/advance/symptoms/braindamage.dm index c8ee596e..9f393b86 100644 --- a/code/datums/diseases/advance/symptoms/braindamage.dm +++ b/code/datums/diseases/advance/symptoms/braindamage.dm @@ -36,11 +36,11 @@ if(4, 5) if(lethal) if(prob(35)) - M.adjustBrainLoss(rand(5,90), 200) + affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(5,90), 200) to_chat(M, "Your brain hurts immensely!") else if(prob(35)) - M.adjustBrainLoss(rand(5,90), 120) + affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(5,90), 120) to_chat(M, "Your head hurts immensely!") if(moretrauma && A.stage == 5) givetrauma(A, 10) From 5086b5dd94bd21833fb9cc392e66c6c7e4ef7a2b Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:49:28 -0800 Subject: [PATCH 11/25] Update unsorted.dm --- code/__HELPERS/unsorted.dm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 1f8db38f..7173aa73 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1130,6 +1130,27 @@ B --><-- A /proc/get_random_station_turf() return safepick(get_area_turfs(pick(GLOB.the_station_areas))) + +/proc/get_safe_random_station_turf() + for (var/i in 1 to 5) + var/list/L = get_area_turfs(pick(GLOB.the_station_areas)) + var/turf/target + while (L.len && !target) + var/I = rand(1, L.len) + var/turf/T = L[I] + if(!T.density) + var/clear = TRUE + for(var/obj/O in T) + if(O.density) + clear = FALSE + break + if(clear) + target = T + if (!target) + L.Cut(I,I+1) + if (target) + return target + /proc/get_closest_atom(type, list, source) var/closest_atom From f7cf9c86bdaa693ab2085ecb4af34222d6864a49 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:57:37 -0800 Subject: [PATCH 12/25] Update death.dm --- code/modules/mob/living/death.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 4bdc07a0..f99a86c8 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -48,11 +48,6 @@ /mob/living/proc/spawn_dust(just_ash = FALSE) new /obj/effect/decal/cleanable/ash(loc) -for(var/datum/disease/advance/D in diseases) - for(var/symptom in D.symptoms) - var/datum/symptom/S = symptom - S.OnDeath(D) - /mob/living/death(gibbed) stat = DEAD unset_machine() From 36ceb0b7f927ac2c24a6a036c4b6dcb2bf1f3a2e Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 21:59:57 -0800 Subject: [PATCH 13/25] Update braindamage.dm --- code/datums/diseases/advance/symptoms/braindamage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/braindamage.dm b/code/datums/diseases/advance/symptoms/braindamage.dm index 9f393b86..65572278 100644 --- a/code/datums/diseases/advance/symptoms/braindamage.dm +++ b/code/datums/diseases/advance/symptoms/braindamage.dm @@ -36,11 +36,11 @@ if(4, 5) if(lethal) if(prob(35)) - affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(5,90), 200) + A.affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(5,90), 200) to_chat(M, "Your brain hurts immensely!") else if(prob(35)) - affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(5,90), 120) + A.affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(5,90), 120) to_chat(M, "Your head hurts immensely!") if(moretrauma && A.stage == 5) givetrauma(A, 10) From 743cd2aafc9bd213226d80e937f3330b410de01e Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:05:00 -0800 Subject: [PATCH 14/25] Update smartfridge.dm --- code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 5790f028..039f6eba 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -467,7 +467,8 @@ /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/formaldehyde = 1, + /obj/item/reagent_containers/glass/bottle/viralbase = 1) // ---------------------------- // Disk """fridge""" From aed8b9b4bf58c4bec074702a438fd0c6fa907719 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:06:13 -0800 Subject: [PATCH 15/25] Update presets.dm --- code/datums/diseases/advance/presets.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm index 68c3ceff..56a00ae6 100644 --- a/code/datums/diseases/advance/presets.dm +++ b/code/datums/diseases/advance/presets.dm @@ -21,7 +21,7 @@ name = "Experimental Disease" copy_type = /datum/disease/advance -/datum/disease/advance/random/New(max_symptoms, max_level = 8) +/datum/disease/advance/random/New(max_symptoms, max_level = 9) if(!max_symptoms) max_symptoms = rand(1, VIRUS_SYMPTOM_LIMIT) var/list/datum/symptom/possible_symptoms = list() @@ -39,4 +39,4 @@ symptoms += S Refresh() - name = "Sample #[rand(1,10000)]" \ No newline at end of file + name = "Sample #[rand(1,10000)]" From b657074c9689f2ab8b2c62ccc94e1ed0c5045b8c Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:06:54 -0800 Subject: [PATCH 16/25] Update choking.dm --- code/datums/diseases/advance/symptoms/choking.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/choking.dm b/code/datums/diseases/advance/symptoms/choking.dm index 43938500..48f68e69 100644 --- a/code/datums/diseases/advance/symptoms/choking.dm +++ b/code/datums/diseases/advance/symptoms/choking.dm @@ -93,7 +93,7 @@ Bonus resistance = -0 stage_speed = -1 transmittable = -2 - level = 7 + level = 9 severity = 6 base_message_chance = 15 symptom_delay_min = 14 From 7116e92b6c5c9905c9723fc0ce4ee91e98569843 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:07:19 -0800 Subject: [PATCH 17/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 0efcd240..b8a52e0c 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -5,7 +5,7 @@ resistance = 0 stage_speed = 0 transmittable = 0 - level = 0 //not obtainable + level = -1 //not obtainable base_message_chance = 20 //here used for the overlays symptom_delay_min = 1 symptom_delay_max = 1 From 67bcbcdfb190f9e61297b93e2b7088ba215711a1 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:08:29 -0800 Subject: [PATCH 18/25] Update symptoms.dm --- code/datums/diseases/advance/symptoms/symptoms.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm index 6d976089..95831b36 100644 --- a/code/datums/diseases/advance/symptoms/symptoms.dm +++ b/code/datums/diseases/advance/symptoms/symptoms.dm @@ -10,7 +10,7 @@ var/stage_speed = 0 var/transmittable = 0 // The type level of the symptom. Higher is harder to generate. - var/level = 0 + var/level = -1 // 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!!! From a6d82f778c457b6005df05610611f86f7d9d7d57 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:11:07 -0800 Subject: [PATCH 19/25] Update other_reagents.dm --- .../chemistry/reagents/other_reagents.dm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 662793a8..409ba76d 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1582,6 +1582,22 @@ 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" + +/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" + +/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" + /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) @@ -2174,4 +2190,4 @@ if(prob(20)) to_chat(M, "[pick("Headpats feel nice.", "The feeling of a hairball...", "Backrubs would be nice.", "Whats behind those doors?")]") M.adjustArousalLoss(2) - ..() \ No newline at end of file + ..() From dda5a9b4260ef2f78ea2cadfcfb3702f823e60c4 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:15:58 -0800 Subject: [PATCH 20/25] Update others.dm --- .../reagents/chemistry/recipes/others.dm | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index a1e17e51..f2564d48 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -229,7 +229,19 @@ var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] if(D) D.Evolve(level_min, level_max) + +/datum/chemical_reaction/virus_food_laughter + name = "Anomolous virus food" + id = "virusfood_laughter" + results = list(/datum/reagent/consumable/laughter/laughtervirusfood = 1) + required_reagents = list(/datum/reagent/consumable/laughter = 5, /datum/reagent/consumable/virus_food = 1) +/datum/chemical_reaction/virus_food_admin + name = "Highly unstable virus Food" + id = "virusfood_admin" + results = list(/datum/reagent/consumable/virus_food/advvirusfood = 1) + required_reagents = list(/datum/reagent/consumable/virus_food/viralbase = 1, /datum/reagent/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 @@ -318,6 +330,23 @@ 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(/datum/reagent/consumable/laughter/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(/datum/reagent/consumable/virus_food/advvirusfood = 1) + level_min = 9 + level_max = 9 + /datum/chemical_reaction/mix_virus/rem_virus @@ -702,4 +731,4 @@ name = "liquid royal blue carpet" id = "royalbluecarpet" results = list("royalbluecarpet" = 2) - required_reagents = list("carpet" = 1, "clonexadone" = 1) \ No newline at end of file + required_reagents = list("carpet" = 1, "clonexadone" = 1) From 29062af74164d89b429f6ce47675dd6b3e585eda Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:16:47 -0800 Subject: [PATCH 21/25] Update glass.dm --- code/modules/reagents/reagent_containers/glass.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 9915e562..8a773709 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -126,6 +126,11 @@ /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(/datum/reagent/consumable/virus_food/viralbase = 1) /obj/item/reagent_containers/glass/beaker/update_icon() cut_overlays() From 258db24b00c42d579a648e91a8b3cb8bdc3ea090 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Thu, 9 Jan 2020 22:27:47 -0800 Subject: [PATCH 22/25] Add files via upload --- .../diseases/advance/symptoms/sneeze.dm | 102 +++++++++--------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index f38bb821..91e7beb4 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -1,51 +1,51 @@ -/* -////////////////////////////////////// - -Sneezing - - Very Noticable. - Increases resistance. - Doesn't increase stage speed. - Very transmissible. - Low Level. - -Bonus - Forces a spread type of AIRBORNE - with extra range! - -////////////////////////////////////// -*/ - -/datum/symptom/sneeze - name = "Sneezing" - desc = "The virus causes irritation of the nasal cavity, making the host sneeze occasionally." - stealth = -2 - resistance = 3 - stage_speed = 0 - transmittable = 4 - level = 1 - severity = 1 - symptom_delay_min = 5 - symptom_delay_max = 35 - threshold_desc = "Transmission 9: Increases sneezing range, spreading the virus over a larger area.
\ - Stealth 4: 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 - -/datum/symptom/sneeze/Activate(datum/disease/advance/A) - if(!..()) - return - var/mob/living/M = A.affected_mob - switch(A.stage) - if(1, 2, 3) - if(!suppress_warning) - M.emote("sniff") - else - M.emote("sneeze") - A.spread(4 + power) \ No newline at end of file +/* +////////////////////////////////////// + +Sneezing + + Very Noticable. + Increases resistance. + Doesn't increase stage speed. + Very transmissible. + Low Level. + +Bonus + Forces a spread type of AIRBORNE + with extra range! + +////////////////////////////////////// +*/ +/datum/symptom/sneeze + name = "Sneezing" + desc = "The virus causes irritation of the nasal cavity, making the host sneeze occasionally." + stealth = -2 + resistance = 3 + stage_speed = 0 + transmittable = 4 + level = 1 + severity = 1 + symptom_delay_min = 5 + symptom_delay_max = 35 + threshold_desc = "Transmission 9: The host will sneeze periodically, spreading the disease.
\ + Stealth 4: The symptom remains hidden until active." + +/datum/symptom/sneeze/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["stealth"] >= 4) + suppress_warning = TRUE + +/datum/symptom/sneeze/Activate(datum/disease/advance/A) + if(!..()) + return + if(!A.properties["transmittable"] >= 9) + return + var/mob/living/M = A.affected_mob + switch(A.stage) + if(1, 2, 3) + if(!suppress_warning) + M.emote("sniff") + else + M.emote("sneeze") + if(M.CanSpreadAirborneDisease()) //don't spread germs if they covered their mouth + A.spread(4 + power) From a5a26da21c95ead27d727f7ac2178af140cd8719 Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Sat, 11 Jan 2020 15:05:55 -0800 Subject: [PATCH 24/25] Update heartattack.dm --- code/datums/diseases/advance/symptoms/heartattack.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heartattack.dm b/code/datums/diseases/advance/symptoms/heartattack.dm index 1ed93c8a..21d91061 100644 --- a/code/datums/diseases/advance/symptoms/heartattack.dm +++ b/code/datums/diseases/advance/symptoms/heartattack.dm @@ -33,7 +33,7 @@ Bonus /datum/symptom/heartattack/Start(datum/disease/advance/A) if(!..()) return - if(A.properties["transmission"] >= 10) + if(A.properties["transmittable"] >= 10) heartattack = TRUE if(A.properties["stealth"] >= 2) suppress_warning = TRUE From 8dcc4d11cfaa5ebfc103da03929047ef6f0776aa Mon Sep 17 00:00:00 2001 From: zeskorion <49600480+zeskorion@users.noreply.github.com> Date: Tue, 28 Jan 2020 11:17:33 -0800 Subject: [PATCH 25/25] Fix a compile issue --- code/datums/diseases/advance/symptoms/sneeze.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index 91e7beb4..4b040786 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -47,5 +47,4 @@ Bonus M.emote("sniff") else M.emote("sneeze") - if(M.CanSpreadAirborneDisease()) //don't spread germs if they covered their mouth - A.spread(4 + power) + A.spread(4 + power)