Menu interface may crash on clients that have been patched to the Half-Life 220.127.116.11 engine
On certain clients (not all 18.104.22.168 clients experience this issue), the menu system crashes the game due to a buffer overflow. This appears to be an issue with the new 22.214.171.124 engine as previous versions never seemed to have this issue. Work around this issue by using console commands instead of the menu system (the menu is simply a convenient method for accessing console command functionality).
can_get_item() sensor for weapons is broken
When used to determine whether a bot can pick up a weapon, can_get_item() will always return TRUE for weapons that it already has. The sensor should return TRUE even if the bot already has the weapon but does not have full ammo for that weapon because picking up the weapon will give the bot additional ammo. If the bot has full ammo, the sensor should return FALSE. However, the sensor also returns TRUE if the bot already has the weapon and has full ammo for the weapon.
Sometimes, in very long games, the bots die and become "unassigned"
Occasionally, a bot will assume "unassigned" status. While it is currently unclear why exactly this happens, the result is that the bot will be listed as "Unassigned" in the scoreboard and will stop respawning and stop participating in the game altogether. This is a rare occurrence and usually happens only in very, very long games (multiple days long).
Changing maps with bots in-game loses bots
Changing to a new map while bots are in a game will result in all of the bots being dropped from the game (they will not carry over to the new map like real players do). These bots are not unloaded, which results in a memory leak (albeit a minimal one) and may eventually prevent the user from adding additional bots.
Removing bots does not free up a client slot
Using the "bot remove" command causes the bots to stop participating in the game, but their client spot is not released, meaning that new players or bots cannot join in their place.
FlexStat Modules do not gather statistical information about human players
FlexStat only collects statistical information about bots. In the current release, humans are excluded from this tally. FlexMonitor, on the other hand, does provide information about human players.
Behaviors do not unload when a game is over until Half-Life is exited
When a game ends (e.g. the frag limit is reached), the bots do not unload their behaviors. This means that the behavior DLL will remain loaded until the user exits Half-Life. The most noticeable result of this problem is that the behavior DLL cannot be overwritten until the user leaves Half-Life.
This may be a problem for bot developers who want to modify their behavior based on bot performance and then load the new behavior while the Half-Life is still open. The work-around for this is to prevent the game from ending (no frag limits) and simply load the bots with another behavior, thus forcing the original behavior to be unloaded. The behavior DLL will no longer be loaded and the file can be replaced. The developer can now reload the bots with the new version of the behavior.
NPC destructor is not called in the provided bot behavior workspace
The provided bot behavior workspace does not have the method ~npc() called when a behavior is unloaded. This can be a problem if the behavior has been using new or malloc() to dynamically allocate memory. It can also present problems if the behavior opens a socket and listens on a port -- if the behavior releases the socket in the destructor, the socket may never be released until the user exits Half-Life.