In line 891 in mob.h
replace this:
Code:
bool IsEngaged() { return( !hate_list.IsEmpty() ); }
with something like this:
Code:
bool IsEngaged() { return( IsAIControlled() ? !hate_list.IsEmpty() : !CastToClient()->GetAggroCount() ); }
This should clear up some logic issues in the current bot code.
Reasoning: Combat checks are made to determine if a player is allowed to spawn a bot. Since a client's hate list is always empty, they're able to spawn a bot when they have aggro (assuming they don't have any bots spawned). This allows a client to camp bots and respawn them to zerg raid targets until they're dead.
I don't think it should have any adverse effects on other processes.