Simplify DoAfterArgs behavior for movement and distance checks (#25226)
* Merge BreakOnWeightlessMove and BreakOnMove. Provide different theshold for weightless movement. * Adjust WeightlessMovementThresholds. Put a thing I forgot to put in the doafterargs. * Make DoAfterArgs only use OnMove to determine whether to check for movement and MoveThreshold to determine the threshold regardless of weightlessness. Gave DistanceThreshold a default value which will always be checked now. * Fix issue introduced by merge. * Use interaction system for determining whether a distance is within range * Fix incorrect doafter args introduced by previous merge. Forgor to commit these. * Exorcise ghost. The execution system should have been deleted when I merged previously. For a reason I cannot comprehend it came back, but only the execution system. * Exorcise ghost Pt. 2 * Allow for movement check to be overriden in zero g and adjust doafter args where needed. You can now override checking for movement in zero g with the BreakOnWeightlessMove bool. By default it will check. The following doafters were made to ignore the movement check in zero g: - Healing yourself with healing items, - Removing embedded projectiles, - Using tools like welders and crowbars * Adjust distance for cuffing/uncuffing to work. Make injections not break on weightless movement. * Fix evil incorrect and uneeded comments
This commit is contained in:
@@ -214,12 +214,11 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
|
||||
args.NetUser = GetNetEntity(args.User);
|
||||
args.NetEventTarget = GetNetEntity(args.EventTarget);
|
||||
|
||||
if (args.BreakOnUserMove || args.BreakOnTargetMove)
|
||||
if (args.BreakOnMove)
|
||||
doAfter.UserPosition = Transform(args.User).Coordinates;
|
||||
|
||||
if (args.Target != null && args.BreakOnTargetMove)
|
||||
if (args.Target != null && args.BreakOnMove)
|
||||
{
|
||||
// Target should never be null if the bool is set.
|
||||
var targetPosition = Transform(args.Target.Value).Coordinates;
|
||||
doAfter.UserPosition.TryDistance(EntityManager, targetPosition, out doAfter.TargetDistance);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user