using Content.Shared.Damage;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
namespace Content.Shared.Clumsy;
///
/// A simple clumsy tag-component.
///
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class ClumsyComponent : Component
{
// Standard options. Try to fit these in if you can!
///
/// Sound to play when clumsy interactions fail.
///
[DataField]
public SoundSpecifier ClumsySound = new SoundPathSpecifier("/Audio/Items/bikehorn.ogg");
///
/// Default chance to fail a clumsy interaction.
/// If a system needs to use something else, add a new variable in the component, do not modify this percentage.
///
[DataField, AutoNetworkedField]
public float ClumsyDefaultCheck = 0.5f;
///
/// Default stun time.
/// If a system needs to use something else, add a new variable in the component, do not modify this number.
///
[DataField, AutoNetworkedField]
public TimeSpan ClumsyDefaultStunTime = TimeSpan.FromSeconds(2.5);
// Specific options
///
/// Sound to play after hitting your head on a table. Ouch!
///
[DataField]
public SoundCollectionSpecifier TableBonkSound = new SoundCollectionSpecifier("TrayHit");
///
/// Stun time after failing to shoot a gun.
///
[DataField, AutoNetworkedField]
public TimeSpan GunShootFailStunTime = TimeSpan.FromSeconds(3);
///
/// Stun time after failing to shoot a gun.
///
[DataField, AutoNetworkedField]
public DamageSpecifier? GunShootFailDamage;
///
/// Noise to play after failing to shoot a gun. Boom!
///
[DataField]
public SoundSpecifier GunShootFailSound = new SoundPathSpecifier("/Audio/Weapons/Guns/Gunshots/bang.ogg");
///
/// Whether or not to apply Clumsy to hyposprays.
///
[DataField, AutoNetworkedField]
public bool ClumsyHypo = true;
///
/// Whether or not to apply Clumsy to defibs.
///
[DataField, AutoNetworkedField]
public bool ClumsyDefib = true;
///
/// Whether or not to apply Clumsy to guns.
///
[DataField, AutoNetworkedField]
public bool ClumsyGuns = true;
///
/// Whether or not to apply Clumsy to vaulting.
///
[DataField, AutoNetworkedField]
public bool ClumsyVaulting = true;
///
/// Lets you define a new "failed" message for each event.
///
[DataField]
public LocId HypoFailedMessage = "hypospray-component-inject-self-clumsy-message";
[DataField]
public LocId GunFailedMessage = "gun-clumsy";
[DataField]
public LocId VaulingFailedMessageSelf = "bonkable-success-message-user";
[DataField]
public LocId VaulingFailedMessageOthers = "bonkable-success-message-others";
[DataField]
public LocId VaulingFailedMessageForced = "forced-bonkable-success-message";
}