If you wanted to, you could simply use Connect
instead of Wait
and disconnect it afterwards, removing the need for a coroutine.
function startRoundGuardMove(whichGuard, guardBlock)
local MoveConn = nil
whichGuard.Humanoid:MoveTo(game.Workspace.firstDestination.Position)
MoveConn = whichGuard.Humanoid.MoveToFinished:Connect(function()
MoveConn:Disconnect()
whichGuard.Humanoid:MoveTo(guardBlock.Position)
end)
end