DELTA 13068 10649 1832
SVN  ×h×j†: …m €� ®x‡,€‚ ™D¶I€ƒ ƒÔafc_types.h"

#include "city.h"
#include "connection.h"
#include "nation.h"
#include "shared.h"
#include "spaceship.h"
#include "tech.h"
#include "unitlis/* General player accessor functions. */
int player_count(void);
int player_index(const struct player *pplayer);
int player_number(const struct player *pplayer);

struct player *player_by_number(const int player_id);
struct player *valid_player_by_number(const int player_id);
/* Initialization and iteration */
void player_init(struct player *plr);

struct player *player_array_first(void);
const struct player *player_array_last(void);

#define players_iterate(_p)						\
{									\
  struct player *_p = player_array_first();				\
  if (NULL != _p) {							\
    for (; _p <= player_array_last(); _p++) {

#define players_iterate_end						\
    }									\
  }									ENDREP
DELTA 13133 179136 3247
SVN  �ý;�ý&  ™\  ‚b™b ‚-œJ �ÍBž} ‚i�ìE ‚*�ï4 ‹W�ñdENDREP
DELTA 13046 31825 5473
SVN  ½<Ê~o‹ ˆ) � G  ‡qˆy� W´3€U G €� L‘t€o G ¤ L‘t€o G  Šf�f¼ ‚T›|€‚, G  ‰¡'€G ‰%ªp£ P´:€� G › P´:€�A @  ‚l´€D @  …=·tem_number]))


  Return the***********/
int government_count(void)
{
  return game.control.government_count;
}

****
  Return the government index.

  Currently same as government_number(), paired with government_count()
  indicates use as an array index.
int government_index(const struct government *pgovern)
{
  assert(pgovern);
  return pgovern - governments;
}

****
  Return the government index.
int government_number(const struct government *pgovern)
{
  assert(pgovern);
  return pgovern->item_number;
}

pgovern)
{
  CHECK_GOVERNMENT(pgovern);
  return Qn_(pgovernpgovern)
{
  CHECK_GOVERNMENT(pgovern);
  if (NULL == pgovern->name.translated) {
    /* delayed (unified) translation */
    pgovern->name.translated = ('\0' == pgovern->name.vernacular[0])
				? pgovern->name.vernacular
				: Q_(pgovern->name.vernacular);
  }
  return pgovern->name.translated;
}

overnment_number(gp),
	    nation_rule_name(np),
	    nation_number(np)***********
  Return the first item***********/
struct government *government_array_first(void)
{
  if (game.control.government_count > 0) {
    return governments;
  }
  return NULL;
}

****
  Return the last item***********/
const struct government *government_array_last(void)
{
  if (game.control.government_count > 0) {
    return &governments[game.control.government_count - 1];
  }
  return NULL;
}

tem_number = index;
    requirement_vector_init(&gov->reqs);
  }
}

