thats because the if statement is only for
pBot->f_move_speed = 0.0;
the other stuff will always run.
instead have it
Code:
if (pBot->f_duck_time > gpGlobals->time)
{
pBot->f_move_speed = 0.0;
pBot->f_duck_time = gpGlobals->time + 1.5;
FakeClientCommand(pEdict, "say", "DUCKING", NULL);
pEdict->v.button |= IN_ATTACK; // fire the weapon
return TRUE;
}