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:
@@ -55,8 +55,7 @@ public sealed class AccessOverriderSystem : SharedAccessOverriderSystem
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.DoAfter, new AccessOverriderDoAfterEvent(), uid, target: args.Target, used: uid)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.DoAfter, new AccessOverriderDoAfterEvent(), uid, target: args.Target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -76,9 +76,8 @@ internal sealed class UdderSystem : EntitySystem
|
|||||||
|
|
||||||
var doargs = new DoAfterArgs(EntityManager, userUid, 5, new MilkingDoAfterEvent(), udder, udder, used: containerUid)
|
var doargs = new DoAfterArgs(EntityManager, userUid, 5, new MilkingDoAfterEvent(), udder, udder, used: containerUid)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
|
||||||
MovementThreshold = 1.0f,
|
MovementThreshold = 1.0f,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -109,9 +109,8 @@ public sealed class InternalsSystem : EntitySystem
|
|||||||
|
|
||||||
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new InternalsDoAfterEvent(), target, target: target)
|
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new InternalsDoAfterEvent(), target, target: target)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
MovementThreshold = 0.1f,
|
MovementThreshold = 0.1f,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,8 +47,7 @@ public sealed class BotanySwabSystem : EntitySystem
|
|||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, swab.SwabDelay, new BotanySwabDoAfterEvent(), uid, target: args.Target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, swab.SwabDelay, new BotanySwabDoAfterEvent(), uid, target: args.Target, used: uid)
|
||||||
{
|
{
|
||||||
Broadcast = true,
|
Broadcast = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,9 +205,9 @@ public sealed class InjectorSystem : SharedInjectorSystem
|
|||||||
|
|
||||||
DoAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, actualDelay, new InjectorDoAfterEvent(), injector.Owner, target: target, used: injector.Owner)
|
DoAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, actualDelay, new InjectorDoAfterEvent(), injector.Owner, target: target, used: injector.Owner)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
|
BreakOnWeightlessMove = false,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
BreakOnHandChange = true,
|
BreakOnHandChange = true,
|
||||||
MovementThreshold = 0.1f,
|
MovementThreshold = 0.1f,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public sealed class CommsHackerSystem : SharedCommsHackerSystem
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.Delay, new TerrorDoAfterEvent(), target: target, used: uid, eventTarget: uid)
|
var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.Delay, new TerrorDoAfterEvent(), target: target, used: uid, eventTarget: uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
MovementThreshold = 0.5f,
|
MovementThreshold = 0.5f,
|
||||||
CancelDuplicate = false
|
CancelDuplicate = false
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -250,8 +250,7 @@ namespace Content.Server.Construction
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, user, doAfterTime, new AwaitedDoAfterEvent(), null)
|
var doAfterArgs = new DoAfterArgs(EntityManager, user, doAfterTime, new AwaitedDoAfterEvent(), null)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = false,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = false,
|
NeedHand = false,
|
||||||
// allow simultaneously starting several construction jobs using the same stack of materials.
|
// allow simultaneously starting several construction jobs using the same stack of materials.
|
||||||
CancelDuplicate = false,
|
CancelDuplicate = false,
|
||||||
|
|||||||
@@ -288,8 +288,7 @@ namespace Content.Server.Construction
|
|||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, interactUsing.User, step.DoAfter, doAfterEv, uid, uid, interactUsing.Used)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, interactUsing.User, step.DoAfter, doAfterEv, uid, uid, interactUsing.Used)
|
||||||
{
|
{
|
||||||
BreakOnDamage = false,
|
BreakOnDamage = false,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ public sealed class PartExchangerSystem : EntitySystem
|
|||||||
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.ExchangeDuration, new ExchangerDoAfterEvent(), uid, target: args.Target, used: uid)
|
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.ExchangeDuration, new ExchangerDoAfterEvent(), uid, target: args.Target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true
|
BreakOnMove = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -512,8 +512,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, userId.Value, delay, new DisposalDoAfterEvent(), unitId, target: toInsertId, used: unitId)
|
var doAfterArgs = new DoAfterArgs(EntityManager, userId.Value, delay, new DisposalDoAfterEvent(), unitId, target: toInsertId, used: unitId)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = false
|
NeedHand = false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ namespace Content.Server.Engineering.EntitySystems
|
|||||||
{
|
{
|
||||||
var doAfterArgs = new DoAfterArgs(EntityManager, user, component.DoAfterTime, new AwaitedDoAfterEvent(), null)
|
var doAfterArgs = new DoAfterArgs(EntityManager, user, component.DoAfterTime, new AwaitedDoAfterEvent(), null)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
};
|
};
|
||||||
var result = await doAfterSystem.WaitDoAfter(doAfterArgs);
|
var result = await doAfterSystem.WaitDoAfter(doAfterArgs);
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace Content.Server.Engineering.EntitySystems
|
|||||||
{
|
{
|
||||||
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, component.DoAfterTime, new AwaitedDoAfterEvent(), null)
|
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, component.DoAfterTime, new AwaitedDoAfterEvent(), null)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
};
|
};
|
||||||
var result = await _doAfterSystem.WaitDoAfter(doAfterArgs);
|
var result = await _doAfterSystem.WaitDoAfter(doAfterArgs);
|
||||||
|
|
||||||
|
|||||||
@@ -118,8 +118,7 @@ public sealed partial class EnsnareableSystem
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, freeTime, new EnsnareableDoAfterEvent(), target, target: target, used: ensnare)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, freeTime, new EnsnareableDoAfterEvent(), target, target: target, used: ensnare)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = breakOnMove,
|
BreakOnMove = breakOnMove,
|
||||||
BreakOnTargetMove = breakOnMove,
|
|
||||||
BreakOnDamage = false,
|
BreakOnDamage = false,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
BlockDuplicate = true,
|
BlockDuplicate = true,
|
||||||
|
|||||||
@@ -239,9 +239,8 @@ public sealed class DrainSystem : SharedDrainSystem
|
|||||||
|
|
||||||
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.UnclogDuration, new DrainDoAfterEvent(), entity, args.Target, args.Used)
|
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.UnclogDuration, new DrainDoAfterEvent(), entity, args.Target, args.Used)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
BreakOnHandChange = true
|
BreakOnHandChange = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -203,9 +203,8 @@ public sealed partial class PuddleSystem
|
|||||||
{
|
{
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, entity.Comp.SpillDelay ?? 0, new SpillDoAfterEvent(), entity.Owner, target: entity.Owner)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, entity.Comp.SpillDelay ?? 0, new SpillDoAfterEvent(), entity.Owner, target: entity.Owner)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -83,9 +83,8 @@ namespace Content.Server.Forensics
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, pad.ScanDelay, ev, used, target: target, used: used)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, pad.ScanDelay, ev, used, target: target, used: used)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
NeedHand = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
NeedHand = true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(doAfterEventArgs);
|
_doAfterSystem.TryStartDoAfter(doAfterEventArgs);
|
||||||
|
|||||||
@@ -95,8 +95,7 @@ namespace Content.Server.Forensics
|
|||||||
{
|
{
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.ScanDelay, new ForensicScannerDoAfterEvent(), uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.ScanDelay, new ForensicScannerDoAfterEvent(), uid, target: target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ namespace Content.Server.Forensics
|
|||||||
BreakOnHandChange = true,
|
BreakOnHandChange = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
MovementThreshold = 0.01f,
|
MovementThreshold = 0.01f,
|
||||||
DistanceThreshold = forensicsComp.CleanDistance,
|
DistanceThreshold = forensicsComp.CleanDistance,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -193,11 +193,7 @@ namespace Content.Server.Guardian
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.InjectionDelay, new GuardianCreatorDoAfterEvent(), injector, target: target, used: injector)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.InjectionDelay, new GuardianCreatorDoAfterEvent(), injector, target: target, used: injector){BreakOnMove = true});
|
||||||
{
|
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnUserMove = true
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDoAfter(EntityUid uid, GuardianCreatorComponent component, DoAfterEvent args)
|
private void OnDoAfter(EntityUid uid, GuardianCreatorComponent component, DoAfterEvent args)
|
||||||
|
|||||||
@@ -78,9 +78,8 @@ public sealed partial class ImplanterSystem : SharedImplanterSystem
|
|||||||
{
|
{
|
||||||
var args = new DoAfterArgs(EntityManager, user, component.ImplantTime, new ImplantEvent(), implanter, target: target, used: implanter)
|
var args = new DoAfterArgs(EntityManager, user, component.ImplantTime, new ImplantEvent(), implanter, target: target, used: implanter)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -105,9 +104,8 @@ public sealed partial class ImplanterSystem : SharedImplanterSystem
|
|||||||
{
|
{
|
||||||
var args = new DoAfterArgs(EntityManager, user, component.DrawTime, new DrawEvent(), implanter, target: target, used: implanter)
|
var args = new DoAfterArgs(EntityManager, user, component.DrawTime, new DrawEvent(), implanter, target: target, used: implanter)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -257,9 +257,8 @@ namespace Content.Server.Kitchen.EntitySystems
|
|||||||
|
|
||||||
var doAfterArgs = new DoAfterArgs(EntityManager, userUid, component.SpikeDelay + butcherable.ButcherDelay, new SpikeDoAfterEvent(), uid, target: victimUid, used: uid)
|
var doAfterArgs = new DoAfterArgs(EntityManager, userUid, component.SpikeDelay + butcherable.ButcherDelay, new SpikeDoAfterEvent(), uid, target: victimUid, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -75,9 +75,8 @@ public sealed class SharpSystem : EntitySystem
|
|||||||
var doAfter =
|
var doAfter =
|
||||||
new DoAfterArgs(EntityManager, user, sharp.ButcherDelayModifier * butcher.ButcherDelay, new SharpDoAfterEvent(), knife, target: target, used: knife)
|
new DoAfterArgs(EntityManager, user, sharp.ButcherDelayModifier * butcher.ButcherDelay, new SharpDoAfterEvent(), knife, target: target, used: knife)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
};
|
};
|
||||||
_doAfterSystem.TryStartDoAfter(doAfter);
|
_doAfterSystem.TryStartDoAfter(doAfter);
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ namespace Content.Server.Light.EntitySystems
|
|||||||
// removing a working bulb, so require a delay
|
// removing a working bulb, so require a delay
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, userUid, light.EjectBulbDelay, new PoweredLightDoAfterEvent(), uid, target: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, userUid, light.EjectBulbDelay, new PoweredLightDoAfterEvent(), uid, target: uid)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -118,9 +118,8 @@ public sealed class MagicSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.LearnTime, new SpellbookDoAfterEvent(), uid, target: uid)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.LearnTime, new SpellbookDoAfterEvent(), uid, target: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
NeedHand = true //What, are you going to read with your eyes only??
|
NeedHand = true //What, are you going to read with your eyes only??
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -95,11 +95,9 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.SelectSlotTime, doAfter, uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.SelectSlotTime, doAfter, uid, target: target, used: uid)
|
||||||
{
|
{
|
||||||
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
BreakOnHandChange = false,
|
BreakOnHandChange = false,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnWeightlessMove = false,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
}, out var doAfterId);
|
}, out var doAfterId);
|
||||||
|
|
||||||
@@ -151,11 +149,9 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.ChangeSlotTime, doAfter, uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.ChangeSlotTime, doAfter, uid, target: target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
BreakOnHandChange = false,
|
BreakOnHandChange = false,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnWeightlessMove = false,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
}, out var doAfterId);
|
}, out var doAfterId);
|
||||||
|
|
||||||
@@ -206,11 +202,8 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.RemoveSlotTime, doAfter, uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.RemoveSlotTime, doAfter, uid, target: target, used: uid)
|
||||||
{
|
{
|
||||||
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnHandChange = false,
|
BreakOnHandChange = false,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnWeightlessMove = false,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
}, out var doAfterId);
|
}, out var doAfterId);
|
||||||
|
|
||||||
@@ -263,11 +256,9 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, message.Session.AttachedEntity.Value, component.AddSlotTime, doAfter, uid, target: component.Target.Value, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, message.Session.AttachedEntity.Value, component.AddSlotTime, doAfter, uid, target: component.Target.Value, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
|
BreakOnMove = true,
|
||||||
BreakOnHandChange = false,
|
BreakOnHandChange = false,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnWeightlessMove = false,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
}, out var doAfterId);
|
}, out var doAfterId);
|
||||||
|
|
||||||
|
|||||||
@@ -157,8 +157,7 @@ public sealed class MechGrabberSystem : EntitySystem
|
|||||||
component.AudioStream = _audio.PlayPvs(component.GrabSound, uid).Value.Entity;
|
component.AudioStream = _audio.PlayPvs(component.GrabSound, uid).Value.Entity;
|
||||||
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, component.GrabDelay, new GrabberDoAfterEvent(), uid, target: target, used: uid)
|
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, component.GrabDelay, new GrabberDoAfterEvent(), uid, target: target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true
|
||||||
BreakOnUserMove = true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(doAfterArgs, out component.DoAfter);
|
_doAfter.TryStartDoAfter(doAfterArgs, out component.DoAfter);
|
||||||
|
|||||||
@@ -47,8 +47,7 @@ public sealed class MechEquipmentSystem : EntitySystem
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.InstallDuration, new InsertEquipmentEvent(), uid, target: mech, used: uid)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.InstallDuration, new InsertEquipmentEvent(), uid, target: mech, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||||
|
|||||||
@@ -92,10 +92,10 @@ public sealed partial class MechSystem : SharedMechSystem
|
|||||||
|
|
||||||
if (TryComp<ToolComponent>(args.Used, out var tool) && tool.Qualities.Contains("Prying") && component.BatterySlot.ContainedEntity != null)
|
if (TryComp<ToolComponent>(args.Used, out var tool) && tool.Qualities.Contains("Prying") && component.BatterySlot.ContainedEntity != null)
|
||||||
{
|
{
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.BatteryRemovalDelay, new RemoveBatteryEvent(), uid, target: uid, used: args.Target)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.BatteryRemovalDelay,
|
||||||
|
new RemoveBatteryEvent(), uid, target: uid, used: args.Target)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true
|
||||||
BreakOnUserMove = true,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||||
@@ -182,7 +182,7 @@ public sealed partial class MechSystem : SharedMechSystem
|
|||||||
{
|
{
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.EntryDelay, new MechEntryEvent(), uid, target: uid)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.EntryDelay, new MechEntryEvent(), uid, target: uid)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||||
@@ -210,11 +210,8 @@ public sealed partial class MechSystem : SharedMechSystem
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.ExitDelay, new MechExitEvent(), uid, target: uid)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.ExitDelay,
|
||||||
{
|
new MechExitEvent(), uid, target: uid);
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnTargetMove = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,9 +165,8 @@ namespace Content.Server.Medical.BiomassReclaimer
|
|||||||
var delay = reclaimer.Comp.BaseInsertionDelay * physics.FixturesMass;
|
var delay = reclaimer.Comp.BaseInsertionDelay * physics.FixturesMass;
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, delay, new ReclaimerDoAfterEvent(), reclaimer, target: args.Target, used: args.Used)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, delay, new ReclaimerDoAfterEvent(), reclaimer, target: args.Target, used: args.Used)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
NeedHand = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true
|
||||||
NeedHand = true
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -142,8 +142,7 @@ public sealed partial class CryoPodSystem : SharedCryoPodSystem
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.EntryDelay, new CryoPodDragFinished(), entity, target: args.Dragged, used: entity)
|
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.EntryDelay, new CryoPodDragFinished(), entity, target: args.Dragged, used: entity)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = false,
|
NeedHand = false,
|
||||||
};
|
};
|
||||||
_doAfterSystem.TryStartDoAfter(doAfterArgs);
|
_doAfterSystem.TryStartDoAfter(doAfterArgs);
|
||||||
|
|||||||
@@ -178,8 +178,6 @@ public sealed class DefibrillatorSystem : EntitySystem
|
|||||||
uid, target, uid)
|
uid, target, uid)
|
||||||
{
|
{
|
||||||
BlockDuplicate = true,
|
BlockDuplicate = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnTargetMove = true,
|
|
||||||
BreakOnHandChange = true,
|
BreakOnHandChange = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -196,12 +196,11 @@ public sealed class HealingSystem : EntitySystem
|
|||||||
var doAfterEventArgs =
|
var doAfterEventArgs =
|
||||||
new DoAfterArgs(EntityManager, user, delay, new HealingDoAfterEvent(), target, target: target, used: uid)
|
new DoAfterArgs(EntityManager, user, delay, new HealingDoAfterEvent(), target, target: target, used: uid)
|
||||||
{
|
{
|
||||||
//Raise the event on the target if it's not self, otherwise raise it on self.
|
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnTargetMove = true,
|
|
||||||
// Didn't break on damage as they may be trying to prevent it and
|
// Didn't break on damage as they may be trying to prevent it and
|
||||||
// not being able to heal your own ticking damage would be frustrating.
|
// not being able to heal your own ticking damage would be frustrating.
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
|
BreakOnMove = true,
|
||||||
|
BreakOnWeightlessMove = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||||
|
|||||||
@@ -76,9 +76,8 @@ public sealed class HealthAnalyzerSystem : EntitySystem
|
|||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, uid.Comp.ScanDelay, new HealthAnalyzerDoAfterEvent(), uid, target: args.Target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, uid.Comp.ScanDelay, new HealthAnalyzerDoAfterEvent(), uid, target: args.Target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
NeedHand = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true
|
||||||
NeedHand = true
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -107,9 +107,8 @@ namespace Content.Server.Medical.Stethoscope
|
|||||||
{
|
{
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, comp.Delay, new StethoscopeDoAfterEvent(), scope, target: target, used: scope)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, comp.Delay, new StethoscopeDoAfterEvent(), scope, target: target, used: scope)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
NeedHand = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
NeedHand = true
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,9 +50,8 @@ public sealed class BatteryDrainerSystem : SharedBatteryDrainerSystem
|
|||||||
|
|
||||||
var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.DrainTime, new DrainDoAfterEvent(), target: target, eventTarget: uid)
|
var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.DrainTime, new DrainDoAfterEvent(), target: target, eventTarget: uid)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnWeightlessMove = true, // prevent a ninja on a pod remotely draining it
|
|
||||||
MovementThreshold = 0.5f,
|
MovementThreshold = 0.5f,
|
||||||
|
BreakOnMove = true,
|
||||||
CancelDuplicate = false,
|
CancelDuplicate = false,
|
||||||
AttemptFrequency = AttemptFrequency.StartAndEnd
|
AttemptFrequency = AttemptFrequency.StartAndEnd
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -591,8 +591,7 @@ public sealed class NukeSystem : EntitySystem
|
|||||||
var doAfter = new DoAfterArgs(EntityManager, user, nuke.DisarmDoafterLength, new NukeDisarmDoAfterEvent(), uid, target: uid)
|
var doAfter = new DoAfterArgs(EntityManager, user, nuke.DisarmDoafterLength, new NukeDisarmDoAfterEvent(), uid, target: uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -283,9 +283,8 @@ public sealed class DrinkSystem : EntitySystem
|
|||||||
target: target,
|
target: target,
|
||||||
used: item)
|
used: item)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = forceDrink,
|
BreakOnMove = forceDrink,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = forceDrink,
|
|
||||||
MovementThreshold = 0.01f,
|
MovementThreshold = 0.01f,
|
||||||
DistanceThreshold = 1.0f,
|
DistanceThreshold = 1.0f,
|
||||||
// Mice and the like can eat without hands.
|
// Mice and the like can eat without hands.
|
||||||
|
|||||||
@@ -180,9 +180,8 @@ public sealed class FoodSystem : EntitySystem
|
|||||||
target: target,
|
target: target,
|
||||||
used: food)
|
used: food)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = forceFeed,
|
BreakOnMove = forceFeed,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = forceFeed,
|
|
||||||
MovementThreshold = 0.01f,
|
MovementThreshold = 0.01f,
|
||||||
DistanceThreshold = MaxFeedDistance,
|
DistanceThreshold = MaxFeedDistance,
|
||||||
// Mice and the like can eat without hands.
|
// Mice and the like can eat without hands.
|
||||||
|
|||||||
@@ -113,8 +113,7 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
var vapeDoAfterEvent = new VapeDoAfterEvent(solution, forced);
|
var vapeDoAfterEvent = new VapeDoAfterEvent(solution, forced);
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, delay, vapeDoAfterEvent, entity.Owner, target: args.Target, used: entity.Owner)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, delay, vapeDoAfterEvent, entity.Owner, target: args.Target, used: entity.Owner)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = false,
|
||||||
BreakOnUserMove = false,
|
|
||||||
BreakOnDamage = true
|
BreakOnDamage = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public sealed class PortableGeneratorSystem : SharedPortableGeneratorSystem
|
|||||||
|
|
||||||
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.StartTime, new GeneratorStartedEvent(), uid, uid)
|
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.StartTime, new GeneratorStartedEvent(), uid, uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true, BreakOnTargetMove = true, BreakOnUserMove = true, RequireCanInteract = true,
|
BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,8 +63,7 @@ public sealed class EscapeInventorySystem : EntitySystem
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, component.BaseResistTime * multiplier, new EscapeInventoryEvent(), user, target: container)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, component.BaseResistTime * multiplier, new EscapeInventoryEvent(), user, target: container)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = false,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = false
|
NeedHand = false
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -47,8 +47,7 @@ public sealed class ResistLockerSystem : EntitySystem
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, resistLockerComponent.ResistTime, new ResistLockerDoAfterEvent(), target, target: target)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, resistLockerComponent.ResistTime, new ResistLockerDoAfterEvent(), target, target: target)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = false,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = false //No hands 'cause we be kickin'
|
NeedHand = false //No hands 'cause we be kickin'
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public sealed partial class RevenantSystem
|
|||||||
{
|
{
|
||||||
var searchDoAfter = new DoAfterArgs(EntityManager, uid, revenant.SoulSearchDuration, new SoulEvent(), uid, target: target)
|
var searchDoAfter = new DoAfterArgs(EntityManager, uid, revenant.SoulSearchDuration, new SoulEvent(), uid, target: target)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
DistanceThreshold = 2
|
DistanceThreshold = 2
|
||||||
};
|
};
|
||||||
@@ -140,7 +140,7 @@ public sealed partial class RevenantSystem
|
|||||||
var doAfter = new DoAfterArgs(EntityManager, uid, revenant.HarvestDebuffs.X, new HarvestEvent(), uid, target: target)
|
var doAfter = new DoAfterArgs(EntityManager, uid, revenant.HarvestDebuffs.X, new HarvestEvent(), uid, target: target)
|
||||||
{
|
{
|
||||||
DistanceThreshold = 2,
|
DistanceThreshold = 2,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
RequireCanInteract = false, // stuns itself
|
RequireCanInteract = false, // stuns itself
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -55,8 +55,7 @@ public sealed class SprayPainterSystem : SharedSprayPainterSystem
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, painter.PipeSprayTime, new SprayPainterPipeDoAfterEvent(color), args.Used, target: ent, used: args.Used)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, painter.PipeSprayTime, new SprayPainterPipeDoAfterEvent(color), args.Used, target: ent, used: args.Used)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
CancelDuplicate = true,
|
CancelDuplicate = true,
|
||||||
// multiple pipes can be sprayed at once just not the same one
|
// multiple pipes can be sprayed at once just not the same one
|
||||||
|
|||||||
@@ -93,8 +93,7 @@ public sealed class StickySystem : EntitySystem
|
|||||||
// start sticking object to target
|
// start sticking object to target
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new StickyDoAfterEvent(), uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new StickyDoAfterEvent(), uid, target: target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -148,8 +147,7 @@ public sealed class StickySystem : EntitySystem
|
|||||||
// start unsticking object
|
// start unsticking object
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new StickyDoAfterEvent(), uid, target: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new StickyDoAfterEvent(), uid, target: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -262,8 +262,7 @@ namespace Content.Server.Strip
|
|||||||
Hidden = stealth,
|
Hidden = stealth,
|
||||||
AttemptFrequency = AttemptFrequency.EveryTick,
|
AttemptFrequency = AttemptFrequency.EveryTick,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
DuplicateCondition = DuplicateConditions.SameTool
|
DuplicateCondition = DuplicateConditions.SameTool
|
||||||
};
|
};
|
||||||
@@ -356,8 +355,7 @@ namespace Content.Server.Strip
|
|||||||
Hidden = stealth,
|
Hidden = stealth,
|
||||||
AttemptFrequency = AttemptFrequency.EveryTick,
|
AttemptFrequency = AttemptFrequency.EveryTick,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
BreakOnHandChange = false, // Allow simultaneously removing multiple items.
|
BreakOnHandChange = false, // Allow simultaneously removing multiple items.
|
||||||
DuplicateCondition = DuplicateConditions.SameTool
|
DuplicateCondition = DuplicateConditions.SameTool
|
||||||
@@ -454,8 +452,7 @@ namespace Content.Server.Strip
|
|||||||
Hidden = stealth,
|
Hidden = stealth,
|
||||||
AttemptFrequency = AttemptFrequency.EveryTick,
|
AttemptFrequency = AttemptFrequency.EveryTick,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
DuplicateCondition = DuplicateConditions.SameTool
|
DuplicateCondition = DuplicateConditions.SameTool
|
||||||
};
|
};
|
||||||
@@ -554,8 +551,7 @@ namespace Content.Server.Strip
|
|||||||
Hidden = stealth,
|
Hidden = stealth,
|
||||||
AttemptFrequency = AttemptFrequency.EveryTick,
|
AttemptFrequency = AttemptFrequency.EveryTick,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
BreakOnHandChange = false, // Allow simultaneously removing multiple items.
|
BreakOnHandChange = false, // Allow simultaneously removing multiple items.
|
||||||
DuplicateCondition = DuplicateConditions.SameTool
|
DuplicateCondition = DuplicateConditions.SameTool
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public sealed class HandTeleporterSystem : EntitySystem
|
|||||||
var doafterArgs = new DoAfterArgs(EntityManager, args.User, component.PortalCreationDelay, new TeleporterDoAfterEvent(), uid, used: uid)
|
var doafterArgs = new DoAfterArgs(EntityManager, args.User, component.PortalCreationDelay, new TeleporterDoAfterEvent(), uid, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
MovementThreshold = 0.5f,
|
MovementThreshold = 0.5f,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -701,7 +701,7 @@ public sealed class WiresSystem : SharedWiresSystem
|
|||||||
{
|
{
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true
|
BreakOnMove = true
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(args);
|
_doAfter.TryStartDoAfter(args);
|
||||||
|
|||||||
@@ -45,8 +45,7 @@ public sealed class BurialSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.DigDelay / shovel.SpeedModifier, new GraveDiggingDoAfterEvent(), uid, target: args.Target, used: uid)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.DigDelay / shovel.SpeedModifier, new GraveDiggingDoAfterEvent(), uid, target: args.Target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
BreakOnHandChange = true
|
BreakOnHandChange = true
|
||||||
@@ -159,8 +158,7 @@ public sealed class BurialSystem : EntitySystem
|
|||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Entity, component.DigDelay / component.DigOutByHandModifier, new GraveDiggingDoAfterEvent(), uid, target: uid)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Entity, component.DigDelay / component.DigOutByHandModifier, new GraveDiggingDoAfterEvent(), uid, target: uid)
|
||||||
{
|
{
|
||||||
NeedHand = false,
|
NeedHand = false,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnTargetMove = false,
|
|
||||||
BreakOnHandChange = false,
|
BreakOnHandChange = false,
|
||||||
BreakOnDamage = false
|
BreakOnDamage = false
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -82,8 +82,7 @@ public sealed partial class BonkSystem : EntitySystem
|
|||||||
|
|
||||||
var doAfterArgs = new DoAfterArgs(EntityManager, args.Dragged, component.BonkDelay, new BonkDoAfterEvent(), uid, target: uid)
|
var doAfterArgs = new DoAfterArgs(EntityManager, args.Dragged, component.BonkDelay, new BonkDoAfterEvent(), uid, target: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true
|
BreakOnDamage = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -211,8 +211,7 @@ public sealed partial class ClimbSystem : VirtualController
|
|||||||
target: climbable,
|
target: climbable,
|
||||||
used: entityToMove)
|
used: entityToMove)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true
|
BreakOnDamage = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public sealed class ToggleableClothingSystem : EntitySystem
|
|||||||
var args = new DoAfterArgs(EntityManager, user, time, new ToggleClothingDoAfterEvent(), item, wearer, item)
|
var args = new DoAfterArgs(EntityManager, user, time, new ToggleClothingDoAfterEvent(), item, wearer, item)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
// This should just re-use the BUI range checks & cancel the do after if the BUI closes. But that is all
|
// This should just re-use the BUI range checks & cancel the do after if the BUI closes. But that is all
|
||||||
// server-side at the moment.
|
// server-side at the moment.
|
||||||
// TODO BUI REFACTOR.
|
// TODO BUI REFACTOR.
|
||||||
|
|||||||
@@ -479,10 +479,11 @@ namespace Content.Shared.Cuffs
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, cuffTime, new AddCuffDoAfterEvent(), handcuff, target, handcuff)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, cuffTime, new AddCuffDoAfterEvent(), handcuff, target, handcuff)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnWeightlessMove = false,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = true
|
NeedHand = true,
|
||||||
|
DistanceThreshold = 0.3f
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!_doAfter.TryStartDoAfter(doAfterEventArgs))
|
if (!_doAfter.TryStartDoAfter(doAfterEventArgs))
|
||||||
@@ -574,11 +575,12 @@ namespace Content.Shared.Cuffs
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, uncuffTime, new UnCuffDoAfterEvent(), target, target, cuffsToRemove)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, uncuffTime, new UnCuffDoAfterEvent(), target, target, cuffsToRemove)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnWeightlessMove = false,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
RequireCanInteract = false, // Trust in UncuffAttemptEvent
|
RequireCanInteract = false, // Trust in UncuffAttemptEvent
|
||||||
|
DistanceThreshold = 0.3f
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!_doAfter.TryStartDoAfter(doAfterEventArgs))
|
if (!_doAfter.TryStartDoAfter(doAfterEventArgs))
|
||||||
|
|||||||
@@ -57,8 +57,7 @@ public abstract class SharedDevourSystem : EntitySystem
|
|||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, uid, component.DevourTime, new DevourDoAfterEvent(), uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, uid, component.DevourTime, new DevourDoAfterEvent(), uid, target: target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -76,8 +75,7 @@ public abstract class SharedDevourSystem : EntitySystem
|
|||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, uid, component.StructureDevourTime, new DevourDoAfterEvent(), uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, uid, component.StructureDevourTime, new DevourDoAfterEvent(), uid, target: target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,12 +82,6 @@ public sealed partial class DoAfter
|
|||||||
{
|
{
|
||||||
Index = index;
|
Index = index;
|
||||||
|
|
||||||
if (args.Target == null)
|
|
||||||
{
|
|
||||||
DebugTools.Assert(!args.BreakOnTargetMove);
|
|
||||||
args.BreakOnTargetMove = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Args = args;
|
Args = args;
|
||||||
StartTime = startTime;
|
StartTime = startTime;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,29 +92,23 @@ public sealed partial class DoAfterArgs
|
|||||||
public bool BreakOnHandChange = true;
|
public bool BreakOnHandChange = true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If do_after stops when the user moves
|
/// If do_after stops when the user or target moves
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("breakOnUserMove")]
|
[DataField]
|
||||||
public bool BreakOnUserMove;
|
public bool BreakOnMove;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If this is true then any movement, even when weightless, will break the doafter.
|
/// Whether to break on movement when the user is weightless.
|
||||||
/// When there is no gravity, BreakOnUserMove is ignored. If it is false to begin with nothing will change.
|
/// This does nothing if <see cref="BreakOnMove"/> is false.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("breakOnWeightlessMove")]
|
[DataField]
|
||||||
public bool BreakOnWeightlessMove;
|
public bool BreakOnWeightlessMove = true;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// If do_after stops when the target moves (if there is a target)
|
|
||||||
/// </summary>
|
|
||||||
[DataField("breakOnTargetMove")]
|
|
||||||
public bool BreakOnTargetMove;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Threshold for user and target movement
|
/// Threshold for user and target movement
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("movementThreshold")]
|
[DataField("movementThreshold")]
|
||||||
public float MovementThreshold = 0.1f;
|
public float MovementThreshold = 0.3f;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Threshold for distance user from the used OR target entities.
|
/// Threshold for distance user from the used OR target entities.
|
||||||
@@ -250,9 +244,8 @@ public sealed partial class DoAfterArgs
|
|||||||
Broadcast = other.Broadcast;
|
Broadcast = other.Broadcast;
|
||||||
NeedHand = other.NeedHand;
|
NeedHand = other.NeedHand;
|
||||||
BreakOnHandChange = other.BreakOnHandChange;
|
BreakOnHandChange = other.BreakOnHandChange;
|
||||||
BreakOnUserMove = other.BreakOnUserMove;
|
BreakOnMove = other.BreakOnMove;
|
||||||
BreakOnWeightlessMove = other.BreakOnWeightlessMove;
|
BreakOnWeightlessMove = other.BreakOnWeightlessMove;
|
||||||
BreakOnTargetMove = other.BreakOnTargetMove;
|
|
||||||
MovementThreshold = other.MovementThreshold;
|
MovementThreshold = other.MovementThreshold;
|
||||||
DistanceThreshold = other.DistanceThreshold;
|
DistanceThreshold = other.DistanceThreshold;
|
||||||
BreakOnDamage = other.BreakOnDamage;
|
BreakOnDamage = other.BreakOnDamage;
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using Content.Shared.Gravity;
|
using Content.Shared.Gravity;
|
||||||
using Content.Shared.Hands.Components;
|
using Content.Shared.Hands.Components;
|
||||||
|
using Content.Shared.Interaction;
|
||||||
|
using Content.Shared.Physics;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
|
|
||||||
namespace Content.Shared.DoAfter;
|
namespace Content.Shared.DoAfter;
|
||||||
@@ -8,6 +10,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
[Dependency] private readonly IDynamicTypeFactory _factory = default!;
|
[Dependency] private readonly IDynamicTypeFactory _factory = default!;
|
||||||
[Dependency] private readonly SharedGravitySystem _gravity = default!;
|
[Dependency] private readonly SharedGravitySystem _gravity = default!;
|
||||||
|
[Dependency] private readonly SharedInteractionSystem _interaction = default!;
|
||||||
|
|
||||||
private DoAfter[] _doAfters = Array.Empty<DoAfter>();
|
private DoAfter[] _doAfters = Array.Empty<DoAfter>();
|
||||||
|
|
||||||
@@ -163,24 +166,53 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
// TODO: Re-use existing xform query for these calculations.
|
// TODO: Re-use existing xform query for these calculations.
|
||||||
// when there is no gravity you will be drifting 99% of the time making many doafters impossible
|
if (args.BreakOnMove && !(!args.BreakOnWeightlessMove && _gravity.IsWeightless(args.User, xform: userXform)))
|
||||||
// so this just ignores your movement if you are weightless (unless the doafter sets BreakOnWeightlessMove then moving will still break it)
|
{
|
||||||
if (args.BreakOnUserMove
|
// Whether the user has moved too much from their original position.
|
||||||
&& !userXform.Coordinates.InRange(EntityManager, _transform, doAfter.UserPosition, args.MovementThreshold)
|
if (!userXform.Coordinates.InRange(EntityManager, _transform, doAfter.UserPosition, args.MovementThreshold))
|
||||||
&& (args.BreakOnWeightlessMove || !_gravity.IsWeightless(args.User, xform: userXform)))
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (args.BreakOnTargetMove)
|
// Whether the distance between the user and target(if any) has changed too much.
|
||||||
|
if (targetXform != null &&
|
||||||
|
targetXform.Coordinates.TryDistance(EntityManager, userXform.Coordinates, out var distance))
|
||||||
{
|
{
|
||||||
DebugTools.Assert(targetXform != null, "Break on move is true, but no target specified?");
|
|
||||||
if (targetXform != null && targetXform.Coordinates.TryDistance(EntityManager, userXform.Coordinates, out var distance))
|
|
||||||
{
|
|
||||||
// once the target moves too far from you the do after breaks
|
|
||||||
if (Math.Abs(distance - doAfter.TargetDistance) > args.MovementThreshold)
|
if (Math.Abs(distance - doAfter.TargetDistance) > args.MovementThreshold)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Whether the user and the target are too far apart.
|
||||||
|
if (args.Target != null)
|
||||||
|
{
|
||||||
|
if (args.DistanceThreshold != null)
|
||||||
|
{
|
||||||
|
if (!_interaction.InRangeUnobstructed(args.User, args.Target.Value, args.DistanceThreshold.Value))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!_interaction.InRangeUnobstructed(args.User, args.Target.Value))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Whether the distance between the tool and the user has grown too much.
|
||||||
|
if (args.Used != null)
|
||||||
|
{
|
||||||
|
if (args.DistanceThreshold != null)
|
||||||
|
{
|
||||||
|
if (!_interaction.InRangeUnobstructed(args.User,
|
||||||
|
args.Used.Value,
|
||||||
|
args.DistanceThreshold.Value))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!_interaction.InRangeUnobstructed(args.User,args.Used.Value))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (args.AttemptFrequency == AttemptFrequency.EveryTick && !TryAttemptEvent(doAfter))
|
if (args.AttemptFrequency == AttemptFrequency.EveryTick && !TryAttemptEvent(doAfter))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@@ -199,23 +231,6 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
|
|||||||
if (args.RequireCanInteract && !_actionBlocker.CanInteract(args.User, args.Target))
|
if (args.RequireCanInteract && !_actionBlocker.CanInteract(args.User, args.Target))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (args.DistanceThreshold != null)
|
|
||||||
{
|
|
||||||
if (targetXform != null
|
|
||||||
&& !args.User.Equals(args.Target)
|
|
||||||
&& !userXform.Coordinates.InRange(EntityManager, _transform, targetXform.Coordinates,
|
|
||||||
args.DistanceThreshold.Value))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usedXform != null
|
|
||||||
&& !userXform.Coordinates.InRange(EntityManager, _transform, usedXform.Coordinates,
|
|
||||||
args.DistanceThreshold.Value))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -214,12 +214,11 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
|
|||||||
args.NetUser = GetNetEntity(args.User);
|
args.NetUser = GetNetEntity(args.User);
|
||||||
args.NetEventTarget = GetNetEntity(args.EventTarget);
|
args.NetEventTarget = GetNetEntity(args.EventTarget);
|
||||||
|
|
||||||
if (args.BreakOnUserMove || args.BreakOnTargetMove)
|
if (args.BreakOnMove)
|
||||||
doAfter.UserPosition = Transform(args.User).Coordinates;
|
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;
|
var targetPosition = Transform(args.Target.Value).Coordinates;
|
||||||
doAfter.UserPosition.TryDistance(EntityManager, targetPosition, out doAfter.TargetDistance);
|
doAfter.UserPosition.TryDistance(EntityManager, targetPosition, out doAfter.TargetDistance);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,8 +168,7 @@ public abstract partial class InventorySystem
|
|||||||
{
|
{
|
||||||
BlockDuplicate = true,
|
BlockDuplicate = true,
|
||||||
BreakOnHandChange = true,
|
BreakOnHandChange = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnTargetMove = true,
|
|
||||||
CancelDuplicate = true,
|
CancelDuplicate = true,
|
||||||
RequireCanInteract = true,
|
RequireCanInteract = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
@@ -414,8 +413,7 @@ public abstract partial class InventorySystem
|
|||||||
{
|
{
|
||||||
BlockDuplicate = true,
|
BlockDuplicate = true,
|
||||||
BreakOnHandChange = true,
|
BreakOnHandChange = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnTargetMove = true,
|
|
||||||
CancelDuplicate = true,
|
CancelDuplicate = true,
|
||||||
RequireCanInteract = true,
|
RequireCanInteract = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ public sealed class LockSystem : EntitySystem
|
|||||||
return _doAfter.TryStartDoAfter(
|
return _doAfter.TryStartDoAfter(
|
||||||
new DoAfterArgs(EntityManager, user, lockComp.LockTime, new LockDoAfter(), uid, uid)
|
new DoAfterArgs(EntityManager, user, lockComp.LockTime, new LockDoAfter(), uid, uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true, BreakOnTargetMove = true, BreakOnUserMove = true, RequireCanInteract = true,
|
BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -187,7 +187,7 @@ public sealed class LockSystem : EntitySystem
|
|||||||
return _doAfter.TryStartDoAfter(
|
return _doAfter.TryStartDoAfter(
|
||||||
new DoAfterArgs(EntityManager, user, lockComp.LockTime, new UnlockDoAfter(), uid, uid)
|
new DoAfterArgs(EntityManager, user, lockComp.LockTime, new UnlockDoAfter(), uid, uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true, BreakOnTargetMove = true, BreakOnUserMove = true, RequireCanInteract = true,
|
BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -434,7 +434,7 @@ public abstract class SharedMechSystem : EntitySystem
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Dragged, component.EntryDelay, new MechEntryEvent(), uid, target: uid)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Dragged, component.EntryDelay, new MechEntryEvent(), uid, target: uid)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||||
|
|||||||
@@ -53,10 +53,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem
|
|||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.RemovalTime.Value,
|
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.RemovalTime.Value,
|
||||||
new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid)
|
new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid));
|
||||||
{
|
|
||||||
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnEmbedRemove(EntityUid uid, EmbeddableProjectileComponent component, RemoveEmbeddedProjectileEvent args)
|
private void OnEmbedRemove(EntityUid uid, EmbeddableProjectileComponent component, RemoveEmbeddedProjectileEvent args)
|
||||||
|
|||||||
@@ -136,8 +136,7 @@ public sealed class PryingSystem : EntitySystem
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, user, TimeSpan.FromSeconds(modEv.BaseTime * modEv.PryTimeModifier / toolModifier), new DoorPryDoAfterEvent(), target, target, tool)
|
var doAfterArgs = new DoAfterArgs(EntityManager, user, TimeSpan.FromSeconds(modEv.BaseTime * modEv.PryTimeModifier / toolModifier), new DoorPryDoAfterEvent(), target, target, tool)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnWeightlessMove = true,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (tool != null)
|
if (tool != null)
|
||||||
|
|||||||
@@ -104,8 +104,7 @@ public sealed class RCDSystem : EntitySystem
|
|||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
BreakOnHandChange = true,
|
BreakOnHandChange = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnTargetMove = args.Target != null,
|
|
||||||
AttemptFrequency = AttemptFrequency.EveryTick
|
AttemptFrequency = AttemptFrequency.EveryTick
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ public abstract class SharedRatKingSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
BlockDuplicate = true,
|
BlockDuplicate = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
DistanceThreshold = 2f
|
DistanceThreshold = 2f
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ public abstract class SharedResearchStealerSystem : EntitySystem
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.Delay, new ResearchStealDoAfterEvent(), target: target, used: uid, eventTarget: uid)
|
var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.Delay, new ResearchStealDoAfterEvent(), target: target, used: uid, eventTarget: uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
MovementThreshold = 0.5f
|
MovementThreshold = 0.5f,
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfter.TryStartDoAfter(doAfterArgs);
|
_doAfter.TryStartDoAfter(doAfterArgs);
|
||||||
|
|||||||
@@ -153,8 +153,7 @@ public abstract partial class SharedFultonSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
CancelDuplicate = true,
|
CancelDuplicate = true,
|
||||||
MovementThreshold = 0.5f,
|
MovementThreshold = 0.5f,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnTargetMove = true,
|
|
||||||
Broadcast = true,
|
Broadcast = true,
|
||||||
NeedHand = true,
|
NeedHand = true,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ public abstract partial class SharedSericultureSystem : EntitySystem
|
|||||||
|
|
||||||
var doAfter = new DoAfterArgs(EntityManager, uid, comp.ProductionLength, new SericultureDoAfterEvent(), uid)
|
var doAfter = new DoAfterArgs(EntityManager, uid, comp.ProductionLength, new SericultureDoAfterEvent(), uid)
|
||||||
{ // I'm not sure if more things should be put here, but imo ideally it should probably be set in the component/YAML. Not sure if this is currently possible.
|
{ // I'm not sure if more things should be put here, but imo ideally it should probably be set in the component/YAML. Not sure if this is currently possible.
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BlockDuplicate = true,
|
BlockDuplicate = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
CancelDuplicate = true,
|
CancelDuplicate = true,
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public sealed partial class ReformSystem : EntitySystem
|
|||||||
// Create a doafter & start it
|
// Create a doafter & start it
|
||||||
var doAfter = new DoAfterArgs(EntityManager, uid, comp.ReformTime, new ReformDoAfterEvent(), uid)
|
var doAfter = new DoAfterArgs(EntityManager, uid, comp.ReformTime, new ReformDoAfterEvent(), uid)
|
||||||
{
|
{
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
BlockDuplicate = true,
|
BlockDuplicate = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
CancelDuplicate = true,
|
CancelDuplicate = true,
|
||||||
|
|||||||
@@ -134,8 +134,7 @@ public abstract class SharedSprayPainterSystem : EntitySystem
|
|||||||
|
|
||||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, painter.AirlockSprayTime, new SprayPainterDoorDoAfterEvent(sprite, style.Department), args.Used, target: ent, used: args.Used)
|
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, painter.AirlockSprayTime, new SprayPainterDoorDoAfterEvent(sprite, style.Department), args.Used, target: ent, used: args.Used)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -133,8 +133,7 @@ public sealed class DumpableSystem : EntitySystem
|
|||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, userUid, delay, new DumpableDoAfterEvent(), storageUid, target: targetUid, used: storageUid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, userUid, delay, new DumpableDoAfterEvent(), storageUid, target: targetUid, used: storageUid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ public abstract class SharedStorageSystem : EntitySystem
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, delay, new AreaPickupDoAfterEvent(GetNetEntityList(validStorables)), uid, target: uid)
|
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, delay, new AreaPickupDoAfterEvent(GetNetEntityList(validStorables)), uid, target: uid)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnMove = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -124,8 +124,8 @@ public abstract partial class SharedToolSystem : EntitySystem
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, user, delay / toolComponent.SpeedModifier, toolEvent, tool, target: target, used: tool)
|
var doAfterArgs = new DoAfterArgs(EntityManager, user, delay / toolComponent.SpeedModifier, toolEvent, tool, target: target, used: tool)
|
||||||
{
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnWeightlessMove = false,
|
||||||
NeedHand = tool != user,
|
NeedHand = tool != user,
|
||||||
AttemptFrequency = IsWelder(tool) ? AttemptFrequency.EveryTick : AttemptFrequency.Never
|
AttemptFrequency = IsWelder(tool) ? AttemptFrequency.EveryTick : AttemptFrequency.Never
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -70,8 +70,7 @@ public abstract partial class SharedVendingMachineSystem
|
|||||||
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, (float) component.RestockDelay.TotalSeconds, new RestockDoAfterEvent(), target,
|
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, (float) component.RestockDelay.TotalSeconds, new RestockDoAfterEvent(), target,
|
||||||
target: target, used: uid)
|
target: target, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -74,8 +74,7 @@ public abstract partial class SharedGunSystem
|
|||||||
|
|
||||||
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.FillDelay, new AmmoFillDoAfterEvent(), used: uid, target: args.Target, eventTarget: uid)
|
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.FillDelay, new AmmoFillDoAfterEvent(), used: uid, target: args.Target, eventTarget: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnMove = true,
|
||||||
BreakOnUserMove = true,
|
|
||||||
BreakOnDamage = false,
|
BreakOnDamage = false,
|
||||||
NeedHand = true
|
NeedHand = true
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user