DELTA 17564 0 2718
SVN  ••k �	 E ˆ �|D” ˆ‚<´ †‹š ‚-‘!Ÿ �B“Madvisors-I$(srcdir)/advisorspacerace.c	\
		spacerace.h	\
		srv_log.c	\
		srv_log \
 ./advisors/libadvisors\
 ./advisors/libadvisors.la \
ENDREP
DELTA 17660 0 17811
SVN  ‚ß9‚ß; ‰*  �‰=‡ ‚Ô}Š<srv_logENDREP
DELTA 17621 53517 63
SVN  ÛVÛX ‡K ‡ �‡= ÓˆQsrv_logENDREP
DELTA 7971 0 6715
SVN  å'î�¸s …e €�| ƒ†m€„k SÆ>€�R I  €… PÆ>¬ I  €‚= PÆ>­ I  €ƒ QÆ> �C J’ �°€ƒ9 ƒw·E€v „o¼-Œ �kÁ'… �Ã€s ‚uÅ€�! I  ˜ rÉ€�; ƒË€„0 �<Ï;€‘ �Ú€‡ �'ä <math.h> /* log */

/* utility */
#include "log.h"

/* common */
#include "movement.h"
#include "player.h"
#include "unit.h"

/* aicore */
#include "path_finding.h"
#include "pf_tools.h"

/* server */
#include "maphand.h"
#include "srv_log.h"

