using Content.Shared._DV.Armor.Systems;
using Content.Shared.Damage;
using Content.Shared.Whitelist;
using Robust.Shared.GameStates;
namespace Content.Shared._DV.Armor.Components;
///
/// Used for armor that can be held in your hands.
///
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(HandHeldArmorSystem))]
public sealed partial class HandHeldArmorComponent : Component
{
///
/// The Entity holding the handheld armor.
///
[DataField, AutoNetworkedField]
public EntityUid? Holder;
///
/// The damage reduction
///
[DataField(required: true), AutoNetworkedField]
public DamageModifierSet Modifiers;
///
/// A multiplier applied to the calculated point value
/// to determine the monetary value of the armor
///
[DataField, AutoNetworkedField]
public float PriceMultiplier = 1;
///
/// If true, you can examine the armor to see the protection. If false, the verb won't appear.
///
[DataField, AutoNetworkedField]
public bool ShowArmorOnExamine = true;
///
/// DeltaV - Gets the effective stamina melee damage coefficient, based on the armor's blunt protection.
///
[ViewVariables]
public float StaminaMeleeDamageCoefficient => Modifiers.Coefficients.GetValueOrDefault("Blunt", 1.0f);
///
/// The required components for the held armor to be active while held.
///
/// A Bible only protects the holder if they have the BibleUserComponent.
/// No whitelist check when null.
[DataField, AutoNetworkedField]
public EntityWhitelist? Whitelist;
///
/// The Loc string for the message shown in the armor examination if the user fails the whitelist requirements.
///
[DataField, AutoNetworkedField]
public string? WhitelistFailMessage;
///
/// Components for the held armor to be inactive while held.
///
/// A clown with the clumsy cannot make use of a parrying dagger.
/// No blacklist check when null.
[DataField, AutoNetworkedField]
public EntityWhitelist? Blacklist;
///
/// The Loc string for the message shown in the armor examination if the user fails the blacklist requirements.
///
[DataField, AutoNetworkedField]
public string? BlacklistFailMessage;
}