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"; }