Comparing files ai_chat.c and \merge\newsrc\game\ai_chat.c
****** ai_chat.c
                case MOD_ROCKET_SPLASH: return "Rocket Launcher";
              case MOD_ROCKET_HOMING:
              case MOD_ROCKET_HOMING_SPLASH: return "Homing Missile Launcher";
                case MOD_PLASMA:
****** \merge\newsrc\game\ai_chat.c
                case MOD_ROCKET_SPLASH: return "Rocket Launcher";
                case MOD_PLASMA:
******

****** ai_chat.c

       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
******

****** ai_chat.c

       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
******

****** ai_chat.c

       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (BotIsObserver(bs)) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (BotIsObserver(bs)) return qfalse;
******

****** ai_chat.c
        //don't chat in teamplay
       #ifdef MISSIONPACK
        if (TeamPlayIsOn()) {
****** \merge\newsrc\game\ai_chat.c
        //don't chat in teamplay
        if (TeamPlayIsOn()) {
******

****** ai_chat.c
        }
       #endif
        // don't chat in tournament mode
****** \merge\newsrc\game\ai_chat.c
        }
        // don't chat in tournament mode
******

****** ai_chat.c

       if (bot_nochat.integer) return qfalse;
        if (BotIsObserver(bs)) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (BotIsObserver(bs)) return qfalse;
******

****** ai_chat.c
        // teamplay
       #ifdef MISSIONPACK
        if (TeamPlayIsOn()) 
****** \merge\newsrc\game\ai_chat.c
        // teamplay
        if (TeamPlayIsOn()) 
******

****** ai_chat.c
        }
       #endif
        // don't chat in tournament mode
****** \merge\newsrc\game\ai_chat.c
        }
        // don't chat in tournament mode
******

****** ai_chat.c
                //teamplay
              #ifdef MISSIONPACK
                if (TeamPlayIsOn()) {
****** \merge\newsrc\game\ai_chat.c
                //teamplay
                if (TeamPlayIsOn()) {
******

****** ai_chat.c
                }
              #endif
                //
****** \merge\newsrc\game\ai_chat.c
                }
                //
******

****** ai_chat.c

       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
******

****** ai_chat.c
                //don't chat in teamplay
              #ifdef MISSIONPACK
                if (TeamPlayIsOn()) {
****** \merge\newsrc\game\ai_chat.c
                //don't chat in teamplay
                if (TeamPlayIsOn()) {
******

****** ai_chat.c
                }
              #endif
                //
****** \merge\newsrc\game\ai_chat.c
                }
                //
******

****** ai_chat.c

       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
******

****** ai_chat.c

       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
******

****** ai_chat.c
        //
       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
****** \merge\newsrc\game\ai_chat.c
        //
        if (bot_nochat.integer) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
******

****** ai_chat.c

       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (bs->lastchat_time > FloatTime() - TIME_BETWEENCHATTING) return qfalse;
******

****** ai_chat.c

       if (bot_nochat.integer || g_instagib.integer && random() < 2) return qfalse;
        if (BotIsObserver(bs)) return qfalse;
****** \merge\newsrc\game\ai_chat.c

        if (bot_nochat.integer) return qfalse;
        if (BotIsObserver(bs)) return qfalse;
******

****** ai_chat.c
        }
       #ifdef MISSIONPACK
        if (TeamPlayIsOn()) {
****** \merge\newsrc\game\ai_chat.c
        }
        if (TeamPlayIsOn()) {
******

****** ai_chat.c
        }
       #endif
        //
****** \merge\newsrc\game\ai_chat.c
        }
        //
******


Comparing files ai_cmd.c and \merge\newsrc\game\ai_cmd.c
FC: no differences encountered

