Fix tool do-after return values (#5764)
This commit is contained in:
@@ -705,36 +705,31 @@ namespace Content.Server.Doors.Components
|
|||||||
{
|
{
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// regardless of whether this action actually succeeded, it generated a do-after bar. So prevent other
|
||||||
|
// interactions from happening afterwards by returning true.
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// for welding doors
|
// for welding doors
|
||||||
if (CanWeldShut && _entMan.TryGetComponent(tool.Owner, out WelderComponent? welder) && welder.Lit)
|
if (_beingWelded || !CanWeldShut || !_entMan.TryGetComponent(tool.Owner, out WelderComponent? welder) || !welder.Lit)
|
||||||
{
|
{
|
||||||
if(!_beingWelded)
|
// no interaction occurred
|
||||||
{
|
return false;
|
||||||
_beingWelded = true;
|
}
|
||||||
if(await toolSystem.UseTool(eventArgs.Using, eventArgs.User, Owner, 3f, 3f, _weldingQuality, () => CanWeldShut))
|
|
||||||
{
|
|
||||||
// just in case
|
|
||||||
if (!CanWeldShut)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_beingWelded = false;
|
_beingWelded = true;
|
||||||
IsWeldedShut = !IsWeldedShut;
|
|
||||||
return true;
|
// perform a do-after delay
|
||||||
}
|
var result = await toolSystem.UseTool(eventArgs.Using, eventArgs.User, Owner, 3f, 3f, _weldingQuality, () => CanWeldShut);
|
||||||
_beingWelded = false;
|
|
||||||
}
|
// if successful, toggle the weld-status (while also ensuring that it can still be welded shut after the delay)
|
||||||
}
|
if (result)
|
||||||
else
|
IsWeldedShut = CanWeldShut && !IsWeldedShut;
|
||||||
{
|
|
||||||
_beingWelded = false;
|
_beingWelded = false;
|
||||||
}
|
return true;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user