English translation:
If bot skill is from 0 to 1, target enemy in head.
If bot skill is from 1.1 to 3.9, target enemy with a randomized offset.
If bot skill is from 3.1 to 4.9, target enemy's location without correcting for movement.
If bot skill is 4.1 or worse, aim way above head without correcting for movement.
Those numbers are wrong.
I would put it like this:
Code:
if (bot_skill <= 1)
vTarget = pBotEnemy->v.origin + pBotEnemy->v.view_ofs + Vector (0, 0, -16);
else if (bot_skill > 1 && bot_skill <= 4)
vTarget = pBotEnemy->v.origin + pBotEnemy->v.view_ofs * RANDOM_FLOAT (0.5, 1.1);
else if (bot_skill > 4 && bot_skill <= 6)
vTarget = pBotEnemy->v.origin;
else if (bot_skill > 6)
vTarget = pBotEnemy->v.origin + Vector (0, 0, -32);
Now you've got all numbers covered, none double-covered, and it
should seem more realistic.
I can't figure out the code that actually does the turning of the bot, they seem to turn at the speed of light as if their sensitivity was at 200 or something extreme.