Hello, 

Is it just me, or the code for war declarations for
the newbie robots is a bit too convoluted?

It seems it is trying to find the enemy team with the
most number of players and declare war on it, and then
declaring peace with everybody else. But it's buggy. 

I am thinking about simplifying it to: declare war on
all players not on the robot's team. 

Here's a snippet from robotd/update_players.c
declare_intents()
/* war & peace.  Done initially */
/* BUGS */

declare_intents()
{
   register                     i;
   register struct player       *j;
   int                          teams[16], maxt = 0;
   int                          newhostile, pl=0;
   extern char                  *team_to_string();

   if(me_p->alive < 100 || !isAlive(me))        /* 10
seconds into game */
      return;

   if(_state.player_type == PT_OGGER ||
_state.player_type == PT_DOGFIGHTER)
      return;

   newhostile = me->p_hostile;
   bzero(teams, sizeof(teams));

   for(i=0, j=players; i<MAXPLAYER; i++,j++) {

      if(j->p_status == PFREE) continue;
      if(j->p_flags & PFROBOT) continue;
      if(me->p_team == j->p_team || j->p_team == 0 ||
j->p_team == ALLTEAM)
         continue;
      teams[j->p_team]++;
      pl++;
   }

   if(pl){
      for(i=1; i< 9; i *= 2)
         if(teams[i] > maxt)
            maxt = i;
      mprintf("max team = %s\n",
team_to_string(maxt));
   }
   /*
   else
      maxt = -1;
      */


   /* peace */
   for(i=1; i< 9; i *= 2){
      if(i == maxt) continue;
      if((i & me->p_hostile) && !(i & me->p_swar)){
         mprintf("declaring peace with %s\n",
team_to_string(i));
         newhostile ^= i;
      }
   }
   _state.warteam = maxt;

   /* war */
   if(maxt != -1){
      if(!((maxt & me->p_swar) || (maxt &
me->p_hostile))){
         mprintf("declare war with %s\n",
team_to_string(maxt));
         newhostile ^= maxt;
      }
   }
   if(newhostile != me->p_hostile)
      sendWarReq(newhostile);
}