using Content.Shared.Changeling.Systems; using Content.Shared.Cloning; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Changeling.Components; /// /// The component containing information about Changelings Transformation action /// Like how long their windup is, the sounds as well as the Target Cloning settings for changing between identities /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(ChangelingTransformSystem))] public sealed partial class ChangelingTransformComponent : Component { /// /// The action Prototype for Transforming /// [DataField] public EntProtoId? ChangelingTransformAction = "ActionChangelingTransform"; /// /// The Action Entity for transforming associated with this Component /// [DataField, AutoNetworkedField] public EntityUid? ChangelingTransformActionEntity; /// /// Time it takes to Transform /// [DataField, AutoNetworkedField] public TimeSpan TransformWindup = TimeSpan.FromSeconds(5); /// /// The noise used when attempting to transform /// [DataField, AutoNetworkedField] public SoundSpecifier? TransformAttemptNoise = new SoundCollectionSpecifier("ChangelingTransformAttempt", AudioParams.Default.WithMaxDistance(6)); // 6 distance due to the default 15 being hearable all the way across PVS. Changeling is meant to be stealthy. 6 still allows the sound to be hearable, but not across an entire department. /// /// The currently active transform in the world /// [DataField] public EntityUid? CurrentTransformSound; /// /// The cloning settings passed to the CloningSystem, contains a list of all components to copy or have handled by their /// respective systems. /// public ProtoId TransformCloningSettings = "ChangelingCloningSettings"; public override bool SendOnlyToOwner => true; }