using Content.Shared.Damage; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Zombies; /// /// Temporary because diseases suck. /// [RegisterComponent, NetworkedComponent] public sealed partial class PendingZombieComponent : Component { /// /// Damage dealt every second to infected individuals. /// [DataField("damage")] public DamageSpecifier Damage = new() { DamageDict = new () { { "Poison", 0.3 }, } }; /// /// A multiplier for applied when the entity is in critical condition. /// [DataField("critDamageMultiplier")] public float CritDamageMultiplier = 10f; [DataField("nextTick", customTypeSerializer:typeof(TimeOffsetSerializer))] public TimeSpan NextTick; /// /// The amount of time left before the infected begins to take damage. /// [DataField("gracePeriod"), ViewVariables(VVAccess.ReadWrite)] public TimeSpan GracePeriod = TimeSpan.FromMinutes(2); /// /// The minimum amount of time initial infected have before they start taking infection damage. /// [DataField] public TimeSpan MinInitialInfectedGrace = TimeSpan.FromMinutes(12.5f); /// /// The maximum amount of time initial infected have before they start taking damage. /// [DataField] public TimeSpan MaxInitialInfectedGrace = TimeSpan.FromMinutes(15f); /// /// The chance each second that a warning will be shown. /// [DataField("infectionWarningChance")] public float InfectionWarningChance = 0.0166f; /// /// Infection warnings shown as popups /// [DataField("infectionWarnings")] public List InfectionWarnings = new() { "zombie-infection-warning", "zombie-infection-underway" }; }