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