using Content.Server.Physics.Controllers; using Content.Shared.Physics; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Server.Physics.Components; /// /// A component which makes its entity periodically chaotic jumps arounds /// [RegisterComponent, Access(typeof(ChaoticJumpSystem))] public sealed partial class ChaoticJumpComponent : Component { /// /// The next moment in time when the entity is pushed toward its goal /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextJumpTime; /// /// Minimum interval between jumps /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float JumpMinInterval = 5f; /// /// Maximum interval between jumps /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float JumpMaxInterval = 15f; /// /// collision limits for which it is impossible to make a jump /// [DataField, ViewVariables(VVAccess.ReadWrite)] public int CollisionMask = (int) CollisionGroup.Impassable; /// /// Minimum jump range /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float RangeMin = 5f; /// /// Maximum jump range /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float RangeMax = 10f; /// /// Spawn before jump /// [DataField, ViewVariables(VVAccess.ReadWrite)] public EntProtoId Effect = "EffectEmpPulse"; }