Increase disposal dragging delay for other people (#3086)

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
metalgearsloth
2021-02-06 03:12:10 +11:00
committed by GitHub
parent 7ed07c0cac
commit b3869985e0

View File

@@ -80,9 +80,18 @@ namespace Content.Server.GameObjects.Components.Disposal
[ViewVariables(VVAccess.ReadWrite)] [ViewVariables(VVAccess.ReadWrite)]
private TimeSpan _flushDelay; private TimeSpan _flushDelay;
/// <summary>
/// Delay from trying to enter disposals ourselves.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)] [ViewVariables(VVAccess.ReadWrite)]
private float _entryDelay; private float _entryDelay;
/// <summary>
/// Delay from trying to shove someone else into disposals.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
private float _draggedEntryDelay;
/// <summary> /// <summary>
/// Token used to cancel the automatic engage of a disposal unit /// Token used to cancel the automatic engage of a disposal unit
/// after an entity enters it. /// after an entity enters it.
@@ -192,11 +201,15 @@ namespace Content.Server.GameObjects.Components.Disposal
if (!CanInsert(entity)) if (!CanInsert(entity))
return false; return false;
if (user != null && _entryDelay > 0f) var delay = user == entity ? _entryDelay : _draggedEntryDelay;
if (user != null && delay > 0.0f)
{ {
var doAfterSystem = EntitySystem.Get<DoAfterSystem>(); var doAfterSystem = EntitySystem.Get<DoAfterSystem>();
var doAfterArgs = new DoAfterEventArgs(user, _entryDelay, default, Owner) // Can't check if our target AND disposals moves currently so we'll just check target.
// if you really want to check if disposals moves then add a predicate.
var doAfterArgs = new DoAfterEventArgs(user, delay, default, entity)
{ {
BreakOnDamage = true, BreakOnDamage = true,
BreakOnStun = true, BreakOnStun = true,
@@ -209,7 +222,6 @@ namespace Content.Server.GameObjects.Components.Disposal
if (result == DoAfterStatus.Cancelled) if (result == DoAfterStatus.Cancelled)
return false; return false;
} }
if (!_container.Insert(entity)) if (!_container.Insert(entity))
@@ -535,7 +547,8 @@ namespace Content.Server.GameObjects.Components.Disposal
() => (int) _flushDelay.TotalSeconds); () => (int) _flushDelay.TotalSeconds);
serializer.DataField(this, x => x.Air, "air", new GasMixture(Atmospherics.CellVolume)); serializer.DataField(this, x => x.Air, "air", new GasMixture(Atmospherics.CellVolume));
serializer.DataField(ref _entryDelay, "entryDelay", 0.5f); serializer.DataField(ref _entryDelay, "entryDelay", 1.0f);
serializer.DataField(ref _draggedEntryDelay, "draggedEntryDelay", 3.0f);
} }
public override void Initialize() public override void Initialize()