ENDREP
DELTA 13046 103111 4429
SVN  �ª�¿H�@’3 Š@ €� G ² Q�‡@ �8�€u G  ‚r³`£ M�‡@€� G ¦ M�‡@€�+ G £ M�‡@€F UÔ@¢ J�@€r G €� J�@€{ G ¡ J�@€z G  �6�€H ƒL‘~† ‹e•J ‹&¡Q¤ M�‡@€�	 G § M�‡@€�0 G ¢ J�@€I UÔ@€� J�@€� G ‘ [¶x€�  G  �-¶N† ò·{\
  assert((pterrain)->item_number >= 0					\
	 && (pterrain)->item_number < terrain_count()			\
	 && &civ_terrains[terrain_index(pterrain)] == (pterrain))

******
  Initialize terrain and resource structuretem_number = i;
  }
  for (i = 0; i < ARRAY_SIZE(civ_resources); i++) {
    civ_resources[i].item_number = i;
  }
}


  Return the first item of terrain/
struct terrain *terrain_array_first(void)
{
  if (game.control.terrain_count > 0) {
    return civ_terrains;
  }
  return NULL;
}

****
  Return the last item of terrain/
const struct terrain *terrain_array_last(void)
{
  if (game.control.terrain_count > 0) {
    return &civ_terrains[game.control.terrain_count - 1];
  }
  return NULL;
}

****
  Return the number of terrain/
Terrain_type_id terrain_count(void)
{
  return game.control.terrain_
  Return the terrain identifier.
/
char terrain_identifier(const struct terrain *pterrain)
{
  assert(pterrain);
  return pterrain->identifier;
}

****
  Return the terrain index.

  Currently same as terrain_number(), paired with terrain_count()
  indicates use as an array index.
/
Terrain_type_id terrain_index(const struct terrain *pterrain)
{
  assert(pterrain);
  return pterrain - civ_terrains;
}

****
  Return the terrain index.
/
Terrain_type_id terrain_number(const struct terrain *pterrain)
{
  assert(pterrain);
  return pterrain->item_number;
}

find_terrain_by_identifier(const char identifier)
{
  if (TERRAIN_UNKNOWconst 
  Return the first item of resource/
struct resource *resource_array_first(void)
{
  if (game.control.resource_count > 0) {
    return civ_resources;
  }
  return NULL;
}

****
  Return the last item of resource/
const struct resource *resource_array_last(void)
{
  if (game.control.resource_count > 0) {
    return &civ_resources[game.control.resource_count - 1];
  }
  return NULL;
}

****
  Return the resource count.
/
Resource_type_id resource_count(void)
{
  return game.control.resource_
  Return the resource index.

  Currently same as resource_number(), paired with resource_count()
  indicates use as an array index.
/
Resource_type_id resource_index(const struct resource *presource)
{
  assert(presource);
  return presource - civ_resources;
}

****
  Return the/
Resource_type_id resource_number(const struct resource *presource)
{
  assert(presource);
  return presource->item_number;
}

const ENDREP
DELTA 10502 1400 1893
SVN  ŸQ¶d� l † €�* G  {œ|€�S G § J–@€q G €E J–@€�
 G £ J–@º G €�  K–@€c G   K–@€i G µ K–@€a �Ž`· K–@€…i G €�w K–@€‚k G ± K–@€a G ³ K–@€�! G €[ K–@€ƒ7 G €w K–@€ƒ8fcintl.h"
#include "log.h"
#include "shared.h"
#include "support.h"

#include "game.h"
#include "player.h"
#include "team.h"


static struct team teams[MAX_NUM_TEAMS];


s_init(void)
{
  Team_type_id i;

  for (i = 0; i < MAX_NUM_TEAMS; i++) {
    /* mark as unused */
    teams[i].item_number = i;

    teams[i].players = 0;
    player_research_init(&(teams[i].research));
  }
}

****
  Return the first item of teams.
/
struct team *team_array_first(void)
{
  if (game.info.num_teams > 0) {
    return teams;
  }
  return NULL;
}

****
  Return the last item of teams array.  Note this is different!
/
const struct team *team_array_last(void)
{
  if (game.info.num_teams > 0) {
    return &teams[MAX_NUM_TEAMS - 1];
  }
  return NULL;
}

****
  Return the number of teams.
/
int team_count(void)
{
  return game.info.num_teams;
}

******
  Return the team index.

  Currently same as team_number(), paired with team_count()
  indicates use as an array index.
*/
Team_type_id team_index(const struct team *pteam)
{
  assert(pteam);
  return pteam - teams;
}

******
  Return the team index.
*/
Team_type_id team_number(const struct team *pteam)
{
  assert(pteam);
  return pteam->item_number;
}

******
  Return the team pointer for the given index
*/
struct team *team_by_number(const Team_type_id id)
{
  if (id < 0 || id >= game.info.num_teams Removes the previous team affiliation if
  necessary.
*/
void team_add_player(struct player *pplayer, struct team *pteam)
{
  assert(pplayer != NULL);
  assert(pteam != NULL);

  freelog(LOG_DEBUG, "Adding player %d/%s to team %s.",
	  player_number(pplayer), pplayer->username,
	  team_rule_name(pteam));

  /* Remove the player from the old team, if any.  The player's team should
   * only be NULL for a few instants after the player was created; after
   * that they should automatically be put on a team.  So although we
   * check for a NULL case here this is only needed for that one
   * situation. */
  team_remove_player(pplayer);

  /* Put the player on the new team. */
  pplayer->team = pteam;
  
  pteam->players++;
  assert(pteam->players <= MAX_NUM_PLAYERS + MAX_NUM_BARBARIANS);
}

******
  Remove the player from the team.  This should only be called when deleting
  a player; since every player must always be on a team.

  Note in some very rare cases a player may not be on a team.  It's safe
  to call this function anyway.
*/
void team_remove_player(struct player *pplayer)
{
  if (pplayer->team) {
    freelog(LOG_DEBUG, "Removing player %d/%s from team %s (%d)",
	    player_number(pplayer),
	    pplayer->username,
	    team_rule_name(pplayer->team),
	    pplayer->team->players);
    pplayer->team->players--;
    assert(pplayer->team->players >= 0);
  }
  pplayer->team = NULL;
}

******
  Return the translated name of the team.
*/
const char *team_name_translation(struct team *pteam)
{
  return _(team_rule_name(pteam));
}

******
  Return the untranslated name of the team.
*/
const char *team_rule_name(const struct team *pteam)
{
  if (!pteam) {
    return N_("(none)");
  }
  return game.info.team_names_orig[team_index(pteam)];
}

******
 Does a linear search of game.info.team_names_orig[]
 Returns NULL when none match.
*/
struct team *find_team_by_rule_name(const char *team_name)
{
  int index;

  assert(team_name != NULL);
  assert(game.info.num_teams <= MAX_NUM_TEAMS);

  /* Can't use team_iterate here since it skips empty teams. */
  for (index = 0; index < game.info.num_teams; index++) {
    struct team *pteam = team_by_number(index);

    if (0 == mystrcasecmp(team_rule_name(pteam), team_name)) {
      return pteam;
    }
  }

  return NULL;
}

******
  Returns the most empty team available.  This is the team that should be
  assigned to a newly-created player.
*/
struct team *find_empty_team(void)
{
  Team_type_id i;
  struct team *pbest = NULL;

  /* Can't use team_iterate here since it skips empty teams. */
  for (i = 0; i < game.info.num_teams; i++) {
    struct team *pteam = team_by_number(i);

    if (!pbest || pbest->players > pteam->players) {
      pbest = pteam;
    }
    if (pbest->players == 0) {
      /* No need to keep looking. */
      return pbest;
    }
  }

  return pbest;
}
ENDREP
DELTA 13133 184555 4095
SVN  ãFã"�< ¿f €] �1ÀU€_ ”OÎwUnit_type_id utype_count(void);
Unit_type_id utype_index(const struct unit_type *punittype);
Unit_Class_id uclass_count(void);
Unit_Class_id uclass_index(const struct unit_class *pclass);
ENDREP
DELTA 13133 18748 2634
SVN  �›>�›$  Ôo  ƒÔu ‚/Ø	 ¥Ú> �wÿ_ ‚+��\ —1�„ENDREP
DELTA 13133 8028 1580
SVN  ˜T˜BT �m €T ŠŽSint government_count(void);
int government_index(const struct government *pgovern);
ENDREP
DELTA 12859 10629 1241
SVN  ÉrÎ}{¡	 †a €K ‚‡ r‰T€R �Šh€�Q Qš@€e �Œ-– �?Žn€k ˆ�U€�' Qš@€‚5 ~› …(œ#€k �¢h€‰ �j¸€U ‚ ¿i ƒ=­€…B ‚6³ ‚)¼g ‚0µO€� pº€‡, = 0,
  RMV_FAST_STRICT = 1,
  RMV_FAST_RELAXED = 2,
  RMV_FAST_ALWAYS = 3,/* currently only used in edithand.c */
#define tile_special_type_iterate(special)tile_special_type_iterate_end					    \
  }									    \
}

/* === */

struct resource {
  int item_number;
  struct name_translation name;
  char graphic_str[MAX_LEN_NAME];
  char graphic_alt[MAX_LEN_NAME];
RESOURCE_NULL_IDENTIFIER ' '

  int output[O_MAX]; /* Amount added by this resource. */
};

/* === */. */
#define T_FIRST 0enum terrain_class {
  TC_LAND,
  TC_OCEAN,
  TC_LAST
};

