using Content.Shared.Polymorph.Systems;
using Content.Shared.Whitelist;
using Robust.Shared.Prototypes;
namespace Content.Shared.Polymorph.Components;
///
/// A chameleon projector polymorphs you into a clicked entity, then polymorphs back when clicked on or destroyed.
/// This creates a new dummy polymorph entity and copies the appearance over.
///
[RegisterComponent, Access(typeof(SharedChameleonProjectorSystem))]
public sealed partial class ChameleonProjectorComponent : Component
{
///
/// If non-null, whitelist for valid entities to disguise as.
///
[DataField(required: true)]
public EntityWhitelist? Whitelist;
///
/// If non-null, blacklist that prevents entities from being used even if they are in the whitelist.
///
[DataField(required: true)]
public EntityWhitelist? Blacklist;
///
/// Disguise entity to spawn and use.
///
[DataField(required: true)]
public EntProtoId DisguiseProto = string.Empty;
///
/// Action for disabling your disguise's rotation.
///
[DataField]
public EntProtoId NoRotAction = "ActionDisguiseNoRot";
[DataField]
public EntityUid? NoRotActionEntity;
///
/// Action for anchoring your disguise in place.
///
[DataField]
public EntProtoId AnchorAction = "ActionDisguiseAnchor";
[DataField]
public EntityUid? AnchorActionEntity;
///
/// Minimum health to give the disguise.
///
[DataField]
public float MinHealth = 1f;
///
/// Maximum health to give the disguise, health scales with mass.
///
[DataField]
public float MaxHealth = 100f;
///
/// User currently disguised by this projector, if any
///
[DataField]
public EntityUid? Disguised;
}