using Content.Shared.Damage; using Robust.Shared.GameStates; using Robust.Shared.Utility; namespace Content.Shared.Armor; /// /// Used for clothing that reduces damage when worn. /// [RegisterComponent, NetworkedComponent, Access(typeof(SharedArmorSystem))] public sealed partial class ArmorComponent : Component { /// /// The damage reduction /// [DataField(required: true)] public DamageModifierSet Modifiers = default!; /// /// A multiplier applied to the calculated point value /// to determine the monetary value of the armor /// [DataField] public float PriceMultiplier = 1; /// /// DeltaV: The incoming stamina projectile damage will get multiplied by this value. /// [DataField] public float StaminaDamageCoefficient = 1; /// /// DeltaV: The configured stamina melee damage coefficient. The actual value used /// will be this or the blunt damage coefficient, whichever provides better protection. /// [DataField] private float _staminaMeleeDamageCoefficient = 1; /// /// DeltaV: Gets or sets the effective stamina melee damage coefficient, using either the configured /// value or the blunt damage coefficient, whichever provides better protection (lower value). /// [Access(typeof(SharedArmorSystem))] public float StaminaMeleeDamageCoefficient { get { // Try to get the blunt damage coefficient from modifiers var bluntCoefficient = Modifiers.Coefficients.GetValueOrDefault("Blunt", 1.0f); // Return whichever provides better protection (lower coefficient) return Math.Min(bluntCoefficient, _staminaMeleeDamageCoefficient); } set => _staminaMeleeDamageCoefficient = value; } } /// /// Event raised on an armor entity to get additional examine text relating to its armor. /// /// [ByRefEvent] public record struct ArmorExamineEvent(FormattedMessage Msg);