mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 19:17:50 +01:00
* Reworks cures, adds strains, adds treatment chems to symptoms
* Enables coexistence of different samples of the same strain at different stages within the same container
* Adds symptom guessing. Correct guesses reduce analysis time and wrong ones increase it.
* Adds a chance for a virus to evolve into a new strain. changing the cure and adding/subtracting symptoms
* Revert "Adds a chance for a virus to evolve into a new strain. changing the cure and adding/subtracting symptoms"
This reverts commit 124dd485c7.
* Adds spontaneous virus mutations, strain tracking. Removes antibody metabolism
* change the amount of time added/reduced by each factor
* Creates a disease outbreak event that allows admins to cause an outbreak of a virus of their choosing. Allows virus creation when choosing virus to give someone or for an outbreak.
* The normal base property values are now the defaults for disease creation
* Rebuild TGUI
* Rebuild TGUI
* Rebuild TGUI
* Update tgui.bundle.js
* remove redundant lines
* improves ui some and moves to using world time for analysis time
* fixes a bug with the analysis time and updates the initial known advanced disease list
* Buffs the disease outbreak event and adds a base stat row to the PANDEMIC
* Update tgui.bundle.js
* Implements calibration
* Adds a remove from database button
* Moves the known disease global list to work per z level
* Removes treatments from most chems and makes each instance of a symptom not acting purge some of the reagent that treated it
* Update symptoms.dm
* Adds stage to unknown diseases
* Moves accumulated error to work per z level and change the location of the delete strain data button
* Adds confirmation to the delete data button and moves the disease text out of the loop in the copy constructor
* fix indentation
* Replaces pent with hydrocodone in the advanced cure list
* gives more buffs to event disease based on severity. removes longevity from possible symptoms an event disease can get. Fixes a bug with determining analysis time
* Update tgui.bundle.js
* Update pandemic.dm
* Update pandemic.dm
* Update tgui.bundle.js
* review changes
* Update tgui.bundle.js
* Update tgui.bundle.js
* Update tgui.bundle.js
* Update tgui.bundle.js
* Update tgui.bundle.js
* Update tgui.bundle.js
* Update tgui.bundle.js
* Update tgui.bundle.js
* review changes
* Update tgui.bundle.js
* Makes vaccines only add resistances and no longer cure
* improves pandemic ui and fixes calibration button not being properly disabled
* Update tgui.bundle.js
* Add the new agars to the virologist's fridge
* lowered evolution chance of viruses a bit
* further lowers evolution chance
* Update advance.dm
* Changes the scaling of analysis time and fixes stage speed presentation in the pandemic
* Scanners can now see virus strains that have been inserted in the pandemic
* Allows a mob to be infected by both an event and non event disease
* Fixes the +1 syringe of translocation stabbing your feet
* Update tgui.bundle.js
* Changes spontanous mutation to be per spread and makes disease events less likely.
* Diseases less common, mutations happen only on spread now, symptom list ordered alphabetically in the dropdown, fixed some bugs
* Update tgui.bundle.js
* changes virus alerts
* Removes numbers from the virus alert text and fixes a bug that caused excessive virus mutations
* Update tgui.bundle.js
* refactor disease spread
* Changes disease spread logic to give players options to protect themselves and others
* Blackbox things
* Increases announcement timer and fixes the infection talley
* Update disease_outbreak.dm
* Adds an incubation period to advanced viruses. bumps sneeze back to 5 range
* Adds failsafe to disease outbreaks that will infect a random crew member if none have arrived in 10 minutes
* Only record advanced disease infections
* Properly handle recording of disease infection events
* Changed resistance effect on cure
* another adjustment to res effect on cure
* Small resist buff, spontanous combustion buff and some calculation fixes
* changes spontanous combustion stat bonuses and maluses
* Update flesh_eating.dm
* Update flesh_eating.dm
* Update flesh_eating.dm
* Big trait changes and rebalance
* adds treatments to fire and necro
* Introduces viral contamination of food and reagent containers, as well as disinfection
* Fix runtime in reagent transfers
* Revert the prefs and config changes
* Slowed down diseases and made symptoms more gradual, improved disease alerts to both crew and dchat
* Sterilizine now sterilizes things contaminated with viruses. Heat reactions now take place alongside chemical reactions when adding reagents to a beaker
* Adds option to order sterile masks, goggles and biosuits in packs of 4. Makes sterile masks as good as internals for viruses
* adds logging to pandemic
* Changes symptom stats and increased disease varaiety
* Fixes some disease bugs
* Fixes some bugs and makes it behave better
* Adds shiver emote to shiver symptom
* Adds admin message/log to contracting an event disease and fixes copy behaviour when infecting
* Prefix spread defines
* Change the rest of the macros
* correct the disinfection temp macro
* Moves disease signals to their own file
* move disnifection temp back
* fix a type
* viral contaminations component review changes
* var name changes
* more style fixes
* Update tgui.bundle.js
* fixes pandemic
* Fixes disease outbreak having two carriers sometimes and changes the virus alert to the new one
* Update disease_defines.dm
* fixes samples not passing stages on properly
* actually fixes the bug
* Fixes stabilization being lost on cloning
* Finally completely and absolutely fixes the sample stages bug(please)
* Makes the pandemic a machine
* Update pandemic.dm
* removed drinks from cure requirements
* lowers chance of major viral outbreak
* fixes pandemic not processing properly
* Changes the cure system to have more options
* Makes mixing event viruses more random
* Fixes hardsuits having a 1% chance to be infected
* Increases virus protection of most clothing. medical scrubs and surgical hat buffed sunstantially
* Slow down progress of diseases
* makes spread less likely
* envirosuit is now slightly more protective from viruses, while the medical one is as good as scrubs
* Adds further protection to helmets
* Increases the number of possible cures and the scaling of required cures
* Pandemic ui improvements
* Update _disease.dm
* fix a bug with spread target in the disease outbreak event
* changes some clothing permeability
* Adds the ability to make viral DNA extracts by injecting a sample into a black slime core. It's equivalent to 2 stages
* Adds age to health analyzer, makes viral evolution toggle minor disabilities, confusion symptom now confuses more often
* Update pandemic.dm
* replace lazarus with acetic acid in the cures
* Changes the relation of the amount of cure options to required cures and the scaling of required cures with resistance
* Fixes virus renaming
* changes description and permeability of some medical jumpsuits
* Adds a list of all diseases infecting client mobs to the disease outbreak event
* uses event UID instead of ref in the disease
* Adds advanced disease carriers to admin antag menu
* Adds viral eraser which removes tracking and stabilizing. Admin spawn only for now
* Update tgui.bundle.js
* Adds the ability to create viral genetic material using radiation. it can be used in addition to that produced in xenobio
* changes alert logic, disease generation logic, adds treatments to weakness, cough and sneeze now more gradual and cough spreads at range 3
* makes disease advance a bit faster
* reduce time to announcement to 6 minutes after 3 people are infected
* Changes medibot disease detection to be the same as analyzers. Treatment chems now put the symptom on a cooldown that persists after they leave the body.
* Make sure the disease outbreak event only selects crew
* Fix abductor virus gland virus generation
* Adds sterilizine to viro locker
* Fixes null viruses appearing when merging virusless blood
* Adds oculine to hyphema treatments
* Rebalances weight loss and flesh eating
* Improvements to advanced disease carrier tab on the TGUI antag menu
* change the flag on away missions
* Update mob_spawn.dm
* Update tgui.bundle.js
* adds sterilizine recipe back
* Adds viral contamination to surgery tools and surgery steps
* small changes
* fixes pandemic ui. should work properly now(I hope)
* CI compliance
* Update flesh_eating.dm
* Update vomit.dm
* Update tgui.bundle.js
* Initial revision of analysis and fixes the UI issue with multiple stage samples
* refactors treatment and makes treatment chems more adjustable
* var correction
* symptoms and their contribution now show up on the pandemic
* Update tgui.bundle.js
* Update code/datums/diseases/advance/symptoms/cough.dm
Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com>
* change wizard disease and zombie disease macros to new ones
* Update tgui.bundle.js
* changes the part requirements on the pandemic boards to fit the actual parts
* fix misbehaviour when inserting samples without symptoms
* Some changes to difficulty scaling, reverts the level of projectile vomiting back to 4, and disallows germaphobes to avoid infection by injection
* Adds viral contamination to IV bags
---------
Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
191 lines
6.9 KiB
Plaintext
191 lines
6.9 KiB
Plaintext
/datum/disease/zombie
|
|
name = "Necrotizing Plague"
|
|
medical_name = "Advanced Resurrection Syndrome"
|
|
desc = "This virus infects humanoids and drives them insane with a hunger for flesh, along with possessing regenerative abilities."
|
|
max_stages = 7
|
|
spread_text = "Blood and Saliva"
|
|
spread_flags = SPREAD_BLOOD
|
|
cure_text = "Anti-plague viral solutions"
|
|
cures = list()
|
|
agent = ""
|
|
viable_mobtypes = list(/mob/living/carbon/human)
|
|
severity = VIRUS_BIOHAZARD
|
|
allow_dead = TRUE
|
|
disease_flags = VIRUS_CAN_CARRY
|
|
virus_heal_resistant = TRUE
|
|
stage_prob = 100 // It isn't actually 100%, but is instead based on a timer
|
|
cure_chance = 80
|
|
/// How far this particular virus is in being cured (0-4)
|
|
var/cure_stage = 0
|
|
/// Cooldown until the virus can advance to the next stage
|
|
COOLDOWN_DECLARE(stage_timer)
|
|
/// What disease are we passing along to datum/antagonist/zombie
|
|
var/plague_disease
|
|
/// Activate the immediate zombie rot loop
|
|
var/instant_zombie
|
|
|
|
/datum/disease/zombie/New(chosen_plague, plague_zomb)
|
|
if(plague_zomb)
|
|
plague_disease = chosen_plague
|
|
instant_zombie = TRUE
|
|
|
|
/datum/disease/zombie/stage_act()
|
|
if(stage == 8)
|
|
// adminbus for immediate zombie
|
|
var/mob/living/carbon/human/H = affected_mob
|
|
if(!istype(H))
|
|
return FALSE
|
|
for(var/obj/item/organ/limb as anything in H.bodyparts)
|
|
if(!(limb.status & ORGAN_DEAD) && !limb.is_robotic())
|
|
limb.necrotize(TRUE, TRUE)
|
|
if(!HAS_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN))
|
|
ADD_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN, ZOMBIE_TRAIT)
|
|
|
|
if(!..())
|
|
return FALSE
|
|
if(HAS_TRAIT(affected_mob, TRAIT_I_WANT_BRAINS) || affected_mob.mind?.has_antag_datum(/datum/antagonist/zombie))
|
|
SSticker.mode.zombie_infected -= affected_mob
|
|
if(affected_mob.reagents.has_reagent("zombiecure4"))
|
|
return
|
|
handle_rot()
|
|
stage = 7
|
|
return FALSE
|
|
SSticker.mode.zombie_infected |= affected_mob
|
|
switch(stage)
|
|
if(1) // cured by lvl 1 cure
|
|
if(prob(4))
|
|
to_chat(affected_mob, "<span class='warning'>[pick("Your scalp itches.", "Your skin feels flakey.")]</span>")
|
|
else if(prob(5))
|
|
to_chat(affected_mob, "<span class='warning'>Your [pick("back", "arm", "leg", "elbow", "head")] itches.</span>")
|
|
if(2)
|
|
if(prob(2))
|
|
to_chat(affected_mob, "<span class='danger'>Mucous runs down the back of your throat.</span>")
|
|
else if(prob(5))
|
|
to_chat(affected_mob, "<span class='warning'>[pick("You feel hungry.", "You crave for something to eat.")]</span>")
|
|
if(3) // cured by lvl 2 cure
|
|
if(prob(2))
|
|
affected_mob.emote("sneeze")
|
|
else if(prob(2))
|
|
affected_mob.emote("cough")
|
|
else if(prob(5))
|
|
to_chat(affected_mob, "<span class='warning'><i>[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]</i></span>")
|
|
if(prob(5))
|
|
affected_mob.adjustToxLoss(1)
|
|
if(4) // shows up on medhuds
|
|
if(prob(2))
|
|
affected_mob.emote("stare")
|
|
else if(prob(2))
|
|
affected_mob.emote("drool")
|
|
else if(prob(5))
|
|
to_chat(affected_mob, "<span class='danger'>You feel a cold sweat form.</span>")
|
|
if(prob(25))
|
|
affected_mob.adjustToxLoss(1)
|
|
if(5, 6) // 5 is cured by lvl 3 cure. 6+ needs lvl 4 cure
|
|
var/turf/T = get_turf(affected_mob)
|
|
if(T.get_lumcount() >= 0.5)
|
|
if(prob(5))
|
|
to_chat(affected_mob, "<span class='danger'>Those lights seem bright. It stings.</span>")
|
|
if(prob(25))
|
|
affected_mob.adjustFireLoss(2)
|
|
if(prob(2))
|
|
affected_mob.emote("drool")
|
|
if(stage == 6 && !affected_mob.reagents.has_reagent("zombiecure3")) // cure 3 can delay it, but not cure it
|
|
if(prob(10))
|
|
to_chat(affected_mob, "<span class='danger zombie'>You feel your flesh rotting.</span>")
|
|
if(prob(10) || affected_mob.stat != DEAD)
|
|
handle_rot()
|
|
if(7)
|
|
if(!handle_rot())
|
|
stage = 6
|
|
return
|
|
|
|
/datum/disease/zombie/handle_stage_advance(has_cure = FALSE)
|
|
if(!stage_timer)
|
|
COOLDOWN_START(src, stage_timer, 1 MINUTES) // for the first infection
|
|
if(affected_mob.stat != DEAD || !prob(30)) // when the body is dead, it always has a 30% chance to advance regardless
|
|
if(!COOLDOWN_FINISHED(src, stage_timer))
|
|
return
|
|
COOLDOWN_START(src, stage_timer, 1 MINUTES)
|
|
..()
|
|
|
|
|
|
/datum/disease/zombie/proc/handle_rot()
|
|
var/mob/living/carbon/human/H = affected_mob
|
|
if(!istype(H))
|
|
return FALSE
|
|
for(var/obj/item/organ/limb as anything in H.bodyparts)
|
|
if(!(limb.status & ORGAN_DEAD) && !limb.vital && !limb.is_robotic())
|
|
limb.necrotize()
|
|
if(!HAS_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN))
|
|
ADD_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN, ZOMBIE_TRAIT)
|
|
return FALSE
|
|
|
|
for(var/obj/item/organ/limb as anything in H.bodyparts)
|
|
if(!(limb.status & ORGAN_DEAD) && !limb.is_robotic())
|
|
limb.necrotize(FALSE, TRUE)
|
|
if(!HAS_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN))
|
|
ADD_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN, ZOMBIE_TRAIT)
|
|
return FALSE
|
|
|
|
if(!HAS_TRAIT(affected_mob, TRAIT_I_WANT_BRAINS))
|
|
affected_mob.AddComponent(/datum/component/zombie_regen)
|
|
ADD_TRAIT(affected_mob, TRAIT_I_WANT_BRAINS, ZOMBIE_TRAIT)
|
|
affected_mob.med_hud_set_health()
|
|
affected_mob.med_hud_set_status()
|
|
affected_mob.update_hands_hud()
|
|
H.update_body()
|
|
if(affected_mob.mind && !affected_mob.mind.has_antag_datum(/datum/antagonist/zombie))
|
|
if(HAS_TRAIT(affected_mob, TRAIT_PLAGUE_ZOMBIE))
|
|
var/datum/antagonist/zombie/plague = new /datum/antagonist/zombie(plague_disease)
|
|
plague.silent = TRUE //to prevent the second box from appearing
|
|
plague.wiki_page_name = null
|
|
affected_mob.mind.add_antag_datum(plague)
|
|
else
|
|
affected_mob.mind.add_antag_datum(/datum/antagonist/zombie)
|
|
|
|
return TRUE
|
|
|
|
|
|
/datum/disease/zombie/handle_cure_testing(has_cure = FALSE)
|
|
if(has_cure && prob(cure_chance))
|
|
stage = max(stage - 1, 0)
|
|
|
|
if(stage <= 0 && has_cure)
|
|
cure()
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/datum/disease/zombie/proc/update_cure_stage()
|
|
for(var/datum/reagent/zombie_cure/reag in affected_mob.reagents?.reagent_list)
|
|
cure_stage = max(cure_stage, reag.cure_level)
|
|
if(cure_stage)
|
|
var/stages = list("Stabilized", "Weakened", "Faltering", "Suppressed")
|
|
name = "[stages[cure_stage]] [initial(name)]"
|
|
|
|
/datum/disease/zombie/has_cure()
|
|
update_cure_stage()
|
|
var/required_reagent = (stage + 1) / 2 // stage 1 can be cured by cure 1, stage 3 with 2, stage 5 with 3, stage 7 with 4
|
|
return cure_stage >= required_reagent
|
|
|
|
/datum/disease/zombie/cure()
|
|
affected_mob.mind?.remove_antag_datum(/datum/antagonist/zombie)
|
|
REMOVE_TRAIT(affected_mob, TRAIT_I_WANT_BRAINS, ZOMBIE_TRAIT)
|
|
var/mob/living/carbon/human/H = affected_mob
|
|
for(var/obj/item/organ/limb as anything in H.bodyparts)
|
|
if(HAS_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN))
|
|
REMOVE_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN, ZOMBIE_TRAIT)
|
|
affected_mob.DeleteComponent(/datum/component/zombie_regen)
|
|
affected_mob.med_hud_set_health()
|
|
affected_mob.med_hud_set_status()
|
|
return ..()
|
|
|
|
/datum/disease/zombie/wizard
|
|
spread_flags = SPREAD_NON_CONTAGIOUS
|
|
bypasses_immunity = TRUE
|
|
spread_text = "Non Contagious"
|
|
cure_text = "Anti-magic"
|
|
|
|
// this should not be curable. Prevents things like rez wands from un-zombifying your zombs.
|
|
/datum/disease/zombie/wizard/cure()
|
|
return
|