6
2026-01-13 18:31:02 +02:00

64 lines
1.9 KiB
C#

using Content.Shared.Damage;
using Content.Shared.Inventory;
using Robust.Shared.GameStates;
using Robust.Shared.Utility;
namespace Content.Shared.Armor;
/// <summary>
/// Used for clothing that reduces damage when worn.
/// </summary>
[RegisterComponent, AutoGenerateComponentState, NetworkedComponent, Access(typeof(SharedArmorSystem))] // Horizon
public sealed partial class ArmorComponent : Component
{
/// <summary>
/// The damage reduction
/// </summary>
[DataField(required: true), AutoNetworkedField] // Horizon
public DamageModifierSet Modifiers = null!;
/// <summary>
/// A multiplier applied to the calculated point value
/// to determine the monetary value of the armor
/// </summary>
[DataField]
public float PriceMultiplier = 1;
[DataField, AutoNetworkedField] // Horizon Upstream
public bool DoNotShowExamine; // Horizon Upstream
/// <summary>
/// If true, you can examine the armor to see the protection. If false, the verb won't appear.
/// </summary>
[DataField]
public bool ShowArmorOnExamine = true;
}
/// <summary>
/// Event raised on an armor entity to get additional examine text relating to its armor.
/// </summary>
/// <param name="Msg"></param>
[ByRefEvent]
public record struct ArmorExamineEvent(FormattedMessage Msg);
/// <summary>
/// A Relayed inventory event, gets the total Armor for all Inventory slots defined by the Slotflags in TargetSlots
/// </summary>
public sealed class CoefficientQueryEvent : EntityEventArgs, IInventoryRelayEvent
{
/// <summary>
/// All slots to relay to
/// </summary>
public SlotFlags TargetSlots { get; set; }
/// <summary>
/// The Total of all Coefficients.
/// </summary>
public DamageModifierSet DamageModifiers { get; set; } = new DamageModifierSet();
public CoefficientQueryEvent(SlotFlags slots)
{
TargetSlots = slots;
}
}