Example #1
0
  protected GPoint findGrenadeTarget(Ability A, Unit U) {
    // searches for an attackable spot that would hit the most enemies for the most damage
    // must hit at least 2 enemies
    // 1/24 chance to see aoe

    int Cur_units = 0;
    int Cur_damage = 0;
    int New_units = 0;
    int New_damage = 0;

    GPoint itarget = null;

    rando = (int) (Math.random() * 24);
    if (rando == 0) vis = A.getTilesAttackable(U, map);
    else vis = Vision.getSprintVision(map, U, 3);

    for (int i = 0; i < vis.size(); i++) {
      List<AttackedTile> tilesAffected = A.getTilesAffected(U, vis.get(i), map);
      for (int j = 0; j < tilesAffected.size(); j++) {
        if (map.getTile(tilesAffected.get(j).tile).hasUnit()) {
          if (map.getTile(tilesAffected.get(j).tile).getPlayer_id() != playerId) {
            New_units++;
            New_damage += tilesAffected.get(j).damageTaken;
          }
        }
      }

      if ((itarget == null)
          || (New_units > Cur_units)
          || ((New_units == Cur_units) && (New_damage > Cur_damage))) {
        itarget = new GPoint(vis.get(i));
        Cur_units = New_units;
        Cur_damage = New_damage;
      }

      New_units = 0;
      New_damage = 0;
    }
    vis.clear();

    if (Cur_units < 2) itarget = null;

    return itarget;
  }