using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Wieldable.Components; /// /// Used for objects that can be wielded in two or more hands, /// [RegisterComponent, NetworkedComponent, Access(typeof(SharedWieldableSystem)), AutoGenerateComponentState] public sealed partial class WieldableComponent : Component { [DataField("wieldSound")] public SoundSpecifier? WieldSound = new SoundPathSpecifier("/Audio/Effects/thudswoosh.ogg"); [DataField("unwieldSound")] public SoundSpecifier? UnwieldSound; /// /// Number of free hands required (excluding the item itself) required /// to wield it /// [DataField("freeHandsRequired")] public int FreeHandsRequired = 1; [AutoNetworkedField, DataField("wielded")] public bool Wielded = false; /// /// Whether using the item inhand while wielding causes the item to unwield. /// Unwielding can conflict with other inhand actions. /// [DataField] public bool UnwieldOnUse = true; /// /// Should use delay trigger after the wield/unwield? /// [DataField] public bool UseDelayOnWield = true; [DataField("wieldedInhandPrefix")] public string? WieldedInhandPrefix = "wielded"; public string? OldInhandPrefix = null; // WD EDIT START /// /// Requires item to be alt-used in hand (alt-Z / alt-click in active hand) to be wielded. /// [DataField] public bool AltUseInHand = false; /// /// Automatically attempts to wield the item upon being picked or switched to (while held) /// [DataField] public bool AutoWield = true; // WD EDIT END } [Serializable, NetSerializable] public enum WieldableVisuals : byte { Wielded }