Fix being able to start pulling something while incapacitated. (#4240)
This commit is contained in:
committed by
GitHub
parent
a1088faa35
commit
9bedfe79be
@@ -204,6 +204,11 @@ namespace Content.Shared.Pulling.Components
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!EntitySystem.Get<SharedPullingSystem>().CanPull(puller, Owner))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_physics == null)
|
||||
{
|
||||
return false;
|
||||
|
||||
19
Content.Shared/Pulling/Events/StartPullAttemptEvent.cs
Normal file
19
Content.Shared/Pulling/Events/StartPullAttemptEvent.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using Robust.Shared.GameObjects;
|
||||
|
||||
namespace Content.Shared.Pulling.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// Directed event raised on the puller to see if it can start pulling something.
|
||||
/// </summary>
|
||||
public class StartPullAttemptEvent : CancellableEntityEventArgs
|
||||
{
|
||||
public StartPullAttemptEvent(IEntity puller, IEntity pulled)
|
||||
{
|
||||
Puller = puller;
|
||||
Pulled = pulled;
|
||||
}
|
||||
|
||||
public IEntity Puller { get; }
|
||||
public IEntity Pulled { get; }
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ using Content.Shared.GameTicking;
|
||||
using Content.Shared.Input;
|
||||
using Content.Shared.Physics.Pull;
|
||||
using Content.Shared.Pulling.Components;
|
||||
using Content.Shared.Pulling.Events;
|
||||
using Content.Shared.Rotatable;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Containers;
|
||||
@@ -237,5 +238,12 @@ namespace Content.Shared.Pulling
|
||||
pulled.Transform.WorldRotation = newAngle;
|
||||
}
|
||||
}
|
||||
|
||||
public bool CanPull(IEntity puller, IEntity pulled)
|
||||
{
|
||||
var startPull = new StartPullAttemptEvent(puller, pulled);
|
||||
RaiseLocalEvent(puller.Uid, startPull);
|
||||
return !startPull.Cancelled;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user