Diseases (#7057)
* Disease system first pass * Renamed HealthChange * First working version of diseases (wtf???) * Fix the cursed yaml initialization * Pop-Up effect * Generic status effect * Create copy of prototype * CureDiseaseEffect * Disease resistance * Spaceacillin * Nerf spaceacillin now that we know it works * Sneezing, Coughing, Snoughing * Fix queuing, prevent future issues * Disease protection * Disease outbreak event * Disease Reagent Cure * Chem cause disease effect * Disease artifacts * Try infect when interacting with diseased * Diseases don't have to be infectious * Talking without a mask does a snough * Temperature cure * Bedrest * DiseaseAdjustReagent * Tweak how disease statuses work to be a bit less shit * A few more diseases * Natural immunity (can't get the same disease twice) * Polished up some diseases, touched up spaceacillin production * Rebalanced transmission * Edit a few diseases, make disease cures support a minimum value * Nitrile gloves, more disease protection sources * Health scanner shows diseased status * Clean up disease system * Traitor item * Mouth swabs * Disease diagnoser machine * Support for clean samples * Vaccines + fixes * Pass on disease resistant clothes * More work on non-infectious diseases & vaccines * Handle dead bodies * Added the relatively CBT visualizer * Pass over diseases and their populators * Comment stuff * Readability cleanup * Add printing sound to diagnoser, fix printing bug * vaccinator sound, seal up some classes * Make disease protection equip detection not shit (thanks whoever wrote addaccentcomponent) * Mirror review * More review stuff * More mirror review stuff * Refactor snoughing * Redid report creator * Fix snough messages, new vaccinator sound * Mirror review naming * Woops, forgot the artifact * Add recipes and fills * Rebalance space cold and robovirus * Give lizarb disease interaction stuff * Tweak some stuff and move things around * Add diseases to mice (since animal vectors are interesting and can be used to make vaccines) * Remove unused reagent
This commit is contained in:
68
Content.Shared/Disease/DiseasePrototype.cs
Normal file
68
Content.Shared/Disease/DiseasePrototype.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
/// <summary>
|
||||
/// Diseases encompass everything from viruses to cancers to heart disease.
|
||||
/// It's not just a virology thing.
|
||||
/// </summary>
|
||||
namespace Content.Shared.Disease
|
||||
{
|
||||
[Prototype("disease")]
|
||||
[DataDefinition]
|
||||
public sealed class DiseasePrototype : IPrototype, IInheritingPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("name")]
|
||||
public string Name { get; } = string.Empty;
|
||||
|
||||
[DataField("parent", customTypeSerializer: typeof(PrototypeIdSerializer<DiseasePrototype>))]
|
||||
public string? Parent { get; private set; }
|
||||
|
||||
[NeverPushInheritance]
|
||||
[DataField("abstract")]
|
||||
public bool Abstract { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Controls how often a disease ticks.
|
||||
/// </summary>
|
||||
public float TickTime = 1f;
|
||||
|
||||
/// <summary>
|
||||
/// Since disease isn't mapped to metabolism or anything,
|
||||
/// it needs something to control its tickrate
|
||||
/// </summary>
|
||||
public float Accumulator = 0f;
|
||||
/// <summary>
|
||||
/// List of effects the disease has that will
|
||||
/// run every second (by default anyway)
|
||||
/// </summary>
|
||||
[DataField("effects", serverOnly: true)]
|
||||
public readonly List<DiseaseEffect> Effects = new(0);
|
||||
/// <summary>
|
||||
/// List of SPECIFIC CURES the disease has that will
|
||||
/// be checked every second.
|
||||
/// Stuff like spaceacillin operates outside this.
|
||||
/// </summary>
|
||||
[DataField("cures", serverOnly: true)]
|
||||
public readonly List<DiseaseCure> Cures = new(0);
|
||||
/// <summary>
|
||||
/// This flatly reduces the probabilty disease medicine
|
||||
/// has to cure it every tick. Although, since spaceacillin is
|
||||
/// used as a reference and it has 0.15 chance, this is
|
||||
/// a base 33% reduction in cure chance
|
||||
/// </summary>
|
||||
[DataField("cureResist", serverOnly: true)]
|
||||
public float CureResist = 0.05f;
|
||||
/// <summary>
|
||||
/// Whether the disease can infect other people.
|
||||
/// Since this isn't just a virology thing, this
|
||||
/// primary determines what sort of disease it is.
|
||||
/// This also affects things like the vaccine machine.
|
||||
/// You can't print a cancer vaccine
|
||||
/// </summary>
|
||||
[DataField("infectious", serverOnly: true)]
|
||||
public bool Infectious = true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user