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:
nikthechampiongr
2024-03-19 12:09:00 +02:00
committed by GitHub
parent 06b3f273ea
commit 362d56981f
75 changed files with 158 additions and 229 deletions

View File

@@ -69,7 +69,7 @@ public sealed partial class ReformSystem : EntitySystem
// Create a doafter & start it
var doAfter = new DoAfterArgs(EntityManager, uid, comp.ReformTime, new ReformDoAfterEvent(), uid)
{
BreakOnUserMove = true,
BreakOnMove = true,
BlockDuplicate = true,
BreakOnDamage = true,
CancelDuplicate = true,
@@ -89,7 +89,7 @@ public sealed partial class ReformSystem : EntitySystem
return;
// Spawn a new entity
// This is, to an extent, taken from polymorph. I don't use polymorph for various reasons- most notably that this is permanent.
// This is, to an extent, taken from polymorph. I don't use polymorph for various reasons- most notably that this is permanent.
var child = Spawn(comp.ReformPrototype, Transform(uid).Coordinates);
// This transfers the mind to the new entity
@@ -105,7 +105,7 @@ public sealed partial class ReformSystem : EntitySystem
_actionsSystem.RemoveAction(uid, comp.ActionEntity); // Zombies can't reform
}
public sealed partial class ReformEvent : InstantActionEvent { }
public sealed partial class ReformEvent : InstantActionEvent { }
[Serializable, NetSerializable]
public sealed partial class ReformDoAfterEvent : SimpleDoAfterEvent { }