| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using Content.Shared.Alert;
- using Content.Shared.Movement.Pulling.Systems;
- using Robust.Shared.GameStates;
- using Robust.Shared.Prototypes;
- using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
- namespace Content.Shared.Movement.Pulling.Components;
- /// <summary>
- /// Specifies an entity as being able to pull another entity with <see cref="PullableComponent"/>
- /// </summary>
- [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
- [Access(typeof(PullingSystem))]
- public sealed partial class PullerComponent : Component
- {
- // My raiding guild
- /// <summary>
- /// Next time the puller can throw what is being pulled.
- /// Used to avoid spamming it for infinite spin + velocity.
- /// </summary>
- [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField, Access(Other = AccessPermissions.ReadWriteExecute)]
- public TimeSpan NextThrow;
- [DataField]
- public TimeSpan ThrowCooldown = TimeSpan.FromSeconds(1);
- // Before changing how this is updated, please see SharedPullerSystem.RefreshMovementSpeed
- public float WalkSpeedModifier => Pulling == default ? 1.0f : 0.95f;
- public float SprintSpeedModifier => Pulling == default ? 1.0f : 0.95f;
- /// <summary>
- /// Entity currently being pulled if applicable.
- /// </summary>
- [AutoNetworkedField, DataField]
- public EntityUid? Pulling;
- /// <summary>
- /// Does this entity need hands to be able to pull something?
- /// </summary>
- [DataField]
- public bool NeedsHands = true;
- [DataField]
- public ProtoId<AlertPrototype> PullingAlert = "Pulling";
- }
- public sealed partial class StopPullingAlertEvent : BaseAlertEvent;
|