using Robust.Shared.Prototypes;
namespace Content.Server._NF.Salvage;
///
/// This component exists as a sort of stateful marker for a
/// killswitch meant to keep salvage mobs from doing stuff they
/// really shouldn't (attacking station).
/// The main thing is that adding this component ties the mob to
/// whatever it's currently parented to.
///
[RegisterComponent]
public sealed partial class NFSalvageMobRestrictionsComponent : Component
{
[DataField, ViewVariables(VVAccess.ReadOnly)]
public EntityUid LinkedGridEntity = EntityUid.Invalid;
///
/// If set to false, this mob will not be despawned when its linked entity is despawned.
/// Useful for event ghost roles, for instance.
///
[DataField]
public bool DespawnIfOffLinkedGrid = true;
// On walking off grid
[DataField]
public string LeaveGridPopup = "dungeon-boss-grid-warning";
///
/// Components to be added when the mob leave the grid.
///
[DataField]
public ComponentRegistry AddComponentsLeaveGrid { get; set; } = new();
///
/// Components to be removed when the mob leave the grid.
///
[DataField]
public ComponentRegistry RemoveComponentsLeaveGrid { get; set; } = new();
///
/// Components to be added when the mob return to the grid.
///
[DataField]
public ComponentRegistry AddComponentsReturnGrid { get; set; } = new();
///
/// Components to be removed when the mob return to the grid.
///
[DataField]
public ComponentRegistry RemoveComponentsReturnGrid { get; set; } = new();
// On death
///
/// Components to be added on death.
///
[DataField]
public ComponentRegistry AddComponentsOnDeath { get; set; } = new();
///
/// Components to be removed on death.
///
[DataField]
public ComponentRegistry RemoveComponentsOnDeath { get; set; } = new();
///
/// Components to be added on revivel.
///
[DataField]
public ComponentRegistry AddComponentsOnRevival { get; set; } = new();
///
/// Components to be removed on revival.
///
[DataField]
public ComponentRegistry RemoveComponentsOnRevival { get; set; } = new();
}