/* Must match with find_terrain_flag_by_rule_nametem_number;
  struct name_translation name;
  char graphic_str[MAX_LEN_NAME];	/* add tile_ prefix */
  char graphic_alt[MAX_LEN_NAME];	/* TODO: retire, never used! */
TERRAIN_WATER_IDENTIFIER ' '
#define TERRAIN_LAKE_IDENTIFIER '+'
#define TERRAIN_SEA_IDENTIFIER '-'
#define TERRAIN_COAST_IDENTIFIER '.'
#define TERRAIN_SHELF_IDENTIFIER ','
#define TERRAIN_FLOOR_IDENTIFIER ':'
#define TERRAIN_RIDGE_IDENTIFIER '^'
#define TERRAIN_GLACIER_IDENTIFIER 'a'
#define TERRAIN_UNKNOWIf a tile
   * has a property, then the value gives the weighted amount of tiles that
   * will be assigned
   *
   * Ocean_depth is different.  Instead of a percentage, the depth of the
   * tile in the range 0 (never chosen) to 100 (deepest) is used.
   */
  int property[MG_LAST];
#define TERRAIN_OCEAN_DEPTH_MINIMUM (1)
#define TERRAIN_OCEAN_DEPTH_MAXIMUM (100)

  bv_unit_classes native_to;

  bv_terrain_flags flags;

  char *helptext;
};

/* General terrain accessor functions. */
Terrain_type_id terrain_count(void);
Terrain_type_id terrain_index(const struct terrain *pterrain);
Terrain_type_id terrain_number(const struct terrain *pterrain);

struct terrain *terrain_by_number(const Terrain_type_id type);

struct terrain *find_terrain_by_identifier(const char identifier);
struct terrain *find_terrain_by_rule_name(const char *name);
struct terrain *find_terrain_by_translated_name(const char *name);

