using Content.Shared.Popups;
using Robust.Shared.GameStates;
namespace Content.Shared.Abilities.Psionics;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
public sealed partial class PsionicFamiliarComponent : Component
{
///
/// The entity that summoned this Familiar.
///
[DataField, AutoNetworkedField]
public EntityUid? Master;
///
/// Whether the familiar is allowed to attack its Master.
///
[DataField]
public bool CanAttackMaster;
///
/// Popup to play when a familiar that isn't allowed to attack its Master, attempts to do so.
///
[DataField]
public string AttackMasterText = "psionic-familiar-cant-attack-master";
///
/// Popup type to use when failing to attack the familiar's Master.
///
[DataField]
public PopupType AttackPopupType = PopupType.SmallCaution;
///
/// Text to display when a Familiar is forced to return from whence it came.
///
[DataField]
public string DespawnText = "psionic-familiar-despawn-text";
///
/// Popup type to use when a Familiar is forced to return from whence it came.
///
[DataField]
public PopupType DespawnPopopType = PopupType.MediumCaution;
///
/// Whether a Psionic Familiar is sent back from whence it came if its Master dies.
///
[DataField]
public bool DespawnOnMasterDeath = true;
///
/// Whether a Psionic Familiar is sent back from whence it came if it dies.
///
[DataField]
public bool DespawnOnFamiliarDeath = true;
///
/// Whether a Psionic Familiar is sent back from whence it came if its Master is mindbroken.
///
[DataField]
public bool DespawnOnMasterMindbroken = true;
///
/// Should the Familiar despawn when the player controlling it disconnects.
///
[DataField]
public bool DespawnOnPlayerDetach;
///
/// Whether a Psionic Familiar inherits its Master's factions.
/// This can get people into trouble if the familiar inherits a hostile faction such as Syndicate.
///
[DataField]
public bool InheritMasterFactions = true;
}