mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-11-05 02:24:01 +03:00
Stop welder from being spammable on doors (#2196)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
parent
4e085d8847
commit
2c39656c9e
1 changed files with 21 additions and 1 deletions
|
|
@ -89,6 +89,11 @@ namespace Content.Server.GameObjects.Components.Doors
|
|||
private bool _isWeldedShut;
|
||||
|
||||
private bool _canWeldShut = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether something is currently using a welder on this so DoAfter isn't spammed.
|
||||
/// </summary>
|
||||
private bool _beingWelded = false;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
private bool _canCrush = true;
|
||||
|
|
@ -467,14 +472,29 @@ namespace Content.Server.GameObjects.Components.Doors
|
|||
public virtual async Task<bool> InteractUsing(InteractUsingEventArgs eventArgs)
|
||||
{
|
||||
if (!_canWeldShut)
|
||||
{
|
||||
_beingWelded = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!eventArgs.Using.TryGetComponent(out WelderComponent? tool))
|
||||
{
|
||||
_beingWelded = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_beingWelded)
|
||||
return false;
|
||||
|
||||
_beingWelded = true;
|
||||
|
||||
if (!await tool.UseTool(eventArgs.User, Owner, 3f, ToolQuality.Welding, 3f, () => _canWeldShut))
|
||||
{
|
||||
_beingWelded = false;
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
_beingWelded = false;
|
||||
IsWeldedShut ^= true;
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue