"circling around waypoint" ("stuck at waypoint","jumping around waypoint","returning to zero") bug.

This is rare and complicated bug. I've noticed that this bug happens mostly with one type of bot personality (defensive, aggresive or normal) from one team . Some bots run to one specific (camp, goal and etc.) waypoint and start circling around it. They may to circle around some normal waypoint from time to time, move to another waypoint, circle around it and so on. They also may to run to waypoint number 0 and start to circle arount it. This bug have many forms. The fact of influence of bot's personality on this bug and some strange role of waypoint number 0 in this gives us a clue. When the round starts bot chooses the index of destination waypoint. If bots use experience defensive bots will choose camp waypoints or so called defensive waypoints, aggresive bots will choose goal or offensive waypoints. For T bots defensive waypoints are T important waypoints and offensive are CT important waypoints, for CT bots defensive waypoints are CT important waypoints and offensive are T important waypoints. Before waypoints initialization indexes of defensive and offensive waypoints = 0. So if we haven't camp and T important waypoints then the T defensive bots will choose waypoint number 0 and stick at it. If this waypoint isn't accessible then they will stick at current waypoints. If we have only one camp or T important waypoint then the T defensive bots will choose it as a destination and stick at it. And so on. So the solution is:

You must have at least 6 ACCESSIBLE specific waypoints - 2 camp, 2 defensive and 2 offensive waypoints for each team.

But I absolutely don't agree to change bot's tactic only for this reason. This may be critical on small maps. So I prefer to simply turn off collectexperience at podbot.cfg. This works fine!

This bug can be easily reproduced on any map. Simply put one or several normal waypoints (and one of them should have number 0), one T important, one CT important, one goal and if it is necessary one rescue waypoint. This will allow you to do waypoint save (with check). If now we shall spawn one normal bot then we shall see that he will begin to patrol all specific waypoints. If we shall spawn one agressive bot then he will begin to patrol basically offensive waypoints. If we shall spawn one defensive bot then we shall see bug in action - bot will begin to run between zero waypoint and one important waypoint that can result in silly situations during a game. This example proves that saving of waypoints with check can not relieve from this bug. If we shall disconnect zero waypoint from other waypoints then we shall see "circling around waypoint" bug - bot will begin to circle around one important waypoint. But as soon as we shall put second defensive waypoint bug will disappear and bot will begin to patrol two defensive waypoints.

Example of tested waypoints