using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Shared.Interaction.Components; [RegisterComponent, Access(typeof(InteractionPopupSystem))] public sealed partial class InteractionPopupComponent : Component { /// /// Time delay between interactions to avoid spam. /// [DataField("interactDelay")] [ViewVariables(VVAccess.ReadWrite)] public TimeSpan InteractDelay = TimeSpan.FromSeconds(1.0); /// /// String will be used to fetch the localized message to be played if the interaction succeeds. /// Nullable in case none is specified on the yaml prototype. /// [DataField("interactSuccessString")] public string? InteractSuccessString; /// /// String will be used to fetch the localized message to be played if the interaction fails. /// Nullable in case no message is specified on the yaml prototype. /// [DataField("interactFailureString")] public string? InteractFailureString; /// /// Sound effect to be played when the interaction succeeds. /// Nullable in case no path is specified on the yaml prototype. /// [DataField("interactSuccessSound")] public SoundSpecifier? InteractSuccessSound; /// /// Sound effect to be played when the interaction fails. /// Nullable in case no path is specified on the yaml prototype. /// [DataField("interactFailureSound")] public SoundSpecifier? InteractFailureSound; /// /// a prototype that will spawn upon successful interaction (as planned only for special effects) /// [DataField, ViewVariables(VVAccess.ReadWrite)] public EntProtoId? InteractSuccessSpawn; /// /// a prototype that will spawn upon failure interaction (as planned only for special effects) /// [DataField, ViewVariables(VVAccess.ReadWrite)] public EntProtoId? InteractFailureSpawn; /// /// Chance that an interaction attempt will succeed. /// 1 = always play "success" popup and sound. /// 0.5 = 50% chance to play either success or failure popup and sound. /// 0 = always play "failure" popup and sound. /// [DataField("successChance")] public float SuccessChance = 1.0f; // Always succeed, unless specified otherwise on the yaml prototype. /// /// If set, shows a message to all surrounding players but NOT the current player. /// [DataField("messagePerceivedByOthers")] public string? MessagePerceivedByOthers; /// /// Will the sound effect be perceived by entities not involved in the interaction? /// [DataField("soundPerceivedByOthers")] public bool SoundPerceivedByOthers = true; [ViewVariables(VVAccess.ReadWrite)] public TimeSpan LastInteractTime; /// /// If set to true, activate interactions will also trigger the component. /// [DataField] public bool OnActivate; }