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