char terrain_identifier(const struct terrain *pterrain);
const char *terrain_rule_name(const struct terrain *pterrain);
const char *terrain_name_translation(struct terrain *pterrain);

/* Functions to operate on a terrain flag. */
enum terrain_flag_id find_terrain_flag_by_rule_name(const char *s);
#define terrain_has_flag(terr, flag) BV_ISSET((terr)->flags, flag)
Terrain-specific functions. */
#define is_ocean(pterrain) ((pterrain) != T_UNKNOWN			resource accessor functions. */
Resource_type_id resource_count(void);
Resource_type_id resource_index(const struct resource *presource);
Resource_type_id resource_number(const struct resource *presource);

struct resource *resource_by_number(const Resource_type_id id);
struct resource *find_resource_by_rule_name(const char *name);

const char *resource_rule_name(const struct resource *presource);
const char *resource_name_translation(struct resource *presource);

/* General special accessor functions. */
enum tile_special_type find_special_by_rule_name(const char *name);
const char *special_rule_name(enum tile_special_type type);
const char *special_name_translation(enum tile_special_type type);
class. */
enum terrain_class find_terrain_class_by_rule_name(const char *name);
const char *terrain_class_name_translation(enum terrain_class tclass);
tclass);
bool is_terrain_class_near_tile(const struct tile *ptile, enum terrain_class tclass);

/* Initialization and iteration */
struct resource *resource_array_first(void);
const struct resource *resource_array_last(void);

#define resource_type_iterate(_p)					\
{									\
   struct resource *_p = resource_array_first();			\
  if (NULL != _p) {							\
    for (; _p <= resource_array_last(); _p++) {

#define resource_type_iterate_end					\
    }									\
  }									\
}

/* Initialization and iteration */
void terrains_init(void);
void terrains_free(void);

struct terrain *terrain_array_first(void);
const struct terrain *terrain_array_last(void);

#define terrain_type_iterate(_p)					\
{									\
  struct terrain *_p = terrain_array_first();				\
  if (NULL != _p) {							\
    for (; _p <= terrain_array_last(); _p++) {

#define terrain_type_iterate_end					\
    }									\
  }									\
}