Comparing files ai_dmnet.c and \merge\newsrc\game\ai_dmnet.c
****** ai_dmnet.c
        else if (BotReachedGoal(bs, goal)) {
              BotChooseWeapon(bs);
                bs->ltg_time = 0;
****** \merge\newsrc\game\ai_dmnet.c
        else if (BotReachedGoal(bs, goal)) {
                BotChooseWeapon(bs);
                bs->ltg_time = 0;
******

****** ai_dmnet.c
        else if (BotReachedGoal(bs, &goal)) {
              BotChooseWeapon(bs);
                bs->nbg_time = 0;
****** \merge\newsrc\game\ai_dmnet.c
        else if (BotReachedGoal(bs, &goal)) {
                BotChooseWeapon(bs);
                bs->nbg_time = 0;
******

****** ai_dmnet.c
        //if the enemy is invisible and not shooting the bot looses track easily
       if (EntityIsInvisible(&entinfo) && !EntityIsShooting(&entinfo)) {
              if (random() < 0.2 && startwithpowerups.integer != 6 && startwithpowerups.integer != 7)
              {
                        AIEnter_Seek_LTG(bs);
                     return qfalse;
              }
        }
****** \merge\newsrc\game\ai_dmnet.c
        //if the enemy is invisible and not shooting the bot looses track easily
        if (EntityIsInvisible(&entinfo) && !EntityIsShooting(&entinfo)) {
                if (random() < 0.2) {
                        AIEnter_Seek_LTG(bs);
                        return qfalse;
                }
        }
******

****** ai_dmnet.c
        //choose the best weapon to fight with
              BotChooseWeapon(bs);
        //do attack movements
****** \merge\newsrc\game\ai_dmnet.c
        //choose the best weapon to fight with
        BotChooseWeapon(bs);
        //do attack movements
******

****** ai_dmnet.c
        //choose the best weapon to fight with
              BotChooseWeapon(bs);
        //if the view is fixed for the movement
****** \merge\newsrc\game\ai_dmnet.c
        //choose the best weapon to fight with
        BotChooseWeapon(bs);
        //if the view is fixed for the movement
******

****** ai_dmnet.c
        //choose the best weapon to fight with
              BotChooseWeapon(bs);
        //if the view is fixed for the movement
****** \merge\newsrc\game\ai_dmnet.c
        //choose the best weapon to fight with
        BotChooseWeapon(bs);
        //if the view is fixed for the movement
******


Comparing files ai_dmq3.c and \merge\newsrc\game\ai_dmq3.c
****** ai_dmq3.c
        if (bs->client < 0 || bs->client >= MAX_CLIENTS) {
              BotAI_Print(PRT_ERROR, "BotCTFTeam: client out of range\n");
                return qfalse;
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->client < 0 || bs->client >= MAX_CLIENTS) {
                //BotAI_Print(PRT_ERROR, "BotCTFTeam: client out of range\n");
                return qfalse;
******

****** ai_dmq3.c
qboolean EntityIsInvisible(aas_entityinfo_t *entinfo) {
       if (entinfo->powerups & (1 << PW_INVIS)) {
                return qtrue;
****** \merge\newsrc\game\ai_dmq3.c
qboolean EntityIsInvisible(aas_entityinfo_t *entinfo) {
        if (entinfo->powerups & (1 << PW_INVIS)) {
                return qtrue;
******

****** ai_dmq3.c
==================
EntityIsProtected
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
EntityCarriesFlag
==================
******

****** ai_dmq3.c
*/
qboolean EntityIsProtected(aas_entityinfo_t *entinfo) {
       if (entinfo->powerups & (1 << PW_PROTECT)) {
                return qtrue;
        }
        return qfalse;
****** \merge\newsrc\game\ai_dmq3.c
*/
qboolean EntityCarriesFlag(aas_entityinfo_t *entinfo) {
        if ( entinfo->powerups & ( 1 << PW_REDFLAG ) )
                return qtrue;
        if ( entinfo->powerups & ( 1 << PW_BLUEFLAG ) )
                return qtrue;
#ifdef MISSIONPACK
        if ( entinfo->powerups & ( 1 << PW_NEUTRALFLAG ) )
                return qtrue;
#endif
        return qfalse;
******

****** ai_dmq3.c
==================
EntityCarriesFlag
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
EntityIsShooting
==================
******

****** ai_dmq3.c
*/
qboolean EntityCarriesFlag(aas_entityinfo_t *entinfo) {
        if ( entinfo->powerups & ( 1 << PW_REDFLAG ) )
                return qtrue;
        if ( entinfo->powerups & ( 1 << PW_BLUEFLAG ) )
                return qtrue;
#ifdef MISSIONPACK
        if ( entinfo->powerups & ( 1 << PW_NEUTRALFLAG ) )
                return qtrue;
#endif
        return qfalse;
****** \merge\newsrc\game\ai_dmq3.c
*/
qboolean EntityIsShooting(aas_entityinfo_t *entinfo) {
        if (entinfo->flags & EF_FIRING) {
                return qtrue;
        }
        return qfalse;
******

****** ai_dmq3.c
==================
EntityIsShooting
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
EntityIsChatting
==================
******

****** ai_dmq3.c
*/
qboolean EntityIsShooting(aas_entityinfo_t *entinfo) {
        if (entinfo->flags & EF_FIRING) {
                return qtrue;
****** \merge\newsrc\game\ai_dmq3.c
*/
qboolean EntityIsChatting(aas_entityinfo_t *entinfo) {
        if (entinfo->flags & EF_TALK) {
                return qtrue;
******

****** ai_dmq3.c
==================
EntityIsChatting
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
EntityHasQuad
==================
******

****** ai_dmq3.c
*/
qboolean EntityIsChatting(aas_entityinfo_t *entinfo) {
        if (entinfo->flags & EF_TALK) {
                return qtrue;
****** \merge\newsrc\game\ai_dmq3.c
*/
qboolean EntityHasQuad(aas_entityinfo_t *entinfo) {
        if (entinfo->powerups & (1 << PW_QUAD)) {
                return qtrue;
******

****** ai_dmq3.c

/*
****** \merge\newsrc\game\ai_dmq3.c

#ifdef MISSIONPACK
/*
******

****** ai_dmq3.c
==================
EntityHasQuad
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
EntityHasKamikze
==================
******

****** ai_dmq3.c
*/
qboolean EntityHasQuad(aas_entityinfo_t *entinfo) {
        if (entinfo->powerups & (1 << PW_QUAD)) {
                return qtrue;
****** \merge\newsrc\game\ai_dmq3.c
*/
qboolean EntityHasKamikaze(aas_entityinfo_t *entinfo) {
        if (entinfo->flags & EF_KAMIKAZE) {
                return qtrue;
******

****** ai_dmq3.c

#ifdef MISSIONPACK
/*
****** \merge\newsrc\game\ai_dmq3.c

/*
******

****** ai_dmq3.c
==================
EntityHasKamikze
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
EntityCarriesCubes
==================
******

****** ai_dmq3.c
*/
qboolean EntityHasKamikaze(aas_entityinfo_t *entinfo) {
        if (entinfo->flags & EF_KAMIKAZE) {
                return qtrue;
        }
        return qfalse;
****** \merge\newsrc\game\ai_dmq3.c
*/
qboolean EntityCarriesCubes(aas_entityinfo_t *entinfo) {
        entityState_t state;

        if (gametype != GT_HARVESTER)
                return qfalse;
        //FIXME: get this info from the aas_entityinfo_t ?
        BotAI_GetEntityState(entinfo->number, &state);
        if (state.generic1 > 0)
                return qtrue;
        return qfalse;
******

****** ai_dmq3.c
==================
EntityCarriesCubes
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
Bot1FCTFCarryingFlag
==================
******

****** ai_dmq3.c
*/
qboolean EntityCarriesCubes(aas_entityinfo_t *entinfo) {
        entityState_t state;

        if (gametype != GT_HARVESTER)
                return qfalse;
        //FIXME: get this info from the aas_entityinfo_t ?
        BotAI_GetEntityState(entinfo->number, &state);
        if (state.generic1 > 0)
                return qtrue;
        return qfalse;
****** \merge\newsrc\game\ai_dmq3.c
*/
int Bot1FCTFCarryingFlag(bot_state_t *bs) {
        if (gametype != GT_1FCTF) return qfalse;

        if (bs->inventory[INVENTORY_NEUTRALFLAG] > 0) return qtrue;
        return qfalse;
******

****** ai_dmq3.c
==================
Bot1FCTFCarryingFlag
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
BotHarvesterCarryingCubes
==================
******

****** ai_dmq3.c
*/
int Bot1FCTFCarryingFlag(bot_state_t *bs) {
        if (gametype != GT_1FCTF) return qfalse;

        if (bs->inventory[INVENTORY_NEUTRALFLAG] > 0) return qtrue;
        return qfalse;
****** \merge\newsrc\game\ai_dmq3.c
*/
int BotHarvesterCarryingCubes(bot_state_t *bs) {
        if (gametype != GT_HARVESTER) return qfalse;

        if (bs->inventory[INVENTORY_REDCUBE] > 0) return qtrue;
        if (bs->inventory[INVENTORY_BLUECUBE] > 0) return qtrue;
        return qfalse;
******

****** ai_dmq3.c
}

****** \merge\newsrc\game\ai_dmq3.c
}
#endif

******

****** ai_dmq3.c
==================
BotHarvesterCarryingCubes
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
BotRememberLastOrderedTask
==================
******

****** ai_dmq3.c
*/
int BotHarvesterCarryingCubes(bot_state_t *bs) {
        if (gametype != GT_HARVESTER) return qfalse;

        if (bs->inventory[INVENTORY_REDCUBE] > 0) return qtrue;
        if (bs->inventory[INVENTORY_BLUECUBE] > 0) return qtrue;
        return qfalse;
}
#endif

****** \merge\newsrc\game\ai_dmq3.c
*/
void BotRememberLastOrderedTask(bot_state_t *bs) {
        if (!bs->ordered) {
                return;
        }
        bs->lastgoal_decisionmaker = bs->decisionmaker;
        bs->lastgoal_ltgtype = bs->ltgtype;
        memcpy(&bs->lastgoal_teamgoal, &bs->teamgoal, sizeof(bot_goal_t));
        bs->lastgoal_teammate = bs->teammate;
}

******

****** ai_dmq3.c
==================
BotRememberLastOrderedTask
==================
****** \merge\newsrc\game\ai_dmq3.c
==================
BotSetTeamStatus
==================
******

****** ai_dmq3.c
*/
void BotRememberLastOrderedTask(bot_state_t *bs) {
        if (!bs->ordered) {
                return;
        }
        bs->lastgoal_decisionmaker = bs->decisionmaker;
        bs->lastgoal_ltgtype = bs->ltgtype;
        memcpy(&bs->lastgoal_teamgoal, &bs->teamgoal, sizeof(bot_goal_t));
        bs->lastgoal_teammate = bs->teammate;
}

/*
==================
BotSetTeamStatus
==================
*/
void BotSetTeamStatus(bot_state_t *bs) {
****** \merge\newsrc\game\ai_dmq3.c
*/
void BotSetTeamStatus(bot_state_t *bs) {
******

****** ai_dmq3.c
        int newweaponnum;
        if (bs->cur_ps.weaponstate == WEAPON_RAISING ||
                     bs->cur_ps.weaponstate == WEAPON_DROPPING) {
                trap_EA_SelectWeapon(bs->client, bs->weaponnum);
****** \merge\newsrc\game\ai_dmq3.c
        int newweaponnum;

        if (bs->cur_ps.weaponstate == WEAPON_RAISING ||
                        bs->cur_ps.weaponstate == WEAPON_DROPPING) {
                trap_EA_SelectWeapon(bs->client, bs->weaponnum);
******

****** ai_dmq3.c
        }
       else if (randomweap.integer == 1)
       {
              bs->weaponnum = level.currweap+1;
                trap_EA_SelectWeapon(bs->client, bs->weaponnum);
       }
        else {
****** \merge\newsrc\game\ai_dmq3.c
        }
        else {
******

****** ai_dmq3.c
        if (bs->inventory[INVENTORY_BFG10K] > 0 &&
                     (bs->inventory[INVENTORY_BFGAMMO] > 7 || startwithbfgammo.integer == -1 && startwithbfg.integer)) return 1
00;
        //if the bot can use the railgun
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->inventory[INVENTORY_BFG10K] > 0 &&
                        bs->inventory[INVENTORY_BFGAMMO] > 7) return 100;
        //if the bot can use the railgun
******

****** ai_dmq3.c
        if (bs->inventory[INVENTORY_RAILGUN] > 0 &&
                     (bs->inventory[INVENTORY_SLUGS] > 5 || startwithrgammo.integer == -1 && startwithrg.integer)) return 95;
        //if the bot can use the lightning gun
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->inventory[INVENTORY_RAILGUN] > 0 &&
                        bs->inventory[INVENTORY_SLUGS] > 5) return 95;
        //if the bot can use the lightning gun
******

****** ai_dmq3.c
        if (bs->inventory[INVENTORY_LIGHTNING] > 0 &&
                     (bs->inventory[INVENTORY_LIGHTNINGAMMO] > 50 || startwithlgammo.integer == -1 && startwithlg.integer)) ret
urn 90;
        //if the bot can use the rocketlauncher
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->inventory[INVENTORY_LIGHTNING] > 0 &&
                        bs->inventory[INVENTORY_LIGHTNINGAMMO] > 50) return 90;
        //if the bot can use the rocketlauncher
******

****** ai_dmq3.c
        if (bs->inventory[INVENTORY_ROCKETLAUNCHER] > 0 &&
                     (bs->inventory[INVENTORY_ROCKETS] > 5 || startwithrlammo.integer == -1 && startwithrl.integer)) return 90;

        //if the bot can use the plasmagun
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->inventory[INVENTORY_ROCKETLAUNCHER] > 0 &&
                        bs->inventory[INVENTORY_ROCKETS] > 5) return 90;
        //if the bot can use the plasmagun
******

****** ai_dmq3.c
        if (bs->inventory[INVENTORY_PLASMAGUN] > 0 &&
                     (bs->inventory[INVENTORY_CELLS] > 40 || startwithpgammo.integer == -1 && startwithpg.integer)) return 85;
        //if the bot can use the grenade launcher
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->inventory[INVENTORY_PLASMAGUN] > 0 &&
                        bs->inventory[INVENTORY_CELLS] > 40) return 85;
        //if the bot can use the grenade launcher
******

****** ai_dmq3.c
        if (bs->inventory[INVENTORY_GRENADELAUNCHER] > 0 &&
                     (bs->inventory[INVENTORY_GRENADES] > 10 || startwithglammo.integer == -1 && startwithgl.integer)) return 8
0;
        //if the bot can use the shotgun
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->inventory[INVENTORY_GRENADELAUNCHER] > 0 &&
                        bs->inventory[INVENTORY_GRENADES] > 10) return 80;
        //if the bot can use the shotgun
******

****** ai_dmq3.c
        if (bs->inventory[INVENTORY_SHOTGUN] > 0 &&
                     (bs->inventory[INVENTORY_SHELLS] > 10 || startwithsgammo.integer == -1 && startwithsg.integer)) return 50;

        //otherwise the bot is not feeling too good
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->inventory[INVENTORY_SHOTGUN] > 0 &&
                        bs->inventory[INVENTORY_SHELLS] > 10) return 50;
        //otherwise the bot is not feeling too good
******

****** ai_dmq3.c
        if (!bot_rocketjump.integer) return qfalse;
       //if homing missiles are enabled
       if (homingmissile.integer) return qfalse;
        //if no rocket launcher
****** \merge\newsrc\game\ai_dmq3.c
        if (!bot_rocketjump.integer) return qfalse;
        //if no rocket launcher
******

****** ai_dmq3.c
        if (camper < 0.1) return qfalse;
       if (g_campprotect.integer)
              return qfalse;
        //if the bot has a team goal
****** \merge\newsrc\game\ai_dmq3.c
        if (camper < 0.1) return qfalse;
        //if the bot has a team goal
******

****** ai_dmq3.c
        if (bs->client < 0 || bs->client >= MAX_CLIENTS) {
//              BotAI_Print(PRT_ERROR, "BotSameTeam: client out of range\n");
                return qfalse;
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->client < 0 || bs->client >= MAX_CLIENTS) {
                //BotAI_Print(PRT_ERROR, "BotSameTeam: client out of range\n");
                return qfalse;
******

****** ai_dmq3.c
        if (entnum < 0 || entnum >= MAX_CLIENTS) {
//              BotAI_Print(PRT_ERROR, "BotSameTeam: client out of range\n");
                return qfalse;
****** \merge\newsrc\game\ai_dmq3.c
        if (entnum < 0 || entnum >= MAX_CLIENTS) {
                //BotAI_Print(PRT_ERROR, "BotSameTeam: client out of range\n");
                return qfalse;
******

****** ai_dmq3.c
                //if the enemy is invisible and not shooting
              if (EntityIsInvisible(&entinfo) && !EntityIsShooting(&entinfo) && random() > 0.5 && startwithpowerups.integer != 
0) {
                        continue;
****** \merge\newsrc\game\ai_dmq3.c
                //if the enemy is invisible and not shooting
                if (EntityIsInvisible(&entinfo) && !EntityIsShooting(&entinfo)) {
                        continue;
******

****** ai_dmq3.c
                }
              if (EntityIsProtected(&entinfo) && !EntityIsShooting(&entinfo)) {
                        continue;
                }
                //if not an easy fragger don't shoot at chatting players
****** \merge\newsrc\game\ai_dmq3.c
                }
                //if not an easy fragger don't shoot at chatting players
******

****** ai_dmq3.c
        }
       if (EntityIsInvisible(&entinfo) && (startwithpowerups.integer == 7)) {
              if (random() > 0.1) aim_accuracy *= 0.2;
       }
        //
****** \merge\newsrc\game\ai_dmq3.c
        }
        //
******

****** ai_dmq3.c
                                trap_AAS_AreaReachability(bs->areanum))
                                   if (bs->cur_ps.weapon == WEAPONINDEX_MACHINEGUN) {
                                          trap_EA_Attack(bs->client);
                                   }
                                return;
****** \merge\newsrc\game\ai_dmq3.c
                                trap_AAS_AreaReachability(bs->areanum))
                                return;
******

****** ai_dmq3.c
                }
                            trap_EA_SelectWeapon(bs->client, WEAPONINDEX_MACHINEGUN);
                            if (bs->cur_ps.weapon == WEAPONINDEX_MACHINEGUN) {
                                   trap_EA_Attack(bs->client);
                            }
                else {
****** \merge\newsrc\game\ai_dmq3.c
                }
                else {
******

****** ai_dmq3.c
                        if (state->eventParm < 0 || state->eventParm > MAX_SOUNDS) {
                            BotAI_Print(PRT_ERROR, "EV_GLOBAL_SOUND: eventParm (%d) out of range\n", state->eventParm);
                                break;
****** \merge\newsrc\game\ai_dmq3.c
                        if (state->eventParm < 0 || state->eventParm > MAX_SOUNDS) {
                                BotAI_Print(PRT_ERROR, "EV_GLOBAL_SOUND: eventParm (%d) out of range\n", state->eventParm);
                                break;
******

****** ai_dmq3.c
                                if (state->eventParm < 0 || state->eventParm > MAX_SOUNDS) {
                                   BotAI_Print(PRT_ERROR, "EV_GENERAL_SOUND: eventParm (%d) out of range\n", state->eventParm);

                                        break;
****** \merge\newsrc\game\ai_dmq3.c
                                if (state->eventParm < 0 || state->eventParm > MAX_SOUNDS) {
                                        BotAI_Print(PRT_ERROR, "EV_GENERAL_SOUND: eventParm (%d) out of range\n", state->eventP
arm);
                                        break;
******

****** ai_dmq3.c
        if (bs->setupcount > 0) {
if (lamebots.integer==1)
        return;
                bs->setupcount--;
****** \merge\newsrc\game\ai_dmq3.c
        if (bs->setupcount > 0) {
                bs->setupcount--;
******


Comparing files ai_main.c and \merge\newsrc\game\ai_main.c
****** ai_main.c
        if (!ent->r.linked) return qfalse;
       if (ent->r.svFlags & SVF_NOCLIENT) return qfalse;
        memcpy( state, &ent->s, sizeof(entityState_t) );
****** \merge\newsrc\game\ai_main.c
        if (!ent->r.linked) return qfalse;
        if (ent->r.svFlags & SVF_NOCLIENT) return qfalse;
        memcpy( state, &ent->s, sizeof(entityState_t) );
******


Comparing files ai_team.c and \merge\newsrc\game\ai_team.c
FC: no differences encountered

Comparing files ai_vcmd.c and \merge\newsrc\game\ai_vcmd.c
FC: no differences encountered

