DELTA 22496 8337 160
SVN  „[„s
# ‚$ £ ‚,‚/ \
-I$(top_srcdir)/server/advisors ENDREP
DELTA 22318 21990 536
SVN  „
„!	  ‚  ‚‚ENDREP
DELTA 24690 886 484
SVN   {¢M ‰ „ ‰ ‹AŠ· Šp•m€bool, bool build_fre
                        bool announce, bool source_gonvoid clear_worker_task(struct city *pcity);
void package_and_send_worker_task(struct city *pcity);

#endif  /* FC__CITYTOOLS_H */
ENDREP
DELTA 17639 326 1206
SVN  ‘@¶z‚1”_ …X €…$ H €B H €A H €9 H €‚ H €‚ H €‚e H €‚r H €ƒ? H €‚d H €‚h H €‚B H €‚' H €‚ H €‚ H €‚r H €‚r H €‚B H €‚D H €‚ H €‚H H €‚
 H €‚ H €‚ H €‚ H €‚ H €‚9 H €‚ H €‚ H €ƒ H €‚y H €‚p H €‚p H €‚% H €‚~ H €ƒ H €‚I H €w H €‚# H €‚% H €ƒ H €ƒ H €‚x H €‚j H €‚A H €‚A H €ƒ H €ƒ H €‚9 H  {ˆ7€—!fc_config.h>
#endif

/* common */
#include "ai.h"
#include "player.h"

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

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

/* ai/default */
#include "advdiplomacy.h"
#include "advdomestic.h"
#include "advmilitary.h"
#include "aicity.h"
#include "aidata.h"
#include "aiferry.h"
#include "aihand.h"
#include "ailog.h"
#include "aiplayer.h"
#include "aisettler.h"
#include "aitools.h"
#include "aiunit.h"

#include "classicai.h"

/* This function is only needed as symbol in module. Nevertheless
   gcc requires that there is prior prototype. */
const char *fc_ai_classic_capstr(void);

static struct ai_type *self = NULL;

***
  Set pointer to ai type of the classic ai.
**************************************************************************/
static void classic_ai_set_self(struct ai_type *ai)
{
  self = ai;
}

***
  Get pointer to ai type of the classic ai.
**************************************************************************/
static struct ai_type *classic_ai_get_self(void)
{
  return self;
}

***
  Return module capability string
**************************************************************************/
const char *fc_ai_classic_capstr(void)
{
  return FC_AI_MOD_CAPSTR;
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_player_alloc(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_player_alloc(deftype, pplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_player_free(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_player_free(deftype, pplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_player_save(struct player *pplayer, struct section_file *file,
                     int plrno)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_player_save(deftype, "ai", pplayer, file, plrno);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_player_load(struct player *pplayer,
                            const struct section_file *file, int plrno)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_player_load(deftype, "ai", pplayer, file, plrno);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_gained_control(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  /* Clear worker tasks, classic AI does not use those */
  city_list_iterate(pplayer->cities, pcity) {
    clear_worker_task(pcity);
  } city_list_iterate_end;

  dai_gained_control(deftype, pplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_split_by_civil_war(struct player *original,
                                   struct player *created)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_assess_danger_player(deftype, original);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_created_by_civil_war(struct player *original,
                                     struct player *created)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_player_copy(deftype, original, created);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_data_phase_begin(struct player *pplayer, bool is_new_phase)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_data_phase_begin(deftype, pplayer, is_new_phase);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_data_phase_finished(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_data_phase_finished(deftype, pplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_city_alloc(struct city *pcity)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_city_alloc(deftype, pcity);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_city_free(struct city *pcity)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_city_free(deftype, pcity);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_city_save(struct section_file *file, const struct city *pcity,
                          const char *citystr)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_city_save(deftype, "ai", file, pcity, citystr);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_city_load(const struct section_file *file, struct city *pcity,
                          const char *citystr)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_city_load(deftype, "ai", file, pcity, citystr);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_build_adv_override(struct city *pcity, struct adv_choice *choice)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_build_adv_override(deftype, pcity, choice);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_wonder_city_distance(struct player *pplayer, struct adv_data *adv)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_wonder_city_distance(deftype, pplayer, adv);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_build_adv_init(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_build_adv_init(deftype, pplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_build_adv_adjust(struct player *pplayer, struct city *wonder_city)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_build_adv_adjust(deftype, pplayer, wonder_city);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_units_ruleset_init(void)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_units_ruleset_init(deftype);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_units_ruleset_close(void)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_units_ruleset_close(deftype);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_unit_init(struct unit *punit)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_unit_init(deftype, punit);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_unit_close(struct unit *punit)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_unit_close(deftype, punit);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_ferry_init_ferry(struct unit *ferry)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_ferry_init_ferry(deftype, ferry);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_ferry_transformed(struct unit *ferry, struct unit_type *old)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_ferry_transformed(deftype, ferry, old);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_ferry_lost(struct unit *punit)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_ferry_lost(deftype, punit);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_unit_turn_end(struct unit *punit)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_unit_turn_end(deftype, punit);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_unit_move_or_attack(struct unit *punit, struct tile *ptile,
                                    struct pf_path *path, int step)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_unit_move_or_attack(deftype, punit, ptile, path, step);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_unit_new_adv_task(struct unit *punit, enum adv_unit_task task,
                                  struct tile *ptile)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_unit_new_adv_task(deftype, punit, task, ptile);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_unit_save(struct section_file *file, const struct unit *punit,
                          const char *unitstr)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_unit_save(deftype, "", file, punit, unitstr);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_unit_load(const struct section_file *file, struct unit *punit,
                          const char *unitstr)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_unit_load(deftype, "", file, punit, unitstr);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_auto_settler_reset(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_auto_settler_reset(deftype, pplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_auto_settler_run(struct player *pplayer, struct unit *punit,
                                 struct settlermap *state)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_auto_settler_run(deftype, pplayer, punit, state);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_auto_settler_cont(struct player *pplayer, struct unit *punit,
                                  struct settlermap *state)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_auto_settler_cont(deftype, pplayer, punit, state);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_do_first_activities(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_do_first_activities(deftype, pplayer);

  pplayer->ai_phase_done = TRUE;
}

***
  Mark turn done as we have already done everything before game was saved.
**************************************************************************/
static void cai_restart_phase(struct player *pplayer)
{
  pplayer->ai_phase_done = TRUE;
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_diplomacy_actions(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_diplomacy_actions(deftype, pplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_do_last_activities(struct player *pplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_do_last_activities(deftype, pplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_treaty_evaluate(struct player *pplayer, struct player *aplayer,
                                struct Treaty *ptreaty)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_treaty_evaluate(deftype, pplayer, aplayer, ptreaty);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_treaty_accepted(struct player *pplayer, struct player *aplayer, 
                                struct Treaty *ptreaty)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_treaty_accepted(deftype, pplayer, aplayer, ptreaty);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_diplomacy_first_contact(struct player *pplayer,
                                        struct player *aplayer)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_diplomacy_first_contact(deftype, pplayer, aplayer);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_incident(enum incident_type type, struct player *violator,
                         struct player *victim)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_incident(deftype, type, violator, victim);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_city_log(char *buffer, int buflength, const struct city *pcity)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_city_log(deftype, buffer, buflength, pcity);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_unit_log(char *buffer, int buflength, const struct unit *punit)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_unit_log(deftype, buffer, buflength, punit);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_consider_plr_dangerous(struct player *plr1, struct player *plr2,
                                       enum override_bool *result)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_consider_plr_dangerous(deftype, plr1, plr2, result);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_consider_tile_dangerous(struct tile *ptile, struct unit *punit,
                                        enum override_bool *result)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_consider_tile_dangerous(deftype, ptile, punit, result);
}

***
  Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_consider_wonder_city(struct city *pcity, bool *result)
{
  struct ai_type *deftype = classic_ai_get_self();

  dai_consider_wonder_city(deftype, pcity, result);
}

bool fc_ai_classic_setup(struct ai_type *ai)
{
  classic_ai_set_self(ai);

  strncpy(ai->name, "classic", sizeof(ai->name));

  /* ai->funcs.game_start = NULL; */
  /* ai->funcs.game_free = NULL; */

  ai->funcs.player_alloc = cai_player_alloc;
  ai->funcs.player_free = cai_player_free;
  ai->funcs.player_save = cai_player_save;
  ai->funcs.player_load = cai_player_load;
  ai->funcs.gained_control = cai_gained_control;
  /* ai->funcs.lost_control = NULL; */
  ai->funcs.split_by_civil_war = cai_split_by_civil_war;
  ai->funcs.created_by_civil_war = cai_created_by_civil_war;

  ai->funcs.phase_begin = cai_data_phase_begin;
  ai->funcs.phase_finished = cai_data_phase_finished;

  ai->funcs.city_alloc = cai_city_alloc;
  ai->funcs.city_free = cai_city_free;
  /*
    ai->funcs.city_got = NULL;
    ai->funcs.city_lost = NULL;
  */
  ai->funcs.city_save = cai_city_save;
  ai->funcs.city_load = cai_city_load;
  ai->funcs.choose_building = cai_build_adv_override;
  ai->funcs.build_adv_prepare = cai_wonder_city_distance;
  ai->funcs.build_adv_init = cai_build_adv_init;
  ai->funcs.build_adv_adjust_want = cai_build_adv_adjust;

  ai->funcs.units_ruleset_init = cai_units_ruleset_init;
  ai->funcs.units_ruleset_close = cai_units_ruleset_close;

  /* FIXME: We should allocate memory only for units owned by
     default ai in unit_got. We track no data
     about enemy units.
     But advisors code still depends on some default ai data (role) to be
     always allocated. */
  /*
    ai->funcs.unit_alloc = NULL;
    ai->funcs.unit_free = NULL;
    ai->funcs.unit_got = dai_unit_init;
    ai->funcs.unit_lost = dai_unit_close;
  */
  ai->funcs.unit_alloc = cai_unit_init;
  ai->funcs.unit_free = cai_unit_close;
  ai->funcs.unit_got = cai_ferry_init_ferry;
  ai->funcs.unit_lost = cai_ferry_lost;
  ai->funcs.unit_transformed = cai_ferry_transformed;

  ai->funcs.unit_turn_end = cai_unit_turn_end;
  ai->funcs.unit_move = cai_unit_move_or_attack;
  ai->funcs.unit_task = cai_unit_new_adv_task;

  ai->funcs.unit_save = cai_unit_save;
  ai->funcs.unit_load = cai_unit_load;

  ai->funcs.settler_reset = cai_auto_settler_reset;
  ai->funcs.settler_run = cai_auto_settler_run;
  ai->funcs.settler_cont = cai_auto_settler_cont;

  ai->funcs.first_activities = cai_do_first_activities;
  ai->funcs.restart_phase = cai_restart_phase;
  ai->funcs.diplomacy_actions = cai_diplomacy_actions;
  ai->funcs.last_activities = cai_do_last_activities;
  ai->funcs.treaty_evaluate = cai_treaty_evaluate;
  ai->funcs.treaty_accepted = cai_treaty_accepted;
  ai->funcs.first_contact = cai_diplomacy_first_contact;
  ai->funcs.incident = cai_incident;

  ai->funcs.log_fragment_city = cai_city_log;
  ai->funcs.log_fragment_unit = cai_unit_log;

  ai->funcs.consider_plr_dangerous = cai_consider_plr_dangerous;
  ai->funcs.consider_tile_dangerous = cai_consider_tile_dangerous;
  ai->funcs.consider_wonder_city = cai_consider_wonder_city;

  ai->funcs.refresh = NULL;

  return TRUE;
}
ENDREP
DELTA 25760 3564 356
SVN  ÃCÄ3` ‡+ — ¼ ‡€IÃ; */
#include "citytools
    /* Send info to observers */
    package_and_send_worker_task(pcity)ENDREP
DELTA 26735 0 5005
SVN  †  †  2‹? ‚šk €…0 ‚›— ’A‚œE€…x ©'‚¯ ƒCƒØB ž
ƒÞ9 ‚›„F  const int units_num = unit_list_size(pcenter->units);
  bv_player *could_see_unit = (units_num > 0
                               ? fc_malloc(sizeof(*could_see_unit)
                                           * units_num)
                               : NULL);
  int i;

  fc_assert_ret_val(pgiver != ptaker, TRUE);

  /* Remember what player see what unit. */
  i = 0;
  unit_list_iterate(pcenter->units, aunit) {
    BV_CLR_ALL(could_see_unit[i]);
    players_iterate(aplayer) {
      if (can_player_see_unit(aplayer, aunit)) {
        BV_SET(could_see_unit[i], player_index(aplayer));
      }
    } players_iterate_end;
    i++;
  } unit_list_iterate_end;
  fc_assert(i == units_numclear_worker_task(pcity/* Hide/reveal units. Do it after vision have been given to taker, city
   * owner has been changed, and before any script could be spawned. */
  i = 0;
  unit_list_iterate(pcenter->units, aunit) {
    players_iterate(aplayer) {
      if (can_player_see_unit(aplayer, aunit)) {
        if (!BV_ISSET(could_see_unit[i], player_index(aplayer))) {
          /* Reveal 'aunit'. */
          send_unit_info(aplayer->connections, aunit);
        }
      } else {
        if (BV_ISSET(could_see_unit[i], player_index(aplayer))) {
          /* Hide 'aunit'. */
          unit_goes_out_of_sight(aplayer, aunit);
        }
      }
    } players_iterate_end;
    i++;
  } unit_list_iterate_end;
  fc_assert(i == units_num);
  free(could_see_unit);
  could_see_unit = NULL†   F®!Šn€z F@€g  F ‚ F@¸ F@€‚l F@¦ F@€„A   " for %d gold.", price),
                          improvement_name_translation(pimprove),
                          city_link(pcity), price);
	  }
	} requirement_vector_iterate_end;
      } city_built_iterate_end;
    }
  } adjc_iterate_end;
}

/******
  Refresh the city's vision.

  This function has very small overhead and can be called any time
/****
  Clear worker task from the city and inform owner
****/
void clear_worker_task(struct city *pcity)
{
  struct packet_worker_task packet;

  worker_task_init(&pcity->task_req);

  packet.city_id = pcity->id;
  packet.tile_id = 0;
  packet.activity = ACTIVITY_IDLE;
  packet.tgt = 0;
  packet.want = 0;

  lsend_packet_worker_task(city_owner(pcity)->connections, &packet);
  /* TODO: Send to global observers */
}

/****
  Send city worker task to owner
****/
void package_and_send_worker_task(struct city *pcity)
{
  struct packet_worker_task packet;

  packet.city_id = pcity->id;
  if (pcity->task_req.ptile == NULL) {
    packet.tile_id = 0;
  } else {
    packet.tile_id = tile_index(pcity->task_req.ptile);
  }
  packet.activity = pcity->task_req.act;
  if (pcity->task_req.tgt == NULL) {
    packet.tgt = 0;
  } else {
    packet.tgt = extra_number(pcity->task_req.tgt);
  }
  packet.want = pcity->task_req.want;

  lsend_packet_worker_task(city_owner(pcity)->connections, &packet);
  /* TODO: Send to global observers */
}
ENDREP
id: mdh.5ck.r26863/22933
type: file
pred: mdh.5ck.r25760/15032
count: 11
text: 26863 19789 122 8755 99210a5517a606d620d4a103330ad455
cpath: /trunk/ai/threaded/taicity.c
copyroot: 15280 /trunk

id: 6pj.5ck.r26863/23126
type: file
pred: 6pj.5ck.r22496/9791
count: 7
text: 26863 0 56 627 23659d407ebb6050501422800db15753
cpath: /trunk/ai/threaded/Makefile.am
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 25
file 6pj.5ck.r26863/23126
K 9
taicity.c
V 25
file mdh.5ck.r26863/22933
K 9
taicity.h
V 25
file mdj.5ck.r22496/10362
K 8
taimsg.c
V 24
file 7pd.5ck.r21846/4353
K 8
taimsg.h
V 25
file 78q.5ck.r23361/11100
K 11
taiplayer.c
V 22
file 6pm.5ck.r25598/55
K 11
taiplayer.h
V 25
file 6pn.5ck.r21871/13176
K 12
threadedai.c
V 24
file 6pk.5ck.r25922/1191
END
ENDREP
id: 6pi.5ck.r26863/23696
type: dir
pred: 6pi.5ck.r25922/1764
count: 39
text: 26863 23313 370 370 c4fd30be7ba4e62a1d42399c292e6a43
props: 19316 2220 53 0 a527b216afb99426b763a1e313c531be
cpath: /trunk/ai/threaded
copyroot: 15280 /trunk

id: l55.5ck.r26863/23932
type: file
pred: l55.5ck.r22318/23077
count: 1
text: 26863 84 20 545 1c1beec24bef3ebfd096dcee6655a662
cpath: /trunk/ai/classic/Makefile.am
copyroot: 15280 /trunk

id: 4n8.5km.r26863/24120
type: file
pred: 4n8.5km.r26765/249
count: 64
text: 26863 402 19359 23418 a27f558b58461793f7dadf3443af2b20
cpath: /trunk/ai/classic/classicai.c
copyroot: 22318 /trunk/ai/classic/classicai.c

PLAIN
K 11
Makefile.am
V 25
file l55.5ck.r26863/23932
K 11
classicai.c
V 25
file 4n8.5km.r26863/24120
K 11
classicai.h
V 25
file 4n9.5kn.r22318/22867
END
ENDREP
id: l53.5ck.r26863/24497
type: dir
pred: l53.5ck.r26765/619
count: 17
text: 26863 24336 148 148 5914a6318c34709b5ddda00e90b88642
props: 23744 4136 53 0 1aad128f6d028f535e9ce7233326568e
cpath: /trunk/ai/classic
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file 5d.5ck.r26100/14492
K 10
aitraits.c
V 22
file 7k0.5ck.r26057/47
K 10
aitraits.h
V 25
file 7k2.5ck.r20500/19827
K 7
classic
V 24
dir l53.5ck.r26863/24497
K 7
default
V 23
dir 6k3.5ck.r26713/8797
K 12
difficulty.c
V 23
file 1b4x.5ck.r26712/64
K 12
difficulty.h
V 26
file 1b4z.5ck.r26100/14334
K 11
handicaps.c
V 23
file syo.5ck.r26388/217
K 11
handicaps.h
V 25
file syq.5ck.r23460/50815
K 4
stub
V 23
dir 6k5.5ck.r23546/7964
K 8
threaded
V 24
dir 6pi.5ck.r26863/23696
END
ENDREP
id: 8.5ck.r26863/25241
type: dir
pred: 8.5ck.r26765/1357
count: 1735
text: 26863 24731 497 497 fd29585db5b4d6920b9234026875b534
props: 11108 11315 64 0 abac628483ea4fdfa3bea3a3a56e0532
cpath: /trunk/ai
copyroot: 15280 /trunk

id: 4g.5ck.r26863/25467
type: file
pred: 4g.5ck.r26846/1916
count: 586
text: 26863 19939 2968 108306 a7a0532501acc788b7d7b113624dbe39
props: 10971 452 112 0 14688860b403b675ea6c3d1b6f5d2330
cpath: /trunk/server/citytools.c
copyroot: 15280 /trunk

id: 4h.5ck.r26863/25714
type: file
pred: 4h.5ck.r26528/7096
count: 92
text: 26863 133 242 4378 0995a405603f7994a58da4f00886c915
props: 10806 7948 111 0 10d822456e37f81dabb45dad0c15b842
cpath: /trunk/server/citytools.h
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 22
file 5q.5ck.r26717/190
K 8
advisors
V 23
dir 4n2.5ck.r26475/2205
K 9
aiiface.c
V 25
file 4gm.5ck.r22318/27020
K 9
aiiface.h
V 24
file 4gn.5ck.r20559/1295
K 9
animals.c
V 23
file vnk.5ck.r26434/836
K 9
animals.h
V 25
file vnm.5ck.r23831/63475
K 6
auth.c
V 25
file 39c.5ck.r20274/32101
K 6
auth.h
V 25
file 39d.5ck.r18977/19170
K 11
barbarian.c
V 22
file lw.5ck.r26434/594
K 11
barbarian.h
V 24
file lx.5ck.r22667/36940
K 14
citizenshand.c
V 25
file 6mz.5ck.r22267/14643
K 14
citizenshand.h
V 25
file 6n0.5ck.r22267/14833
K 10
cityhand.c
V 24
file 10.5ck.r19573/66885
K 10
cityhand.h
V 23
file 4f.0.r13297/423686
K 11
citytools.c
V 24
file 4g.5ck.r26863/25467
K 11
citytools.h
V 24
file 4h.5ck.r26863/25714
K 10
cityturn.c
V 23
file 4i.5ck.r26805/5343
K 10
cityturn.h
V 24
file 4j.5ck.r24742/16670
K 11
civserver.c
V 24
file 4k.5ck.r26633/90005
K 10
commands.c
V 24
file 2ly.5ck.r26555/9553
K 10
commands.h
V 24
file 2lz.5ck.r24675/8215
K 13
connecthand.c
V 24
file 2dw.5ck.r26263/1131
K 13
connecthand.h
V 24
file 2dx.5ck.r23606/2057
K 9
console.c
V 24
file dd.5ck.r24895/15492
K 9
console.h
V 23
file de.5ck.r19183/7918
K 10
diplhand.c
V 24
file 4m.5ck.r26848/14093
K 10
diplhand.h
V 21
file 4n.0.r13421/6826
K 11
diplomats.c
V 22
file vz.5ck.r26746/235
K 11
diplomats.h
V 24
file w0.5ck.r26563/19858
K 10
edithand.c
V 23
file 3bk.5ck.r26701/432
K 10
edithand.h
V 26
file 4ez.5ck.r18452/115476
K 6
fcdb.c
V 23
file 6l3.5ck.r25473/150
K 6
fcdb.h
V 25
file 6l4.5ck.r24496/15810
K 10
gamehand.c
V 24
file 4o.5ck.r26633/90745
K 10
gamehand.h
V 24
file 4p.5ck.r26564/23149
K 9
generator
V 23
dir 2me.5ck.r26496/1923
K 10
handchat.c
V 23
file 4q.5ck.r25915/6654
K 10
handchat.h
V 24
file dj.5ck.r18270/28229
K 9
maphand.c
V 23
file 13.5ck.r26735/8171
K 9
maphand.h
V 23
file 14.5ck.r24759/3742
K 6
meta.c
V 22
file 4s.5ck.r26485/714
K 6
meta.h
V 24
file 4t.5ck.r24200/20596
K 6
mood.c
V 25
file 112c.5ck.r25086/8260
K 6
mood.h
V 25
file 112e.5ck.r24653/7020
K 8
notify.c
V 25
file 4i2.5ck.r26003/45201
K 8
notify.h
V 25
file 4i3.5ck.r26003/45388
K 9
plrhand.c
V 23
file 4u.5ck.r26833/1143
K 9
plrhand.h
V 24
file 4v.5ck.r26692/15506
K 8
report.c
V 24
file vi.5ck.r26564/22659
K 8
report.h
V 24
file vj.5ck.r24891/20006
K 10
rssanity.c
V 25
file hew.5ck.r26824/10320
K 10
rssanity.h
V 24
file hey.5ck.r25729/2981
K 9
ruleset.c
V 23
file 8w.5ck.r26838/8603
K 9
ruleset.h
V 24
file 8x.5ck.r26403/78772
K 13
sanitycheck.c
V 23
file wi.5ck.r26109/6020
K 13
sanitycheck.h
V 24
file wj.5ck.r20315/26296
K 12
savecompat.c
V 23
file qva.5ck.r26833/958
K 12
savecompat.h
V 25
file qvc.5ck.r25754/11671
K 10
savegame.c
V 24
file vl.5ck.r26824/10508
K 10
savegame.h
V 24
file vm.5ck.r20758/19233
K 11
savegame2.c
V 25
file 4m0.5ck.r26824/10130
K 11
savegame2.h
V 25
file 4m1.5ck.r21363/11592
K 7
score.c
V 25
file 2eg.5ck.r25535/51502
K 7
score.h
V 24
file 2eh.5ck.r21929/6179
K 9
scripting
V 23
dir 31x.5ck.r26844/1349
K 8
sernet.c
V 22
file 15.5ck.r26862/328
K 8
sernet.h
V 23
file 4y.5ck.r23685/5129
K 10
settings.c
V 24
file 2m0.5ck.r26833/1386
K 10
settings.h
V 24
file 2m1.5ck.r23685/4644
K 11
spacerace.c
V 24
file 9a.5ck.r25063/30975
K 11
spacerace.h
V 21
file 9b.0.r11338/1129
K 9
srv_log.c
V 25
file 15t.5el.r26118/12291
K 9
srv_log.h
V 25
file 15u.5em.r25274/15557
K 10
srv_main.c
V 24
file vg.5ck.r26824/10752
K 10
srv_main.h
V 24
file vh.5ck.r23878/15619
K 11
stdinhand.c
V 22
file 4z.5ck.r26831/395
K 11
stdinhand.h
V 24
file 50.5ck.r26100/15471
K 11
techtools.c
V 25
file 33n.5ck.r26806/16793
K 11
techtools.h
V 24
file 33o.5ck.r26081/6287
K 10
unithand.c
V 23
file 18.5ck.r26783/2198
K 10
unithand.h
V 24
file 19.5ck.r23027/66151
K 11
unittools.c
V 23
file 1a.5ck.r26861/5688
K 11
unittools.h
V 24
file 1b.5ck.r26848/14581
K 8
voting.c
V 24
file 4ex.5ck.r26270/1284
K 8
voting.h
V 22
file 4ey.5ck.r26273/47
END
ENDREP
id: z.5ck.r26863/29800
type: dir
pred: z.5ck.r26862/4407
count: 5719
text: 26863 25956 3831 3831 60b5e25d6aa86014c8c0d6a55e629970
props: 23990 448 166 0 e5026e1cb18fe57b41417951bfac7b19
cpath: /trunk/server
copyroot: 15280 /trunk

PLAIN
K 9
ABOUT-NLS
V 24
file fu.5ck.r23462/85000
K 7
AUTHORS
V 24
file 5u.5ck.r22143/14016
K 7
COPYING
V 19
file 1h.0.r9643/400
K 9
ChangeLog
V 26
file 6l.5ck.r22811/6091752
K 7
INSTALL
V 22
file 6.5ck.r26104/4084
K 11
Makefile.am
V 23
file 59.5ck.r26717/4500
K 4
NEWS
V 24
file 6m.5ck.r25634/30702
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 22
dir 8.5ck.r26863/25241
K 10
autogen.sh
V 24
file 12o.5ck.r25794/4003
K 9
bootstrap
V 23
dir 2p5.5ck.r26519/2055
K 6
client
V 21
dir d.5ck.r26861/5215
K 6
common
V 21
dir p.5ck.r26838/8376
K 12
configure.ac
V 24
file 149.5ck.r26797/9352
K 4
data
V 22
dir w.5ck.r26806/31511
K 12
dependencies
V 23
dir 2yu.5ck.r26647/4287
K 11
diff_ignore
V 23
file qq.5ck.r24665/2850
K 3
doc
V 23
dir k7.5ck.r26806/16565
K 10
fc_version
V 24
file 2lo.5en.r26861/5443
K 2
m4
V 24
dir 12p.5ck.r26633/88803
K 7
scripts
V 23
dir 2yo.5ck.r26112/1112
K 6
server
V 22
dir z.5ck.r26863/29800
K 5
tests
V 22
dir 2g9.5ck.r26668/853
K 5
tools
V 23
dir 4pj.5js.r26733/5957
K 12
translations
V 23
dir t0a.5ck.r26801/8722
K 7
utility
V 23
dir 1c.5ck.r26800/18395
K 3
vms
V 25
dir u9.5ck.r21528/1396085
K 5
win32
V 23
dir 2eu.5ck.r25498/1618
END
ENDREP
id: 3.5ck.r26863/31200
type: dir
pred: 3.5ck.r26862/5802
count: 18512
text: 26863 30031 1156 1156 e8fcb03f57a73a427cc3343d56478fd6
props: 23244 4830 282 0 e4bb46e81629a60eef613b169b23a9ea
cpath: /trunk
copyroot: 15280 /trunk

PLAIN
K 8
branches
V 19
dir 1.0.r26860/6674
K 4
tags
V 19
dir 2.0.r25885/6524
K 5
trunk
V 22
dir 3.5ck.r26863/31200
K 7
website
V 21
dir 3ge.0.r22980/2263
END
ENDREP
id: 0.0.r26863/31592
type: dir
pred: 0.0.r26862/6192
count: 26863
text: 26863 31426 153 153 26adb98ce04fc4639f30ddca97a595bf
cpath: /
copyroot: 0 /

mdh.5ck.t26862-1 modify true false /trunk/ai/threaded/taicity.c

4g.5ck.t26862-1 modify true false /trunk/server/citytools.c

6pj.5ck.t26862-1 modify true false /trunk/ai/threaded/Makefile.am

l55.5ck.t26862-1 modify true false /trunk/ai/classic/Makefile.am

4h.5ck.t26862-1 modify true false /trunk/server/citytools.h

4n8.5km.t26862-1 modify true false /trunk/ai/classic/classicai.c


31592 31741