#endif  /* FC__TERRAIN_H */
ENDREP
DELTA 13133 191343 1365
SVN  �F�4R ‡c €R ‡ˆGTeam_type_id team_count(void);
Team_type_id team_index(const struct team *pteam);
ENDREP
DELTA 11001 808 4116
SVN  �Õ+‚�6ƒ+·S ‡{ €‚n E¶ ¥ ‚9ˆw€„, E¬?€�2 �s�F€p e“* �n” V•{€‚ C�· €‚9 |’$€…9 E¬? ‚–N• ƒP˜œ F¬> ƒ'�,€G ƒ O ‰£p£ A�· €� P¬?¢ A�· €� P¬?Ÿ A�· €A P¬?€~ A�· €p P¬?š A�· €m P¬?€�H A�· €‚6 [ï €� A�· €‚ Qï  ‚I­€� Œ°€T Žw¼]€� B¶  ‰pÏ€Z B�¶ {Ú.� ‚\Û)€Z B�¶ }ÞD¨ F¬> �à#€B C�·  �â‘ �sã-€A C�·  „dåa‘ ŠêQ€U ’Tõ€b ›a�‡p‰ …>�£X– F¬> Œ]�©o€J A�· €‚r E¬? ƒp�¶L‰ Q¬> …t�»’ Q¬> ’r�Áh€� V¬>« @á@€ƒ E¬?¨ Bá@€�> F¬>¦ Bá@€�: Fï © Bá@€�Z#include "unitlist.h"

#include "player.h"

/* Names of AI levels. These must correspond to enum ai_level in
 * player.h. Also commands to set AI level in server/commands.c
 * must match these. */
static const char *ai_level_names[] = {
  NULL, N_("Away"), N_("Novice"), N_("Easy"), NULL, N_("Normal"),
  NULL, N_("Hard"), N_("Cheating"), NULL, N_("Experimental")
};Returns true iff p1 can cancel treatyenum dipl_reason pplayer_can_cancel_treaty(const struct player *p1, 
                                           const struct player *p2)
{
  enum diplstate_type ds = pplayer_get_diplstate(p1, p2)->type;

  if (p1 == p2 || ds == DS_WAR) {
    return DIPL_ERROR;
  }
  if (players_on_same_team(p1, p2)) {
    return DIPL_ERROR;
  }
  if (p1->diplstates[player_index(p2)].has_reason_to_cancel == 0
      && get_player_bonus(p1, EFT_HAS_SENATE) > 0
      && get_player_bonus(p1, EFT_ANY_GOVERNMENT) == 0) {
    return DIPL_SENATE_BLOCKING;
  }
  return DIPL_OK
  Returns true iff p1 can be in alliance with p2.

  Check that we are not at war with any of p2's allies. Note 
  that for an alliance to be made, we need to check this both 
 static bool is_valid_alliance(const struct player *p1, 
                              const struct player *p2)
{Returns true iff p1 can make given treaty with p2.

  We cannot regress in a treaty chain. So we cannot suggest
  'Peace' if we are in 'Alliance'. Then you have to cancel.

  For alliance there is only one condition: We are not at war 
  with any of p2's alliesenum dipl_reason pplayer_can_make_treaty(const struct player *p1,
                                         const struct player *p2,
                                         enum diplstate_type treaty)
{
  enum diplstate_type existing = pplayer_get_diplstate(p1, p2)->type;

  if (p1 == p2) {
    return DIPL_ERRORDIPL_ERROR;
  }
  if (treaty == DS_WAR 
      || treaty == DS_NO_CONTACT 
      || treaty == DS_ARMISTICE 
      || treaty == DS_TEAM
      || treaty == DS_LAST) {
    return DIPL_ERROR; /* these are not negotiable treaties */
  }
  if (treaty == DS_CEASEFIRE && existing != DS_WAR) {
    return DIPL_ERROR; /* only available from war */
  }
  if (treaty == DS_PEACE 
      && (existing != DS_WAR && existing != DS_CEASEFIRE)) {
    return DIPL_ERROR;
  }
  if (treaty == DS_ALLIANCE
      && (!is_valid_alliance(p1, p2) || !is_valid_alliance(p2, p1))) {
    return DIPL_ALLIANCE_PROBLEM;
  }
  /* this check must be last: */
  if (treaty == existing) {
    return DIPL_ERROR;
  }
  return DIPL_OKlayer_index(pplayer2)city_owner(pcity) == pplayersz_strlcpy(plr->ranked_username, ANON_USER_NAME);
  plr->user_turns = 0
  Return the first item of players***********/
struct player *player_array_first(void)
{
  if (game.info.nplayers > 0) {
    return game.players;
  }
  return NULL
  Return the last item of players***********/
const struct player *player_array_last(void)
{
  if (game.info.nplayers > 0) {
    return &game.players[game.info.nplayers - 1];
  }
  return NULL
  Return the number of players***********/
int player_count(void)
{
  return game.info.nplayers
  Return the player index.

  Currently same as player_number(), paired with player_count()
  indicates use as an array index***********/
int player_index(const struct player *pplayer)
{
  assert(pplayer);
  return pplayer - game.players
  Return the player index***********/
int player_number(const struct player *pplayer)
{
  assert(pplayer);
  return pplayer->player_no
  Return struct player pointer for the given player index.

  You can retrieve players that are not in the game (with IDs larger than
  player_count).  An out-of-range player request will return NULL***********/
struct player *player_by_number(const int player_id)
{
  if (player_id < 0 || player_id >= ARRAY_SIZE(game.players)) {
    /* This isn't an error; some callers rely on this behavior. */
    return NULL;
  }
  assert(game.players[player_id].player_no == player_id);
  return &game.players[player_idpointer iff the player ID refers to an in-game player.  Unlike
  player_by_number, any index larger than player_count is not "valid"***********/
struct player *valid_player_by_number(const int player_id)
{
  if (player_id < 0 || player_id >= game.info.nplayers
   || player_id >= ARRAY_SIZE(game.players)) {
    return NULL;
  }
  assert(game.players[player_id].player_no == player_id);
  return &game.players[player_idassert(pplayer->nation->player == pplayer);
      pplayer->nation->player = NULL;
    }
    if (pnation) {
      assert(pnation->player == NULL);quotecmp, name, &ind);

  if (*result < M_PRE_AMBIGUOUS) {
    return player_by_numbare only seen by the V_INVIS fog layer. */
  return BV_ISSET(ptile->tile_seen[V_INVIS], player_index(pplayer));

  return FALSE;
}

  Returns TRUE if given a NULL player.  This is used by the client when in
  observer mod!pplayer
	  || 
  Returns TRUE if given a NULL player.  This is used by the client when in
  observer mod!pplayer || pplayer == city_owner(pcity)
  pplayer may be NULL in which case all cities will be consideredcity_owner(pcity)
  pplayer may be NULL in which case all units will be consideredcity_owner(pcity)!pcity->production.is_unit
	&& improvement_has_flag(pcity->production.value, IF_GOLD)if (!pplayer) {
    /* The client depends on this behavior in some places. */
    return NULL;
  }Armisticelayer_index(pplayer2)]*************
  Returns TRUE if players can't enter each others' territory*************/
bool players_non_invade(const struct player *pplayer1,
			const struct player *pplayer2)
{
  if (pplayer1 == pplayer2 || !pplayer1 || !pplayer2) {
    return FALSE;
  }
  if (is_barbarian(pplayer1) || is_barbarian(pplayer2)) {
    /* Likely an unnecessary test. */
    return FALSE;
  }
  return pplayer_get_diplstate(pplayer1, pplayer2)->type == DS_PEACEARMISTICEplayer_index(them)if (!plr || !plr->team) {
    /* Some client users depend on this behavior. */
    return NULL;
  }
  return &(plr->team->researchReturns AI level associated with level name*************/
enum ai_level find_ai_level_by_name(const char *name)
{
  enum ai_level level;

  for (level = 0; level < AI_LEVEL_LAST; level++) {
    if (ai_level_names[level] != NULL) {
      /* Only consider levels that really have names */
      if (mystrcasecmp(ai_level_names[level], name) == 0) {
        return level;
      }
    }
  }

  /* No level matches name */
  return AI_LEVEL_LAST
  Return localized name of the AI levelconst char *ai_level_name(enum ai_level level)
{
  assert(level >= 0 && level < AI_LEVEL_LAST);

  if (ai_level_names[level] == NULL) {
    return NULL;
  }

  return _(ai_level_names[level]
  Return cmd that sets given ai levelconst char *ai_level_cmd(enum ai_level level)
{
  assert(level >= 0 && level < AI_LEVEL_LAST);

  if (ai_level_names[level] == NULL) {
    return NULL;
  }

  return ai_level_names[level
  Return is AI can be set to given levelbool is_settable_ai_level(enum ai_level level)
{
  if (level == AI_LEVEL_AWAY) {
    /* Cannot set away level for AI */
    return FALSE;
  }

  /* It's usable if it has name */
  return ai_level_cmd(level) != NULL;
}
ENDREP
DELTA 13133 23418 6082
SVN  µ|µX�< œo €c Œ�d€Y ‹ªcNation_type_id nation_count(void);
Nation_type_id nation_index(const struct nation_type *pnation);
int nation_group_count(void);
int nation_group_index(const struct nation_group *pgroup);
ENDREP
id: v9.0.r13136/22379
type: file
pred: v9.0.r13133/219877
count: 99
text: 13136 896 51 32407 7de46f3ffb02b2fc5fdab05e8ab80c11
props: 10932 10175 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /trunk/common/unittype.c
copyroot: 0 /

id: va.0.r13136/22610
type: file
pred: va.0.r13133/220114
count: 89
text: 13136 9542 218 12706 9738f2c972ae3d1b41025bc4641f4f7a
props: 10932 10530 111 0 c621529c87aa3e4513ceb9a8b717aa47
cpath: /trunk/common/unittype.h
copyroot: 0 /

id: 33i.0.r13136/22843
type: file
pred: 33i.0.r13133/220351
count: 8
text: 13136 5145 4368 7012 abd78390253d6ec607c573644df54056
props: 10866 15548 110 0 705660468cdcbf270377dea86b274451
cpath: /trunk/common/team.c
copyroot: 0 /

id: 33j.0.r13136/23073
type: file
pred: 33j.0.r13133/220812
count: 5
text: 13136 14403 104 2100 225898babffaa2ef6dd81c0a18f9c0e4
props: 10866 15898 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/common/team.h
copyroot: 0 /

id: 2fp.0.r13136/23303
type: file
pred: 2fp.0.r13133/223283
count: 44
text: 13136 2552 2562 24520 0d07e399abe38d1e7d1d7b3b327d49e7
props: 10805 60404 111 0 eaeaff8c6ba56cfe19b921c33649c016
cpath: /trunk/common/terrain.c
copyroot: 0 /

id: qs.0.r13136/23538
type: file
pred: qs.0.r13133/223520
count: 56
text: 13136 10005 4368 10109 d7beb281a61781f2053242318fad4263
props: 10805 60759 111 0 14533b38c2d22fb145a05b253c8fb2e8
cpath: /trunk/common/terrain.h
copyroot: 0 /

id: he.0.r13136/23772
type: file
pred: he.0.r13133/224219
count: 66
text: 13136 978 1544 9598 e4194ac7c573a49972e3f59b24e73282
props: 11057 31287 111 0 a3a3251698e05efa35962766e5c7e5c1
cpath: /trunk/common/government.c
copyroot: 0 /

id: hf.0.r13136/24006
type: file
pred: hf.0.r13133/224455
count: 53
text: 13136 9870 106 3138 bd5efdd1d2c3186e4c657aac111d9e8e
props: 10865 23625 111 0 8a31d593ba19cf3c77978cca3b416828
cpath: /trunk/common/government.h
copyroot: 0 /

id: 45.0.r13136/24240
type: file
pred: 45.0.r13133/224691
count: 208
text: 13136 14538 7565 34742 a1ea84943e7fb46379c3875339075aba
props: 11057 32005 112 0 5a3876431ad0faf061b096a2484d7aad
cpath: /trunk/common/player.c
copyroot: 0 /

id: 46.0.r13136/24474
type: file
pred: 46.0.r13133/224926
count: 178
text: 13136 0 866 11242 d74aa201b12849279553f874865281f0
props: 11057 32360 112 0 008c1f4aede3063a105ee5510d8fc5d7
cpath: /trunk/common/player.h
copyroot: 0 /

id: il.0.r13136/24703
type: file
pred: il.0.r13133/226571
count: 67
text: 13136 9791 49 19866 ac982319af5bce3d9e2ea623b60bcd6d
props: 11057 33068 111 0 b67b0fa27168318cbcd02c748356f132
cpath: /trunk/common/nation.c
copyroot: 0 /

id: im.0.r13136/24933
type: file
pred: im.0.r13133/226805
count: 65
text: 13136 22131 218 6872 196ea0a7a754c67b57915e19ca6ef609
props: 11057 33421 111 0 b67b0fa27168318cbcd02c748356f132
cpath: /trunk/common/nation.h
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file 5h.0.r12525/18946
K 6
aicore
V 23
dir 18t.0.r13133/222584
K 6
base.c
V 24
file 3jw.0.r13133/219417
K 6
base.h
V 23
file 3jx.0.r12775/14579
K 8
capstr.c
V 21
file dv.0.r12017/6110
K 8
capstr.h
V 21
file dw.0.r1356/11833
K 6
city.c
V 22
file q.0.r13133/221279
K 6
city.h
V 23
file 3q.0.r13046/117656
K 8
combat.c
V 23
file wp.0.r13046/117189
K 8
combat.h
V 21
file wq.0.r12783/4096
K 12
connection.c
V 21
file un.0.r11775/7048
K 12
connection.h
V 21
file uo.0.r11775/7278
K 8
dataio.c
V 22
file 15r.0.r13073/2418
K 8
dataio.h
V 23
file 15s.0.r10480/10050
K 11
diptreaty.c
V 23
file 3r.0.r13133/221044
K 11
diptreaty.h
V 20
file 3s.0.r9582/5141
K 9
effects.c
V 24
file 2eo.0.r13133/223750
K 9
effects.h
V 23
file 2ep.0.r12848/10701
K 8
events.c
V 22
file 33h.0.r13076/3198
K 8
events.h
V 21
file 3t.0.r12849/5386
K 10
fc_types.h
V 24
file 2ll.0.r13133/223983
K 6
game.c
V 23
file 3u.0.r13133/225160
K 6
game.h
V 23
file 3v.0.r13133/225625
K 19
generate_packets.py
V 21
file 2f4.0.r10337/244
K 12
government.c
V 22
file he.0.r13136/23772
K 12
government.h
V 22
file hf.0.r13136/24006
K 6
idex.c
V 23
file qo.0.r13024/189431
K 6
idex.h
V 21
file qp.0.r8119/15235
K 13
improvement.c
V 23
file vb.0.r13133/219180
K 13
improvement.h
V 23
file vc.0.r13046/115561
K 5
map.c
V 22
file r.0.r13046/120832
K 5
map.h
V 22
file 41.0.r12807/19514
K 10
movement.c
V 24
file 2xv.0.r13133/222814
K 10
movement.h
V 21
file 2xw.0.r12837/901
K 8
nation.c
V 22
file il.0.r13136/24703
K 8
nation.h
V 22
file im.0.r13136/24933
K 9
packets.c
V 22
file 43.0.r13068/16714
K 11
packets.def
V 23
file 2f5.0.r13095/62600
K 9
packets.h
V 22
file 44.0.r13068/16022
K 8
player.c
V 22
file 45.0.r13136/24240
K 8
player.h
V 22
file 46.0.r13136/24474
K 14
requirements.c
V 24
file 2wq.0.r13133/226089
K 14
requirements.h
V 24
file 2wr.0.r13133/226331
K 11
spaceship.c
V 20
file 98.0.r9977/2632
K 11
spaceship.h
V 20
file 99.0.r9977/2979
K 12
specialist.c
V 23
file 33f.0.r11495/15611
K 12
specialist.h
V 22
file 33g.0.r10490/7274
K 6
team.c
V 23
file 33i.0.r13136/22843
K 6
team.h
V 23
file 33j.0.r13136/23073
K 6
tech.c
V 22
file t.0.r13046/116261
K 6
tech.h
V 22
file u.0.r13133/220583
K 9
terrain.c
V 23
file 2fp.0.r13136/23303
K 9
terrain.h
V 22
file qs.0.r13136/23538
K 6
tile.c
V 24
file 2ys.0.r13133/223050
K 6
tile.h
V 22
file 2yt.0.r12977/9717
K 6
unit.c
V 22
file v.0.r13133/219647
K 6
unit.h
V 23
file 48.0.r13046/116493
K 10
unitlist.c
V 24
file 39m.0.r13133/225391
K 10
unitlist.h
V 24
file 39n.0.r13133/225857
K 10
unittype.c
V 22
file v9.0.r13136/22379
K 10
unittype.h
V 22
file va.0.r13136/22610
K 9
version.c
V 19
file oe.0.r11233/55
K 9
version.h
V 21
file e7.0.r11549/2702
K 10
worklist.c
V 22
file o8.0.r13027/83026
K 10
worklist.h
V 22
file o9.0.r12635/10973
END
ENDREP
id: p.0.r13136/27950
type: dir
pred: p.0.r13133/229836
count: 2325
text: 13136 25164 2773 2773 3777706e79730ee92ef9849da8482b84
props: 12883 2571 96 0 2763e13ff5d021346ae24ff6c9ced232
cpath: /trunk/common
copyroot: 0 /

PLAIN
K 9
ABOUT-NLS
V 21
file fu.0.r3960/17632
K 7
AUTHORS
V 19
file 5u.0.r12982/94
K 7
COPYING
V 19
file 1h.0.r9643/400
K 9
ChangeLog
V 22
file 6l.0.r4863/510676
K 7
INSTALL
V 19
file 6.0.r12902/917
K 11
Makefile.am
V 21
file 59.0.r12357/8527
K 4
NEWS
V 22
file 6m.0.r11650/10062
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 21
dir 8.0.r13133/235961
K 5
amiga
V 21
dir kd.0.r11105/71924
K 10
autogen.sh
V 22
file 12o.0.r12319/1997
K 9
bootstrap
V 22
dir 2p5.0.r12679/13512
K 6
client
V 19
dir d.0.r13134/9733
K 6
common
V 20
dir p.0.r13136/27950
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 22
file 149.0.r13076/2971
K 4
data
V 20
dir w.0.r13129/12767
K 6
debian
V 19
dir 5w.0.r7821/9259
K 12
dependencies
V 22
dir 2yu.0.r13014/15977
K 11
diff_ignore
V 20
file qq.0.r10370/179
K 3
doc
V 20
dir k7.0.r12983/2452
K 4
intl
V 21
dir f4.0.r11105/23499
K 2
m4
V 21
dir 12p.0.r12833/2047
K 6
manual
V 24
dir 2m2.0.r13038/2041696
K 2
po
V 20
dir fs.0.r13110/6475
K 7
scripts
V 20
dir 2yo.0.r11849/885
K 6
server
V 21
dir z.0.r13133/218962
K 10
stamp-h.in
V 19
file 80.0.r1125/241
K 5
tests
V 21
dir 2g9.0.r11105/7470
K 7
utility
V 20
dir 1c.0.r13088/4068
K 10
version.in
V 21
file 2lo.0.r12901/147
K 3
vms
V 21
dir u9.0.r11105/70719
K 5
win32
V 21
dir 2eu.0.r13125/7237
END
ENDREP
id: 3.0.r13136/29464
type: dir
pred: 3.0.r13134/11247
count: 11058
text: 13136 28170 1281 1281 7f188a72ce25640221cb516595bc374c
props: 11109 0 255 0 8cbc80e0da9c47b05b8ffee17ea9b0f1
cpath: /trunk
copyroot: 0 /

PLAIN
K 8
branches
V 20
dir 1.0.r13135/12685
K 4
tags
V 19
dir 2.0.r12895/2647
K 5
trunk
V 20
dir 3.0.r13136/29464
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r13136/29837
type: dir
pred: 0.0.r13135/13004
count: 13136
text: 13136 29675 149 149 f624fa0d9216efdc7eaeb4f5e46e9c39
cpath: /
copyroot: 0 /

he.0.t13135-1 modify true false /trunk/common/government.c

2fp.0.t13135-1 modify true false /trunk/common/terrain.c

33i.0.t13135-1 modify true false /trunk/common/team.c

va.0.t13135-1 modify true false /trunk/common/unittype.h

il.0.t13135-1 modify true false /trunk/common/nation.c

hf.0.t13135-1 modify true false /trunk/common/government.h

qs.0.t13135-1 modify true false /trunk/common/terrain.h

33j.0.t13135-1 modify true false /trunk/common/team.h

45.0.t13135-1 modify true false /trunk/common/player.c

im.0.t13135-1 modify true false /trunk/common/nation.h

46.0.t13135-1 modify true false /trunk/common/player.h

v9.0.t13135-1 modify true false /trunk/common/unittype.c


29837 29987
