This is the judgment of the game itself on taking over the Bot
PHP Code:
if ( pSurvivorBot )
{
if ( !pSurvivorBot->SurvivorBot.m_humanSpectatorUserID
|| (v22 = CDirector::IsHumanSpectatorValid(pDirector, pSurvivorBot), result = 0, !v22) )
{
CDirector::NewPlayerPossessBot(a1, a2, v16, pDirector, pPlayer, pSurvivorBot_);
result = 1;
}
}
signed*int*__cdecl*CDirector::IsHumanSpectatorValid(CDirector**this,*SurvivorBot**a2)
{
****SurvivorBot**v2;*//*eax
****int*v3;*//*edi
****int*v4;*//*esi
****const*char**v5;*//*eax
****signed*int*result;*//*eax
****const*char**v7;*//*eax
****v2*=*UTIL_PlayerByUserId(a2->SurvivorBot.m_humanSpectatorUserID);
****if*(*v2*)
****{
********v3*=*a2->SurvivorBot.m_humanSpectatorUserID;
********v4*=*(v2->vptr->CBaseEntity.GetPlayerName)(v2);
********v5*=*SurvivorCharacterName(a2->SurvivorBot.CTerrorPlayer.m_survivorCharacter);
********DevMsg(1,*"[TAKEOVER]:*%s*is*already*spectated*by*%s*(%d)\n",*v5,*v4,*v3);
********result*=*1;
****}
****else
****{
********v7*=*SurvivorCharacterName(a2->SurvivorBot.CTerrorPlayer.m_survivorCharacter);
********DevMsg(1,*"[TAKEOVER]:*%s*is*spectated*by*an*invalid*userid*-*clearing*spectator*id.\n",*v7);
********RemoveTransitioningPlayerRecord(a2->SurvivorBot.m_humanSpectatorUserID);
********SurvivorBot::ResetHumanSpectator(a2);
********result*=*0;
****}
****return*result;
}*