using Content.Shared.Damage; using Content.Shared.Tools; using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Server.Containers.AntiTamper; /// /// When a locked container with this component is destroyed, it will /// acidify the contents. /// [RegisterComponent] [Access(typeof(AntiTamperSystem))] public sealed partial class AntiTamperComponent : Component { /// /// List of containers to acidify. If null, /// all containers will acidify. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public HashSet? Containers; /// /// The popup message to display when the anti-tamper module /// is triggered. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public LocId Message = "anti-tamper-contents-destroyed"; /// /// The popup message to display when the anti-tamper module /// fails to trigger. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public LocId FailureMessage = "anti-tamper-random-failure"; /// /// The sound to play when the anti-tamper module is triggered. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Items/soda_spray.ogg"); /// /// If true, mobs with a will not be /// deleted, and instead will take . /// [DataField, ViewVariables(VVAccess.ReadWrite)] public bool PreventRoundRemoval = true; /// /// If is true, mobs caught inside /// of the container when the anti-tamper is activated will receive this /// damage instead of being deleted. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public DamageSpecifier MobDamage = new() { DamageDict = new() { { "Caustic", 85 } }, }; /// /// If true, mobs with /// ComplexInteractionComponent /// will be able to disarm the anti-tamper component the crate is open or they are inside of it. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public bool CanDisarm = true; /// /// The length of time it takes to disarm the anti-tamper module. Multiplied by /// if the disarming mob is locked /// inside of the container. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public TimeSpan DisarmTime = TimeSpan.FromSeconds(5); /// /// If the disarming mob is locked inside of the container, /// the will be multiplied by this. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float DisarmLockedMultiplier = 4; /// /// The tool required to disarm the anti-tamper module. If null, /// no tool is required. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public ProtoId? DisarmToolRequired = "Screwing"; }