using Content.Shared.Interaction;
using Content.Shared.Inventory.VirtualItem;
using Content.Shared.Tag;
-using Content.Shared.Interaction.Events;
using Robust.Shared.Containers;
using Robust.Shared.Map;
var (itemPos, itemRot) = TransformSystem.GetWorldPositionRotation(entity);
var origin = new MapCoordinates(itemPos, itemXform.MapID);
var target = TransformSystem.ToMapCoordinates(targetDropLocation.Value);
- TransformSystem.SetWorldPositionRotation(entity, GetFinalDropCoordinates(uid, origin, target), itemRot);
+ TransformSystem.SetWorldPositionRotation(entity, GetFinalDropCoordinates(uid, origin, target, entity), itemRot);
return true;
}
/// <summary>
/// Calculates the final location a dropped item will end up at, accounting for max drop range and collision along the targeted drop path, Does a check to see if a user should bypass those checks as well.
/// </summary>
- private Vector2 GetFinalDropCoordinates(EntityUid user, MapCoordinates origin, MapCoordinates target)
+ private Vector2 GetFinalDropCoordinates(EntityUid user, MapCoordinates origin, MapCoordinates target, EntityUid held)
{
var dropVector = target.Position - origin.Position;
var requestedDropDistance = dropVector.Length();
target = new MapCoordinates(origin.Position + dropVector, target.MapId);
}
- dropLength = _interactionSystem.UnobstructedDistance(origin, target, predicate: e => e == user);
+ dropLength = _interactionSystem.UnobstructedDistance(origin, target, predicate: e => e == user || e == held);
}
if (dropLength < requestedDropDistance)