@@ -7,6 +7,7 @@ using Content.Server.Mech.Systems;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Mech;
|
||||
using Content.Shared.Mech.Equipment.Components;
|
||||
using Content.Shared.MobState.Components;
|
||||
using Content.Shared.Wall;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Map;
|
||||
@@ -115,17 +116,17 @@ public sealed class MechGrabberSystem : EntitySystem
|
||||
|
||||
private void OnInteract(EntityUid uid, MechGrabberComponent component, InteractNoHandEvent args)
|
||||
{
|
||||
if (args.Handled || args.Target == null)
|
||||
if (args.Handled || args.Target is not {} target)
|
||||
return;
|
||||
|
||||
var xform = Transform(args.Target.Value);
|
||||
if (xform.Anchored || HasComp<WallMountComponent>(args.Target.Value))
|
||||
var xform = Transform(target);
|
||||
if (xform.Anchored || HasComp<WallMountComponent>(target) || HasComp<MobStateComponent>(target))
|
||||
return;
|
||||
|
||||
if (component.ItemContainer.ContainedEntities.Count >= component.MaxContents)
|
||||
return;
|
||||
|
||||
if (!TryComp<MechComponent>(args.User, out var mech))
|
||||
if (!TryComp<MechComponent>(args.User, out var mech) || mech.PilotSlot.ContainedEntity == target)
|
||||
return;
|
||||
|
||||
if (mech.Energy + component.GrabEnergyDelta < 0)
|
||||
@@ -134,17 +135,17 @@ public sealed class MechGrabberSystem : EntitySystem
|
||||
if (component.Token != null)
|
||||
return;
|
||||
|
||||
if (!_interaction.InRangeUnobstructed(args.User, args.Target.Value))
|
||||
if (!_interaction.InRangeUnobstructed(args.User, target))
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
component.Token = new();
|
||||
component.AudioStream = _audio.PlayPvs(component.GrabSound, uid);
|
||||
_doAfter.DoAfter(new DoAfterEventArgs(args.User, component.GrabDelay, component.Token.Token, args.Target, uid)
|
||||
_doAfter.DoAfter(new DoAfterEventArgs(args.User, component.GrabDelay, component.Token.Token, target, uid)
|
||||
{
|
||||
BreakOnTargetMove = true,
|
||||
BreakOnUserMove = true,
|
||||
UsedFinishedEvent = new MechGrabberGrabFinishedEvent(args.Target.Value),
|
||||
UsedFinishedEvent = new MechGrabberGrabFinishedEvent(target),
|
||||
UsedCancelledEvent = new MechGrabberGrabCancelledEvent()
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user