Yes, you can customize routing based on a specific AGV's state. However, at this point there's not an easy "user-facing" way to do it. It's all done either through creating your own module or by putting a special "customization delegate" into the tree.
Most of the information you need is in the article I posted: Customizing AGV Speed with Jerk. You would essentially create an AGV customization delegate, either through the tree or in your own module. In this case, though, you would implement the "shouldBuildCustomRoute" and "getPathTravelWeight" functions. shouldBuildCustomRoute is called at the beginning of an AGV travel operation, and should return 1 if you want the AGV functionality to recalculate the path based on your own weightings. The getPathTravelWeight function should return a "weight" for a section of path that the AGV could potentially travel on. This is usually a simple distance along the path, but in your case you would return a very high value for paths that you don't want the AGV to travel on.
You can refer to the header files attached in that article to see what parameters are passed into the tree.
I should note there will be a CPU speed cost to implementing such a strategy. In traditional operation, the routing table is built only once, and AGVs route off of that stored routing table. If you implement custom routing, though, this means that it will re-run dijkstra's algorithm on each AGV's travel operation. The effect on speed could be significant.