using JetBrains.Annotations; namespace Content.Shared.Disease { [ImplicitDataDefinitionForInheritors] [MeansImplicitUse] public abstract class DiseaseEffect { /// /// What's the chance, from 0 to 1, that this effect will occur? /// [DataField("probability")] public float Probability = 1.0f; /// /// What effect the disease will have. /// public abstract void Effect(DiseaseEffectArgs args); } /// /// What you have to work with in any disease effect/cure. /// Includes an entity manager because it is out of scope /// otherwise. /// public readonly record struct DiseaseEffectArgs( EntityUid DiseasedEntity, DiseasePrototype Disease, IEntityManager EntityManager ); }