Program: 24625
Project: 24625
Buggy source:
public GameServer(){
  try {
    server=new UDPServer(55555,new ClientQueryParser());
  }
 catch (  SocketException e) {
    e.printStackTrace();
  }
  chests.add(new Chest(25 * 40,16 * 40,1000,ObjectManager.getWeaponByID("String_Node_Str"),ObjectManager.getWeaponByID("String_Node_Str")));
  chests.add(new Chest(0,80,2033,ObjectManager.getArmorByID("String_Node_Str"),ObjectManager.getArmorByID("String_Node_Str")));
  spawnEnemy("String_Node_Str",640,160);
  spawnEnemy("String_Node_Str",720,720);
  spawnEnemy("String_Node_Str",40,40);
  spawnEnemy("String_Node_Str",40,120);
  spawnEnemy("String_Node_Str",400,120);
  spawnEnemy("String_Node_Str",320,160);
  spawnEnemy("String_Node_Str",40,360);
  spawnEnemy("String_Node_Str",600,120);
  AgentRule rule=new AgentRule(AgentType.GUARD,AgentGoal.GUARD_CHEST){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      if (target != null)       agent.patrol(target);
    }
  }
;
  AgentRule rule2=new AgentRule(AgentType.GUARD,AgentGoal.KILL_PLAYER){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      List<Player> tmpPlayers=new ArrayList<Player>(players);
      for (      Player p : tmpPlayers) {
        if (agent.canSee(p)) {
          target=p;
          break;
        }
      }
      if (target != null && agent.canSee(target)) {
        agent.attackAI(target);
      }
    }
  }
;
  AgentRule rule3=new AgentRule(AgentType.SCOUT,AgentGoal.FIND_PLAYER){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      agent.search(getLastKnownLocation());
    }
  }
;
  AgentRule rule4=new AgentRule(AgentType.SCOUT,AgentGoal.KILL_PLAYER){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      if (target != null)       agent.attackAI(target);
    }
  }
;
  AgentRule rule5=new AgentRule(AgentType.ASSASSIN,AgentGoal.KILL_PLAYER){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      List<Player> tmpPlayers=new ArrayList<Player>(players);
      for (      Player p : tmpPlayers) {
        if (agent.canSee(p)) {
          target=p;
          break;
        }
      }
      if (target != null)       agent.attackAI(target);
    }
  }
;
  aiRules.add(rule);
  aiRules.add(rule2);
  aiRules.add(rule3);
  aiRules.add(rule4);
  aiRules.add(rule5);
  new Thread(new ServerLoop()).start();
}

Fixed version (ground truth):
public GameServer(){
  try {
    server=new UDPServer(55555,new ClientQueryParser());
  }
 catch (  SocketException e) {
    e.printStackTrace();
  }
  chests.add(new Chest(25 * 40,16 * 40,1000,ObjectManager.getWeaponByID("String_Node_Str"),ObjectManager.getWeaponByID("String_Node_Str")));
  chests.add(new Chest(0,80,2033,ObjectManager.getArmorByID("String_Node_Str"),ObjectManager.getArmorByID("String_Node_Str")));
  spawnEnemy("String_Node_Str",640,160);
  spawnEnemy("String_Node_Str",720,720);
  spawnEnemy("String_Node_Str",40,40);
  spawnEnemy("String_Node_Str",40,120);
  spawnEnemy("String_Node_Str",400,120);
  spawnEnemy("String_Node_Str",320,160);
  spawnEnemy("String_Node_Str",40,360);
  spawnEnemy("String_Node_Str",600,120);
  AgentRule rule=new AgentRule(AgentType.GUARD,AgentGoal.GUARD_CHEST){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      if (target != null)       agent.patrol(target);
    }
  }
;
  AgentRule rule2=new AgentRule(AgentType.GUARD,AgentGoal.KILL_PLAYER){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      List<Player> tmpPlayers=new ArrayList<Player>(players);
      for (      Player p : tmpPlayers) {
        if (agent.canSee(p)) {
          target=p;
          break;
        }
      }
      if (target != null && agent.canSee(target)) {
      }
    }
  }
;
  AgentRule rule3=new AgentRule(AgentType.SCOUT,AgentGoal.FIND_PLAYER){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      agent.search(getLastKnownLocation());
    }
  }
;
  AgentRule rule4=new AgentRule(AgentType.SCOUT,AgentGoal.KILL_PLAYER){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
    }
  }
;
  AgentRule rule5=new AgentRule(AgentType.ASSASSIN,AgentGoal.KILL_PLAYER){
    @Override public void execute(    EnemyAgent agent,    AgentGoalTarget target){
      List<Player> tmpPlayers=new ArrayList<Player>(players);
      for (      Player p : tmpPlayers) {
        if (agent.canSee(p)) {
          target=p;
          break;
        }
      }
      if (target != null)       processBasicAttack(agent,target);
    }
  }
;
  aiRules.add(rule);
  aiRules.add(rule2);
  aiRules.add(rule3);
  aiRules.add(rule4);
  aiRules.add(rule5);
  new Thread(new ServerLoop()).start();
}