/* ai */struct tile *ptile, struct player *pplayer)
{
  int ocean = 0;
  int land = 0;
  
  /* We do not check H_MAP here, it should be done by map_is_known() */
  if (map_is_known(ptile, pplayer)) {
    /* we've seen the tile already. */
    return (is_ocean_tile(ptile) ? 100 : 0);
  }

  /* The central tile is likely to be the same as the
   * nearby tiles. */
  adjc_dir_iterate(ptile, ptile1, dir) {
    if (map_is_known(ptile1, pplayer)) {
      if (is_ocean_tile(ptile1)) {
        ocean++;
      } else {
        land++;
      }
    }
  } adjc_dir_iterate_end;

  return 50 + (50 / map.num_valid_dirs * (ocean - land))Returns TRUE if a unit owned by the given player can safely "explore" the
  given tile. This mainly takes care that military units do not try to
  move into another player's territory in violation of a treaty.
*/
static bool ai_may_explore(const struct tile *ptile,
                           const struct player *pplayer,
                           const bv_unit_type_flags unit_flags)
{
  /* Don't allow military units to cross borders. */
  if (!BV_ISSET(unit_flags, F_CIVILIAN)
      && !player_can_invade_tile(pplayer, ptile)) {
    return FALSE;
  }

  /* Can't visit tiles with non-allied units. */
  if (is_non_allied_unit_tile(ptile, pplayer)) {
    return FALSE;
  }

  /* Non-allied cities are taboo even if no units are inside. */
  if (tile_city(ptile)
      && !pplayers_allied(city_owner(tile_city(ptile)), pplayer)) {
    return FALSE;
  }

  return TRUE*
  TB function used by ai_explorer_goto().
**/
static enum tile_behavior ai_explorer_tb(const struct tile *ptile,
                                         enum known_type k,
                                         const struct pf_parameter *param)
{
  if (!ai_may_explore(ptile, param->owner, param->unit_flags)) {
    return TB_IGNORE;
  }
  return TB_NORMAL*
  Constrained goto using ai_may_explore().
**/
static bool ai_explorer_goto(struct unit *punit, struct tile *ptile)
{
  struct pf_parameter parameter;
  struct ai_risk_cost risk_cost;

  ai_fill_unit_param(&parameter, &risk_cost, punit, ptile);
  parameter.get_TB = ai_explorer_tb;

  UNIT_LOG(LOG_DEBUG, punit, "ai_explorer_goto to %d,%d",
           ptile->x, ptile->y);
  return ai_unit_goto_constrained(punit, ptile, &parameter)struct tile *ptiledius_sq = unit_type(punit)->vision_radius_sq;
  int desirable = 0;
  int unknown = 0;

  /* First do some checks that would make a tile completely non-desirable.
   * If we're a barbarian and the tile has a hut, don't go there. */
  if (is_barbarian(pplayer) && tile_has_special(ptile, S_HUT)) {
    return 0;
  }

  /* Do no try to cross borders and break a treaty, etc. */
  if (!ai_may_explore(ptile, punit->owner, unit_type(punit)->flagscircle_iterate(ptile, radius_sq, ptile1) {
    int ocean = likely_ocean(ptile1, pplayer);

    if (!map_is_known(ptileptile, ptilecircl_controlled || !ai_handicap(pplayer, H_HUTS))
      && map_is_known(ptile, pplayer)
      && tile_has_special(ptileMR_OK: there is more territory to be explored.
  MR_DEATH: unit died.
  MR_PAUSE: unit cannot explore further now.
  Other results: unit cannot explore further.
*/
enum unit_move_resultconst struct tile *init_tile = unit_tile(punit);

  /* The log of the want of the most desirable tile, 
   * given nearby water, cities, etc. */
  double log_most_desirable = -FC_INFINITYAlso MC to the best tile. */
  struct tile *best_tile = NULL;
  int best_MC = FC_INFINITY;

  /* Path-finding stuff */
  struct pf_map *pfm;
  struct pf_parameter parameter;

#define DIST_FACTOR   0.6

  double logDF = log(DIST_FACTOR);
  double logBPS = log(BEST_POSSIBLE_SCORE);

  UNIT_LOG(LOG_DEBUG, punit, "auto-exploring.");

  if (pplayer->ai_controlled && unit_has_type_flag(punit, F_GAMELOSS)) {
    UNIT_LOG(LOG_DEBUG, punit, "exploration too dangerous!");
    return MR_BAD_ACTIVITY; /* too dangerous */
  }

  TIMING_LOG(AIT_EXPLORER, TIMER_START);pfm = pf_map_new(&parameter);
  pf_map_iterate_move_costs(pfm, ptile, move_cost, FALSE) {
    int desirable;
    double log_desirable;

    /* Our callback should insure this. */
    fc_assert_action(map_is_known(ptile, pplayer), continue);

    desirable = explorer_desirable(ptile, pplayer, punit);

    if (desirable <= 0) { 
      /* Totally non-desirable tile. No need to continue. */
      continue;
    }

    /* take the natural log */
    log_desirable = log(desirable);

    /* Ok, the way we calculate goodness is taking the base tile 
     * desirability amortized by the time it takes to get there:
     *
     *     goodness = desirability * DIST_FACTOR^total_MC
     *
     * TODO: JDS notes that we should really make our exponential
     *       term dimensionless by dividing by move_rate.
     * 
     * We want to truncate our search, so we calculate a maximum distance
     * that we would move to find the tile with the most possible desirability
     * (BEST_POSSIBLE_SCORE) that gives us the same goodness as the current
     * tile position we're looking at. Therefore we have:
     *
     *   desirability * DIST_FACTOR^total_MC = 
     *               BEST_POSSIBLE_SCORE * DIST_FACTOR^(max distance)      (1)
     *
     * and then solve for max_dist. We only want to change max_dist when
     * we find a tile that has better goodness than we've found so far; hence
     * the conditional below. It looks cryptic, but all it is is testing which
     * of two goodnesses is bigger after taking the natural log of both sides.
     */
    if (log_desirable + move_cost * logDF 
	> log_most_desirable + best_MC * logDF) {

      log_most_desirable = log_desirable;
      best_tile = ptile;
      best_MC = move_cost;

      /* take the natural log and solve equation (1) above.  We round
       * max_dist down (is this correct?). */
      max_dist = best_MC + (log_most_desirable - logBPS)/logDF;
    }

    /* let's not go further than this */
    if (move_cost > max_dist) {
      break;
    }
  } pf_map_iterate_move_costs_end;
  pf_map_destroy(pfm);

  TIMING_LOG(AIT_EXPLORER, TIMER_STOP);

  /* Go to the best tile found. */
  if (best_tile != NULLexplorer_goto(punit, best_tile)) {
      /* Died?  Strange... */
      return MR_DEATH;
    }
    UNIT_LOG(LOG_DEBUG, punit, "exploration GOTO succeeded");
    if (punit->moves_left > 0) {
      /* We can still move on... */
      if (!same_pos(init_tile, unit_tile(punit))) {
        /* At least we moved (and maybe even got to where we wanted).  
         * Let's do more exploring. 
         * (Checking only whether our position changed is unsafe: can allow
         * yoyoing on a RR) */
	UNIT_LOG(LOG_DEBUG, punit, "recursively exploring...");
	return ai_manage_explorer(punit);          
      } else {
	UNIT_LOG(LOG_DEBUG, punit, "done exploring (all finished)...");
	return MR_PAUSE;
      }
    }
    UNIT_LOG(LOG_DEBUG, punit, "done exploring (but more go go)...");
    return MR_OK;
  } else {
    /* Didn't find anything. */
    UNIT_LOG(LOG_DEBUG, punit, "failed to explore more");
    return MR_BAD_MAP_POSITIONENDREP
DELTA 17622 3240 3786
SVN  ‚àD‚à+@�J ‰l €` rŠ; ¤P‹@ˆ �‡$°ˆ »�·L¡ ‰�ò~¡ ™�ü7ˆ ‰V‚–Bˆ °T‚ $ˆ �@‚Ñsrv_log.h"
#include "unithand.h"
#include "unittools.h"

/* server/advisors */
#include "advtoolntrolledntrolledBV_CLR(target->server.ai->hunted,BV_SET(target->server.ai->hunted,ntrolledntrolledntrolledENDREP
DELTA 17563 41610 2126
SVN  Õ	Õ>} …\ €} Îe†$/* utility */
#include "log.h"

/* common */
#include "game.h"
#include "unit.h"

/* server */
#include "srv_log.h"

/* ai */ENDREP
DELTA 17647 1002 1338
SVN  „�*„�, ‰U ‘ o‰Q „‚WŠS#include "srv_logENDREP
DELTA 17660 29819 8167
SVN  „È5„È7 Š{ ƒ �~Ši „»;ŒzlogENDREP
DELTA 17627 86443 4811
SVN  �ÂT�ÂV ‰6 ‡ �b‰( �·7‹srv_logENDREP
DELTA 14209 108512 8153
SVN  �´A�×%‚¶ …\ ½ \…r€�. N‡5€[ }ˆV€ƒ G ‹ L�² €ƒl G ‹ L�² €… @ µ CŽ?€ƒI G ‹ L�² €ƒ3 G  ˜g‹%‰ …¤‚ ‚©*€a G  Žs¬C€� †d¼1€N ›)Ã=† �/Þe° Œ àN€z ƒmí#‹ ‚Qñ‹ Vól€‚_ �u÷€�s �ü€�  ‰þL‹ ƒ
�‡i€‚\ †.��• †&�“=´ ƒ�š¸ G ¤ G¬ €� ‚@�Ÿ4¶ ��¥?€‡* G  }�¥€�0 ‚x�¨8€‚" ��°— N�² €„ G  ƒ%�±/* utility */
#include "log.h"
#include "mem.h"

/* common */map.h"
#include "movement.h"
#include "unit.h"
#include "unitlist.h"

/* common/aicore */
#include "aisupport.h"
#include "path_finding.h"
#include "pf_tools.h"

/* server */rv_log.h"
#include "unittools.h"

/* server/advisors */
#include "autosettlers.h"

/* ai */tools.h"
#include "aiunit.h"

#include "aidata.h"

static void ai_diplomacy_new(const struct player *plr1,
                             const struct player *plr2);
static void ai_diplomacy_defaults(const struct player *plr1,
                                  const struct player *plr2);
static void ai_diplomacy_destroy(const struct player *plr1,
                                 const struct player *plr2);

******
  ..**/
static void ai_diplomacy_new(const struct player *plr1,
                             const struct player *plr2)
{
  struct ai_dip_intel *player_intel;

  fc_assert_ret(plr1 != NULL);
  fc_assert_ret(plr2 != NULL);

  const struct ai_dip_intel **player_intel_slot
    = plr1->server.aidata->diplomacy.player_intel_slots
      + player_index(plr2);

  fc_assert_ret(*player_intel_slot == NULL);

  player_intel = fc_calloc(1, sizeof(*player_intel));
  *player_intel_slot = player_intel;
}

******
  ..**/
static void ai_diplomacy_defaults(const struct player *plr1,
                                  const struct player *plr2)
{
  struct ai_dip_intel *player_intel = ai_diplomacy_get(plr1, plr2);

  fc_assert_ret(player_intel != NULL);

  /* pseudorandom value */
  player_intel->spam = (player_index(plr1) + player_index(plr2)) % 5;
  player_intel->countdown = -1;
  player_intel->war_reason = WAR_REASON_NONE;
  player_intel->distance = 1;
  player_intel->ally_patience = 0;
  player_intel->asked_about_peace = 0;
  player_intel->asked_about_alliance = 0;
  player_intel->asked_about_ceasefire = 0;
  player_intel->warned_about_space = 0;
}


  Returns diplomatic state type between two players
ruct ai_dip_intel *ai_diplomacy_get(const struct player *plr1,
                                      const struct player *plr2)
{
  fc_assert_ret_val(plr1 != NULL, NULL);
  fc_assert_ret_val(plr2 != NULL, NULL);

  const struct ai_dip_intel **player_intel_slot
    = plr1->server.aidata->diplomacy.player_intel_slots
      + player_index(plr2);

  fc_assert_ret_val(player_intel_slot != NULL, NULL);

  return (struct ai_dip_intel *) *player_intel_slot;
}

******
  ..**/
static void ai_diplomacy_destroy(const struct player *plr1,
                                 const struct player *plr2)
{
  fc_assert_ret(plr1 != NULL);
  fc_assert_ret(plr2 != NULL);

  const struct ai_dip_intel **player_intel_slot
    = plr1->server.aidata->diplomacy.player_intel_slots
      + player_index(plr2);

  if (*player_intel_slot != NULL) {
    free(ai_diplomacy_get(plr1, plr2));
  }

  *player_intel_slot = NULL;
}

reachablerepplayer->server.aidata;

  fc_assert_ret(ai != NULL);

  ai_data_city_impr_calc(pplayer, ai);
}

pplayer->server.aidata;
  int i, j, k;
  int nuke_units = num_role_units(F_NUCLEAR);
  bool danger_of_nukes = FALSE;

  fc_assert_ret(ai != NULL)if (continent >= 0) {
        ai->threats.continent[continent] = TRUE;
      }serverlog_test("%s: oceans %d and %d are connected",
 Continent_id continent = tile_continent(pcity->tile);
    if (continent >= 0) {
      ai->stats.cities[continent]++;
    }server.ai->_controlled);
  }

  /* Set per-player variables. We must set all players, since players
   * can be created during a turn, and we don't want those to have
   * invalid values. */
  players_iterate(aplayer) {
    struct ai_dip_intel *adip = ai_diplomacy_get(pplayer, aplayer);

    adip->is_allied_with_enemy = NULL;
    adip->at_war_with_ally = NULL;
    adip->layer_diplstate_get(pplayer, check_pl)->type == DS_WAR) {
       adip->is_allied_with_enemy = check_pl;
      }
      if (pplayers_allied(pplayer, check_pl)
          && player_diplstate_get(aplayer, check_pl)->type == DS_WAR) {
        adip->dip->is_allied_with_ally = check_pl;
      }
    } players_iterate_end;
  } players_iterate_end;
  ai->diplomacy.spacerace_leader = player_leading_spacerace();
server.ai->server.ai->cur_pos) {
        /* Start tracking */
        punit->server.ai->cur_pos = &punit->server.ai->cur_struct;
        punit->server.ai->prev_pos = NULL;
      } else {
        punit->server.ai->prev_struct = punit->server.ai->cur_struct;
        punit->server.ai->prev_pos = &punit->server.ai->prev_struct;
      }
      *punit->server.ai->_controlled
         pplayer->server.aidata;

  fc_assert_ret(ai != NULL)
  ai->num_continents = 0;
  ai->num_oceans     = 0;
}

****
  Return a pointer to our data
***/
struct ai_data *ai_data_get(struct player *pplayer)
{
  struct ai_data *ai = pplayer->server.aidata;

  fc_assert_ret_val(ai != NULL, NULL)Allocate memory for ai data. Save to call multiple tim;

  if (pplayer->server.aidata == NULL) {
    pplayer->server.aidata = fc_calloc(1, sizeof(*pplayer->server.aidata));
  }
  ai = pplayer->server.aidata;

  ai->diplomacy.player_intel_slots
    = fc_calloc(player_slot_count(),
                sizeof(*ai->diplomacy.player_intel_slots));
  player_slots_iterate(pslot) {
    const struct ai_dip_intel **player_intel_slot
      = ai->diplomacy.player_intel_slots + player_slot_index(pslot);
    *player_intel_slot = NULL;
  } player_slots_iterate_end;

  players_iterate(aplayer) {
    /* create ai diplomacy states for all other players */
    ai_diplomacy_new(pplayer, aplayer);
    /* create ai diplomacy state of this player */
    if (aplayer != pplayer) {
      ai_diplomacy_new(aplayer, pplayer);
    }
  } players_iterate_end;

  ai->government_want = fc_calloc(government_count() + 1,
                                  sizeof(*ai->government_want));

  ai_data_default(pplayer);
}

default(struct player *pplayer)
{
  struct ai_data *ai = pplayer->server.aidata;

  fc_assert_ret(ai != NULL);

  ai->govt_reeval = 0;
  memset(ai->government_want, 0,
        players_iterate(aplayer) {
    /* create ai diplomacy states for all other players */
    ai_diplomacy_defaults(pplayer, aplayer);
    /* create ai diplomacy state of this player */
    if (aplayer != pplayer) {
      ai_diplomacy_defaults(aplayer, pplayer);
    }
  } players_iterate_end;
Free memory for ai datavoid ai_data_close(struct player *pplayer)
{
  struct ai_data *ai = pplayer->server.aidata;

  if (ai->diplomacy.player_intel_slots != NULL) {
    players_iterate(aplayer) {
      /* destroy the ai diplomacy states of this player with others ... */
      ai_diplomacy_destroy(pplayer, aplayer);
      /* and of others with this player. */
      if (aplayer != pplayer) {
        ai_diplomacy_destroy(aplayer, pplayer);
      }
    } players_iterate_end;
    free(ai->diplomacy.player_intel_slots);
  }

  if (ai->government_want != NULL) {
    free(ai->government_want);
  }

  if (ai != NULL) {
    free(ai);
  }
  pplayer->ai = NULL;
}

ENDREP
DELTA 17651 35612 2090
SVN  �ŠE�ŠG ‰ ‡ �4‰ ÿvŠOsrv_logENDREP
DELTA 17563 14141 8897
SVN  ú>ú@R ‡i €R òˆ9srv_log.h"
#include "unithand.h"
#include "unittools.h"

/* ai */
#include "aicityENDREP
DELTA 17622 14495 89
SVN  ƒŸaƒŸc ˆ# ” �Xˆ" ƒ•TŠ#include "srv_log.h"ENDREP
DELTA 17647 700 110
SVN  �’A�’C ‡s ‡ �‡e �‰Cˆ~srv_logENDREP
DELTA 17639 0 298
SVN  ‡‡	  …  �n….ENDREP
DELTA 17621 38677 2923
SVN  ×:×<
 ˆ? „ ÎyˆAsrv_ENDREP
DELTA 17644 0 1922
SVN  …íF…íH Ša  �BŠt‡ …áŒ(srv_logENDREP
DELTA 17621 2394 36254
SVN  †  †  r‚F Œ0  ƒ4ŒCƒ �­*�e€A G�Ä: ´W�¾#ˆ B‚‡@€� �O‚ˆo‚ P�Ž@ ‘(�öˆ �àk‚‡@‚ ˆHƒè+ˆ wƒð‚ ƒOƒñv€G Š:ƒöˆ �~„€Tˆ �n„‚^ˆ ‚šf„„Xlogntrolled = !pplayer->ai_controlled;
  if (pplayer->ai_controlled)ntrolled
  send_player_info_c(pplayer, NULL);
  /* Send updated diplstate information to all players. */
  send_player_diplstate_c(NULL, NULL  ntrolled_cntrolled_cntrolled) {
	set_ai_level_directer(pplayer, level);
	send_player_info_cntrolledntrolledntrolled†  „ÕG„ÕnX„+€B ‹E ˆ À‹Qˆ ›Ëmˆ »Gç	 �¨v�¢Rˆ ï‚ËTˆ �5ƒºzˆ “ƒ¼;» �5ƒÏg€‚P �<ƒÒvŸ ‚eƒÔ?� �ƒÊx ûpƒÙWe a new player because "
                      "the maximum of %d ntrolledntrolledntrolledntrolledntrolledntrolleds_iterate(pteam) {
    if (player_list_size(pteam->plrlist)                /* TRANS: There will always be at least 2 players here. */
                PL_("%2d : '%s' : %d player",
                    "%2d : '%s' : %d players",
                    player_list_size(pteam->plrlist)),
                team_index(pteam), team_name_translation(pteam),
                player_list_size(pteam->plrlist)layer_list_size(pteam->plrlist)s_iterate_end;
ENDREP
DELTA 17660 18856 10314
SVN  �ð�ð ˆs ‡ �Kˆe �åRŠCsrv_logENDREP
DELTA 17621 42355 88
SVN  ÔÔH�k … €�k Ì^‡6/* utility */
#include "log.h"

/* common */
#include "game.h"
#include "government.h"
#include "player.h"
#include "tech.h"

/* server */
#include "plrhand.h"
#include "srv_log.h"
#include "techtools.h"

/* ai */
#include "advmilitaryENDREP
DELTA 17560 24443 5553
SVN  ¹#¹) @ …C š £…Y� ‹¨z �8¡*Œ f“1 ‚V¶B�SRV_LOG_H
#define FC__SRV_server.debug;BODYGUARD));SRV_LOG_H */
ENDREP
DELTA 17648 3637 49532
SVN  †‹†‹ Šw ƒ �cŠe …þ;Œ[logENDREP
DELTA 17621 66752 2578
SVN  ‚´Z‚µ‚2 …\ €‚* N‡2 �‹7ˆˆ �¡�“V/* utility */
#include "log.h"

/* common */
#include "game.h"
#include "movement.h"
#include "unit.h"
#include "unitlist.h"

/* aicore */
#include "path_finding.h"
#include "pf_tools.h"

/* server */
#include "hand_gen.h"
#include "srv_log.h"
#include "unithand.h"
#include "unittools.h"

/* ai */ntrolledENDREP
DELTA 17592 26888 533
SVN  å_åc ˆ  ‘ �ˆ ¿X‰;† œHÉ#include "srv_logcommonENDREP
id: 2iw.5ck.r17671/18377
type: file
pred: 2iw.5ck.r17627/99209
count: 54
text: 17671 17918 345 39575 15f810e36e85e381b64cd55d8f3f9615
props: 10806 16634 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/ai/aiferry.c
copyroot: 15280 /trunk

id: 1m.5ck.r17671/18620
type: file
pred: 1m.5ck.r17621/80960
count: 158
text: 17671 18293 55 13027 37ac617dcc89ad0aa7ef29f9fc4b7f74
props: 10779 49627 112 0 61465523e3c60d371baa05b44953aea9
cpath: /trunk/ai/advdomestic.c
copyroot: 15280 /trunk

id: 2lj.5ck.r17671/18865
type: file
pred: 2lj.5ck.r17627/99451
count: 32
text: 17671 331 7442 14109 e5e6e528a30d2a0dc9e0b0214df5000a
props: 10624 241 111 0 8e6f231ffe21dad0a34f68090b1c0b69
cpath: /trunk/ai/aiexplorer.c
copyroot: 15280 /trunk

id: 9.5ck.r17671/19108
type: file
pred: 9.5ck.r17647/3810
count: 212
text: 17671 7798 280 45099 59757deced5466ea54a28996c96a881b
props: 11015 549 112 0 bb22896f97f507ab8508e233583a40b4
cpath: /trunk/ai/aitools.c
copyroot: 15280 /trunk

id: 2ek.5ck.r17671/19344
type: file
pred: 2ek.5ck.r17647/4043
count: 147
text: 17671 8284 45 67244 78613e8ebd05389f007504a85b4474ab
props: 11095 5259 111 0 09fa8b389220258550f0df17fa730769
cpath: /trunk/ai/advdiplomacy.c
copyroot: 15280 /trunk

id: 20.5ck.r17671/19589
type: file
pred: 20.5ck.r17660/41965
count: 337
text: 17671 8358 32 74807 ba6f1c863e0681ce4b5cbab52d4d734a
props: 11069 16784 112 0 24b501182e64f7bbc4aaaa8b3f1d9020
cpath: /trunk/ai/aicity.c
copyroot: 15280 /trunk

id: 15o.5ck.r17671/19828
type: file
pred: 15o.5ck.r17627/100419
count: 112
text: 17671 8486 7208 27557 8826ac561e8de498e5f3db902281dbc4
props: 11074 729 111 0 995497afc7013c9f20b8d3ebef449f37
cpath: /trunk/ai/aidata.c
copyroot: 15280 /trunk

id: 16r.5ck.r17671/20070
type: file
pred: 16r.5ck.r17627/100660
count: 81
text: 17671 8420 36 24918 29369591a527907c26fa84f3e702832d
props: 10756 119 111 0 93121dcfd7714818c8d46f9c51a886fa
cpath: /trunk/ai/aidiplomat.c
copyroot: 15280 /trunk

id: 22.5ck.r17671/20313
type: file
pred: 22.5ck.r17651/41925
count: 145
text: 17671 15725 35 17735 c1b7361f1a683ad7cfb5d6a392e2d2f1
props: 10865 30805 112 0 8869376353a720fe76c0d512d1b8c326
cpath: /trunk/ai/aihand.c
copyroot: 15280 /trunk

id: 1u.5ck.r17671/20553
type: file
pred: 1u.5ck.r17622/42394
count: 251
text: 17671 15924 49 53219 f2a38a6345e1d297f7ebe521c8f9f920
props: 10765 17515 112 0 ecd9c25ffd2014c732acffc1b3aab533
cpath: /trunk/ai/advmilitary.c
copyroot: 15280 /trunk

id: 15y.5ck.r17671/20798
type: file
pred: 15y.5ck.r17563/58424
count: 57
text: 17671 15790 104 15680 4582b3d853ac3be1b98a81aba3f89527
props: 10755 56241 111 0 1c266b4433d829481714f1852322e965
cpath: /trunk/ai/aiair.c
copyroot: 15280 /trunk

id: 36o.5ck.r17671/21039
type: file
pred: 36o.5ck.r17621/83386
count: 23
text: 17671 270 33 11736 7c56697ef82dece0c3b0c36504e9043d
props: 12670 94874 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/ai/aiparatrooper.c
copyroot: 15280 /trunk

id: 335.5ck.r17671/21284
type: file
pred: 335.5ck.r17563/59144
count: 7
text: 17671 8107 147 10942 9a7a838c51b58e87da718a29d47fe816
props: 11074 2115 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/ai/aiguard.c
copyroot: 15280 /trunk

id: 2gc.5ck.r17671/21524
type: file
pred: 2gc.5ck.r17647/4766
count: 45
text: 17671 16001 36 18755 373eb014f1ed9060ca1eed787ff2f6fa
props: 10843 995 111 0 5515c59917848b493fbf45ffb42836b3
cpath: /trunk/ai/aihunt.c
copyroot: 15280 /trunk

id: 5d.5ck.r17671/21762
type: file
pred: 5d.5ck.r17639/2653
count: 29
text: 17671 16064 20 898 f2b44910f87c840466ec34c3fd3cab57
props: 10445 8232 111 0 227f1557f5d66bc46d32e4db301b2671
cpath: /trunk/ai/Makefile.am
copyroot: 15280 /trunk

id: b.5ck.r17671/22000
type: file
pred: b.5ck.r17644/4577
count: 423
text: 17671 16164 36 95944 fa59ca0ab55d6e7d660f8bd81f261010
props: 10755 57649 112 0 77fd11a7d1954721a87806f6d511a224
cpath: /trunk/ai/aiunit.c
copyroot: 15280 /trunk

id: 2lh.5ck.r17671/22237
type: file
pred: 2lh.5ck.r17660/42390
count: 57
text: 17671 17365 36 30743 4797d07a34d8ab265e6452f62139d169
props: 10865 31505 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/ai/aisettler.c
copyroot: 15280 /trunk

id: 24.5ck.r17671/22481
type: file
pred: 24.5ck.r17621/83877
count: 79
text: 17671 17432 259 10824 6cee3dd740af81afe18a7f9bb0ea757a
props: 10913 82 111 0 a3a3251698e05efa35962766e5c7e5c1
cpath: /trunk/ai/aitech.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file 5d.5ck.r17671/21762
K 14
advdiplomacy.c
V 25
file 2ek.5ck.r17671/19344
K 14
advdiplomacy.h
V 25
file 2el.5ck.r17622/41667
K 13
advdomestic.c
V 24
file 1m.5ck.r17671/18620
K 13
advdomestic.h
V 23
file 1n.0.r13297/443238
K 13
advmilitary.c
V 24
file 1u.5ck.r17671/20553
K 13
advmilitary.h
V 23
file 1v.0.r13297/446464
K 10
advspace.c
V 25
file f2.5ck.r16929/287580
K 10
advspace.h
V 21
file f3.0.r8119/28225
K 7
aiair.c
V 25
file 15y.5ck.r17671/20798
K 7
aiair.h
V 24
file 15z.0.r13297/446696
K 8
aicity.c
V 24
file 20.5ck.r17671/19589
K 8
aicity.h
V 24
file 21.5ck.r17648/53544
K 8
aidata.c
V 25
file 15o.5ck.r17671/19828
K 8
aidata.h
V 25
file 15p.5ck.r17622/42639
K 12
aidiplomat.c
V 25
file 16r.5ck.r17671/20070
K 12
aidiplomat.h
V 24
file 16s.0.r13297/446010
K 12
aiexplorer.c
V 25
file 2lj.5ck.r17671/18865
K 12
aiexplorer.h
V 25
file 2lk.5bk.r14247/21983
K 9
aiferry.c
V 25
file 2iw.5ck.r17671/18377
K 9
aiferry.h
V 22
file 2ix.0.r13146/1787
K 9
aiguard.c
V 25
file 335.5ck.r17671/21284
K 9
aiguard.h
V 22
file 336.0.r10445/8032
K 8
aihand.c
V 24
file 22.5ck.r17671/20313
K 8
aihand.h
V 23
file 23.0.r13297/446240
K 8
aihunt.c
V 25
file 2gc.5ck.r17671/21524
K 8
aihunt.h
V 24
file 2gd.0.r13297/447855
K 15
aiparatrooper.c
V 25
file 36o.5ck.r17671/21039
K 15
aiparatrooper.h
V 23
file 36p.0.r12670/95202
K 11
aisettler.c
V 25
file 2lh.5ck.r17671/22237
K 11
aisettler.h
V 25
file 2li.5ck.r17660/41722
K 8
aitech.c
V 24
file 24.5ck.r17671/22481
K 8
aitech.h
V 22
file 25.0.r10755/53545
K 9
aitools.c
V 23
file 9.5ck.r17671/19108
K 9
aitools.h
V 23
file a.5ck.r17617/56322
K 8
aiunit.c
V 23
file b.5ck.r17671/22000
K 8
aiunit.h
V 22
file c.5ck.r17644/4344
K 11
defaultai.c
V 25
file 4n8.5ck.r17660/42207
K 11
defaultai.h
V 24
file 4n9.5ck.r17639/2498
END
ENDREP
id: 8.5ck.r17671/24514
type: dir
pred: 8.5ck.r17660/44515
count: 1283
text: 17671 22718 1783 1783 61574c2fcace4ce6838afaaeee8599d3
props: 11108 11315 64 0 abac628483ea4fdfa3bea3a3a56e0532
cpath: /trunk/ai
copyroot: 15280 /trunk

id: 7s.5ei.r17671/24743
type: file
pred: 7s.5ei.r17660/44744
count: 289
text: 17671 207 36 44987 bd581bd8d9272c5bf61dd5e2a4b7e987
props: 10755 35320 112 0 af1f871c1c0b4609250c3dc553658fcc
cpath: /trunk/server/advisors/autosettlers.c
copyroot: 17592 /trunk/server/advisors/autosettlers.c

PLAIN
K 11
Makefile.am
V 24
file 4n3.5ck.r17647/8079
K 10
advtools.c
V 24
file 4of.5ck.r17647/8273
K 10
advtools.h
V 24
file 4og.5ck.r17647/7632
K 14
autosettlers.c
V 24
file 7s.5ei.r17671/24743
K 14
autosettlers.h
V 24
file 7t.5ej.r17660/45032
END
ENDREP
id: 4n2.5ck.r17671/25287
type: dir
pred: 4n2.5ck.r17660/45573
count: 5
text: 17671 25031 243 243 a6975c35758fdc6462c80e7531d206a3
cpath: /trunk/server/advisors
copyroot: 15280 /trunk

id: 4i.5ck.r17671/25471
type: file
pred: 4i.5ck.r17648/56126
count: 449
text: 17671 17856 32 99736 0064d6e692cacaa40acbfe8f4dcc664f
props: 10955 1971 112 0 e17e3e5087e98ab1d6f041bdc6ae85ee
cpath: /trunk/server/cityturn.c
copyroot: 15280 /trunk

id: 15t.5el.r17671/25716
type: file
pred: 15t.5ck.r17621/83145
count: 57
text: 17671 16109 25 11196 ff43818e94e86f13fda48b443587628f
props: 11074 1421 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/server/srv_log.c
copyfrom: 17670 /trunk/ai/ailog.c

id: 15u.5em.r17671/25972
type: file
pred: 15u.5ck.r17563/58906
count: 22
text: 17671 17719 107 7337 a70015fcbd14f645e520c72b7452c80c
props: 11074 1769 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/server/srv_log.h
copyfrom: 17670 /trunk/ai/ailog.h

id: 4z.5ck.r17671/26228
type: file
pred: 4z.5ck.r17630/17652
count: 612
text: 17671 16226 1109 178926 f663d858802de356db9550df0c19f574
props: 11087 3718 112 0 d0e5ada95c1c714385b6751e38a4f15d
cpath: /trunk/server/stdinhand.c
copyroot: 15280 /trunk

id: 5q.5ck.r17671/26477
type: file
pred: 5q.5ck.r17592/35800
count: 66
text: 17671 0 181 2795 ccbbf8e02d2c549983171f4a7a72bc91
props: 10619 59300 111 0 8ba011ca1ef4e408ab91a853a48e15eb
cpath: /trunk/server/Makefile.am
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file 5q.5ck.r17671/26477
K 8
advisors
V 24
dir 4n2.5ck.r17671/25287
K 9
aiiface.c
V 24
file 4gm.5ck.r17661/4360
K 9
aiiface.h
V 25
file 4gn.5ck.r15803/18216
K 6
auth.c
V 26
file 39c.5ck.r17122/347762
K 6
auth.h
V 23
file 39d.0.r13513/10535
K 11
barbarian.c
V 25
file lw.5ck.r17627/106341
K 11
barbarian.h
V 21
file lx.0.r13220/1454
K 10
cityhand.c
V 22
file 10.5ck.r17569/299
K 10
cityhand.h
V 23
file 4f.0.r13297/423686
K 11
citytools.c
V 24
file 4g.5ck.r17648/55885
K 11
citytools.h
V 24
file 4h.5ck.r17320/26354
K 10
cityturn.c
V 24
file 4i.5ck.r17671/25471
K 10
cityturn.h
V 24
file 4j.5ck.r17296/18370
K 11
civserver.c
V 22
file 4k.5ck.r17075/335
K 11
civserver.h
V 21
file 4l.0.r2805/33121
K 10
commands.c
V 25
file 2ly.5ck.r17401/19083
K 10
commands.h
V 24
file 2lz.5ck.r17191/7510
K 13
connecthand.c
V 25
file 2dw.5ck.r17630/17401
K 13
connecthand.h
V 25
file 2dx.5ck.r16334/13190
K 9
console.c
V 25
file dd.5ck.r17122/342310
K 9
console.h
V 24
file de.5ck.r16598/29507
K 10
diplhand.c
V 24
file 4m.5ck.r17651/44704
K 10
diplhand.h
V 21
file 4n.0.r13421/6826
K 11
diplomats.c
V 25
file vz.5ck.r17620/114663
K 11
diplomats.h
V 24
file w0.5bk.r13745/13943
K 10
edithand.c
V 25
file 3bk.5ck.r17617/62664
K 10
edithand.h
V 23
file 4ez.5ck.r15317/588
K 10
gamehand.c
V 25
file 4o.5ck.r17392/123725
K 10
gamehand.h
V 24
file 4p.5ck.r15698/24111
K 9
generator
V 24
dir 2me.5ck.r17617/59721
K 11
ggzserver.c
V 25
file 39a.5ck.r17625/26065
K 11
ggzserver.h
V 25
file 39b.5bk.r15001/48999
K 10
gotohand.c
V 24
file 11.5ck.r17592/32606
K 10
gotohand.h
V 25
file 7r.5ck.r16929/301579
K 10
handchat.c
V 25
file 4q.5ck.r17122/344228
K 10
handchat.h
V 22
file dj.0.r7100/189089
K 9
maphand.c
V 24
file 13.5ck.r17618/20327
K 9
maphand.h
V 24
file 14.5ck.r16436/77319
K 6
meta.c
V 25
file 4s.5ck.r17627/107028
K 6
meta.h
V 23
file 4t.5bk.r14763/1928
K 8
notify.c
V 25
file 4i2.5ck.r17624/21507
K 8
notify.h
V 24
file 4i3.5ck.r17409/4692
K 9
plrhand.c
V 23
file 4u.5ck.r17661/4545
K 9
plrhand.h
V 24
file 4v.5ck.r17630/18146
K 8
report.c
V 24
file vi.5ck.r17617/61982
K 8
report.h
V 24
file vj.5ck.r17604/26529
K 9
ruleset.c
V 24
file 8w.5ck.r17626/14810
K 9
ruleset.h
V 24
file 8x.5ck.r16686/46254
K 13
sanitycheck.c
V 24
file wi.5ck.r17625/26312
K 13
sanitycheck.h
V 25
file wj.5ck.r16578/437729
K 10
savegame.c
V 23
file vl.5ck.r17646/9356
K 10
savegame.h
V 24
file vm.5ck.r17289/22938
K 11
savegame2.c
V 24
file 4m0.5ck.r17646/8923
K 11
savegame2.h
V 25
file 4m1.5ck.r17565/54565
K 7
score.c
V 25
file 2eg.5ck.r17624/21266
K 7
score.h
V 24
file 2eh.5ck.r17332/6378
K 9
scripting
V 25
dir 31x.5ck.r17627/104702
K 8
sernet.c
V 23
file 15.5ck.r17425/3418
K 8
sernet.h
V 23
file 4y.5ck.r17425/3658
K 10
settings.c
V 26
file 2m0.5ck.r17627/105199
K 10
settings.h
V 24
file 2m1.5ck.r17557/9638
K 11
spacerace.c
V 25
file 9a.5ck.r16929/306235
K 11
spacerace.h
V 21
file 9b.0.r11338/1129
K 9
srv_log.c
V 25
file 15t.5el.r17671/25716
K 9
srv_log.h
V 25
file 15u.5em.r17671/25972
K 10
srv_main.c
V 24
file vg.5ck.r17651/44272
K 10
srv_main.h
V 23
file vh.5ck.r16647/3913
K 11
stdinhand.c
V 24
file 4z.5ck.r17671/26228
K 11
stdinhand.h
V 24
file 50.5ck.r17402/25985
K 11
techtools.c
V 26
file 33n.5ck.r17627/107520
K 11
techtools.h
V 25
file 33o.5ck.r17257/22257
K 10
unithand.c
V 24
file 18.5ck.r17651/44951
K 10
unithand.h
V 23
file 19.5ck.r16959/4142
K 11
unittools.c
V 23
file 1a.5ck.r17646/9110
K 11
unittools.h
V 23
file 1b.5ck.r17644/7163
K 8
voting.c
V 23
file 4ex.5ck.r17205/770
K 8
voting.h
V 25
file 4ey.5ck.r15675/47518
END
ENDREP
id: z.5ck.r17671/30273
type: dir
pred: z.5ck.r17661/8249
count: 4114
text: 17671 26719 3541 3541 b9bba8158f30032c8bf00b35a4830db8
props: 17175 659 139 0 d1c9699dde7f9d81e54426750008041d
cpath: /trunk/server
copyroot: 15280 /trunk

PLAIN
K 9
ABOUT-NLS
V 22
file fu.0.r13215/85704
K 7
AUTHORS
V 19
file 5u.0.r12982/94
K 7
COPYING
V 19
file 1h.0.r9643/400
K 9
ChangeLog
V 26
file 6l.5ck.r15924/3800068
K 7
INSTALL
V 22
file 6.5ck.r17486/2711
K 11
Makefile.am
V 23
file 59.5bk.r14918/1267
K 4
NEWS
V 23
file 6m.5ck.r16839/2057
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 22
dir 8.5ck.r17671/24514
K 10
autogen.sh
V 24
file 12o.5ck.r16223/7590
K 9
bootstrap
V 24
dir 2p5.5ck.r17613/37512
K 6
client
V 21
dir d.5ck.r17642/4264
K 6
common
V 21
dir p.5ck.r17661/4131
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 22
file 149.5ck.r17664/49
K 4
data
V 22
dir w.5ck.r17667/59185
K 6
debian
V 22
dir 5w.5ck.r17544/1087
K 12
dependencies
V 23
dir 2yu.5ck.r17343/1868
K 11
diff_ignore
V 21
file qq.5ck.r17605/92
K 3
doc
V 23
dir k7.5ck.r17601/14295
K 2
m4
V 23
dir 12p.5ck.r17653/2245
K 6
manual
V 23
dir 2m2.5ck.r17638/1456
K 2
po
V 23
dir fs.5ck.r17668/78975
K 7
scripts
V 23
dir 2yo.5bk.r14810/1300
K 6
server
V 22
dir z.5ck.r17671/30273
K 10
stamp-h.in
V 19
file 80.0.r1125/241
K 5
tests
V 22
dir 2g9.5ck.r15661/767
K 7
utility
V 22
dir 1c.5ck.r17610/2682
K 10
version.in
V 23
file 2lo.5ck.r17663/543
K 3
vms
V 21
dir u9.0.r11105/70719
K 5
win32
V 24
dir 2eu.5bk.r13732/30345
END
ENDREP
id: 3.5ck.r17671/31770
type: dir
pred: 3.5ck.r17668/80470
count: 13208
text: 17671 30504 1253 1253 97c53aa3cb381d08a430ec2e67c5dc2b
props: 17175 3052 264 0 91336f1f63d2f606e65376614b5c72e4
cpath: /trunk
copyroot: 15280 /trunk

PLAIN
K 8
branches
V 21
dir 1.0.r17670/226730
K 4
tags
V 21
dir 2.0.r17599/826191
K 5
trunk
V 22
dir 3.5ck.r17671/31770
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r17671/32164
type: dir
pred: 0.0.r17670/227056
count: 17671
text: 17671 31997 154 154 5829115c12d9a37f4fe8136c927568f1
cpath: /
copyroot: 0 /

15o.5ck.t17670-1 modify true false /trunk/ai/aidata.c

16r.5ck.t17670-1 modify true false /trunk/ai/aidiplomat.c

22.5ck.t17670-1 modify true false /trunk/ai/aihand.c

15y.5ck.t17670-1 modify true false /trunk/ai/aiair.c

1u.5ck.t17670-1 modify true false /trunk/ai/advmilitary.c

15t._0.t17670-1 add true false /trunk/server/srv_log.c
17670 /trunk/ai/ailog.c
2gc.5ck.t17670-1 modify true false /trunk/ai/aihunt.c

5d.5ck.t17670-1 modify true false /trunk/ai/Makefile.am

b.5ck.t17670-1 modify true false /trunk/ai/aiunit.c

4z.5ck.t17670-1 modify true false /trunk/server/stdinhand.c

15t.5ck.r17621/83145 delete false false /trunk/ai/ailog.c

2lh.5ck.t17670-1 modify true false /trunk/ai/aisettler.c

15u._1.t17670-1 add true false /trunk/server/srv_log.h
17670 /trunk/ai/ailog.h
24.5ck.t17670-1 modify true false /trunk/ai/aitech.c

4i.5ck.t17670-1 modify true false /trunk/server/cityturn.c

15u.5ck.r17563/58906 delete false false /trunk/ai/ailog.h

2iw.5ck.t17670-1 modify true false /trunk/ai/aiferry.c

1m.5ck.t17670-1 modify true false /trunk/ai/advdomestic.c

7s.5ei.t17670-1 modify true false /trunk/server/advisors/autosettlers.c

5q.5ck.t17670-1 modify true false /trunk/server/Makefile.am

36o.5ck.t17670-1 modify true false /trunk/ai/aiparatrooper.c

9.5ck.t17670-1 modify true false /trunk/ai/aitools.c

2lj.5ck.t17670-1 modify true false /trunk/ai/aiexplorer.c

2ek.5ck.t17670-1 modify true false /trunk/ai/advdiplomacy.c

335.5ck.t17670-1 modify true false /trunk/ai/aiguard.c

20.5ck.t17670-1 modify true false /trunk/ai/aicity.c


32164 32315
