DELTA 13120 389 718
SVN  Ï Ï'}a †a €K ‚‡ r‰T€R Šh€k f¨2€6 Œ-– ?Žn¸ ˆC+Š #˜r€‚c ­+³ ®,­ ¯, j½
€U ‚ Å ƒ=²}€‚ _± „ ¶2 ‚)Â  ‚0ºR ‚j¿€†(!Î = 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
  char identifier; /* Single-character identifier used in savegames. */
#define RESOURCE_NULL_IDENTIFIER ' '

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

/* === */. */
#define T_FIRST 0enum terrain_class {
  TC_LAND,
  TC_OCEAN,
  TC_LAST
};tem_number/* General terrain accessor functions. */
const Terrain_type_id terrain_count(void);
const Terrain_type_id terrain_index(const struct terrain *pterrain);
const 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);terrain_identifier(const struct terrain *pterrain);/* Functions to operate on a terrain flag. */Terrain-specific functions. */
#define is_ocean(pterrain) ((pterrain) != T_UNKNOWN			resource accessor functions. */
const Resource_type_id resource_count(void);
const Resource_type_id resource_index(const struct resource *presource);
const Resource_type_id resource_number(const struct resource *presource);

struct resource *resource_by_number(const 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					\
    }									\
  }									ENDREP
DELTA 13027 6471 4325
SVN  ‚íw‚ísyƒ Ål ¨ fÆ© ‚HÈ!¨ ƒ$Ë§ ó&Î\ž …Â!¤ ™ÇSž Â! Ÿ$â  †k‚^ž T÷n ƒ‚‰<ž I‚Œ  £‚Ž*ž ‚‚±Wž a‚´§ Z‚±Wª §1‚¸– Ž‚ßY
		     nation_plural_for_player(cplayernation_plural_for_player(pplayer),
		    
		     nation_plural_for_player(cplayernation_plural_for_player(pplayer),
		  nation_name_for_player(pplayer
		   nation_name_for_player(pplayernation_name_for_player(pplayernation_plural_for_player(pplayernation_name_for_player(pplayernation_name_for_player(pplayernation_name_for_player(pplayernation_name_for_player(pplayer
			     nation_name_for_player(pplayer"),
			     nation_name_for_player(pplayerplayer_index(offender)ENDREP
DELTA 10041 548 468
SVN  Ë	ËA œ €A ®Vœ3 (game.info.spacerace
     && player_number(pplayer) == game.infoENDREP
DELTA 10411 40140 136
SVN  ³C³F‚{ ¢ €‚{ Ž6¥j = 0;

  ncities_total = 0;
  players_iterate(pplayer) {
    ncities_total += city_list_size(pplayer->cities);
  } players_iterate_end;

  city_name_ptrs=fc_malloc(ncities_total*sizeof(char*));
  
  players_iterate(pplayer) {
    city_list_iterate(pplayer->cities, pcity) {
      *(city_name_ptrs+j++)=mystrdup(pcity->name);
    } city_list_iterate_end;
  } players_iterate_end;ENDREP
DELTA 12506 2882 652
SVN  ‚ÝS‚ÝO ¬* Ž ‚±¬<player_count()ENDREP
DELTA 13114 0 4791
SVN  †  †  …t Öo ˜ zÖ~˜ Š|Ø˜ ‘&‚ã˜ Ò‚ôG€ ‹oƒÇo€` ‚.ƒÔ5Ž ‚vƒÖk™ QƒÙwŽ ‚`ƒÚPŽ ƒfƒÝ8Ž ˆƒá&š •iƒéIš  HƒÿH 2„ œ H„¢C² Õ„¤.˜ ~„ùX€o ‚!…˜3˜ ˜s…šc˜ °2…³e˜ »!…ä&game_find_unit_by_numbergame_find_unit_by_numbergame_find_city_by_numbergame_find_city_by_numberplayer_index(vunit->owner)]++;
	if (vunit != punit) {
	  other_killed[player_index(vunit->owner)] = vunit;
	  other_killed[player_index(destroyer)layer_index(punit->owner)) {
	  assert(other_killed[i] == NULL);
	  notify_player(player_by_numbplayer_by_numblayer_index(punit->owner)player_by_numbplayer_by_numbplayer_by_numblayer_number(punit->owner)layer_number(punit->owner)players_iterate(unitowner) { unit_list_iterate_end;
    } players_iterate_end;game_find_unit_by_numbergame_find_unit_by_number(sanity2)) {
      send_unit_info(NULL, penemy);
    }
    if (game_find_unit_by_numbergame_find_unit_by_numbergame_find_city_by_numbergame_find_unit_by_number†  Ç'Ç`9¹ Ç' ause of nearby enemy");
      notify_player(pplayer, puniENDREP
DELTA 13024 8341 28660
SVN  ‚‹B‚‹E&[ Áq ‘ ñaÂ‹ ƒu³n• ¯t·w• œ-ç• ‡‚„@overnment_count()ovement_hasimprovement_by_numberimprovement_by_numberimprovement_by_numberENDREP
DELTA 12957 20046 1106
SVN  ¬'²_)‰ ‡  Žu‡€„2 !—ˆ ;˜ €B B›¾ )œb€‚VnChanging this enum will break savegame and network compatability. */
enum unit_activity {
  ACTIVITY_IDLE, ACTIVITY_POLLUTION, ACTIVITY_ROAD, ACTIVITY_MINE,
  ACTIVITY_IRRIGATE, ACTIVITY_FORTIFIED, ACTIVITY_FORTRESS, ACTIVITY_SENTRY,
  ACTIVITY_RAILROAD, ACTIVITY_PILLAGE, ACTIVITY_GOTO, ACTIVITY_EXPLORE,
  ACTIVITY_TRANSFORM, ACTIVITY_UNKNOWN, ACTIVITY_AIRBASE, ACTIVITY_FORTIFYING,
  ACTIVITY_FALLOUT,
  ACTIVITY_PATROL_UNUSED, /* Needed for savegame compatability. */
  ACTIVITY_BASE,          /* Build base */
  ACTIVITY_LAST   /* leave this one last */
};
int Techadvance;
struct city;
struct connection;
struct government;
struct impr_type;
struct nation_type;
struct output_type;
struct player;
struct specialist;
struct terrain;
struct tile;
struct unit;
/* Unit Class List, also 32-bit vector? */
#define UCL_LAST 32/* ruleset strings (such as names) are kept in their original vernacular, 
 * translated upon first use.  The translation is cached for future use.
 */
struct name_translation
{
  const char *translated;		/* string doesn't need freeing */
  char vernacular[MAX_LEN_NAME];	/* original string for comparisons */
};

#endif /* FC__FC_TYPES_H */
ENDREP
DELTA 13046 27348 2609
SVN  ý>ý=/ £v  ©v¤ EÎ“ ‘]ëautype_count()terrain_count()ernment_number(gov)ENDREP
DELTA 13046 30355 1376
SVN  ÔeÕ<. ·l ’ ‡·s’ ƒ9¿’ †1ÂP‘ Ž%É• ƒN×T• —Û4“ ÏPòQ• ˆ[Â3• ‰EË ernment_index(gov)ernment_index(gov)player_index(aplr)overnment_count()player_index(aplayer)player_index(aplayer)player_index(owner)player_index(aplayer)player_index(aplayer)ENDREP
DELTA 13046 31825 5473
SVN  ½<Ëo‹ ˆ)  G  ‡qˆy W´3€[ G € L‘t€u G ¤ L‘t€u G  Šff¼ ‚T›|€‚, G  ‰¡'€G ‰%ªp£ P´:€ G › P´:€A @  ‚l´€D @  …=·tem_number]))


  Return the***********/
const 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.
const int government_index(const struct government *pgovern)
{
  assert(pgovern);
  return pgovern - governments;
}

****
  Return the government index.
const 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 11293 3037 442
SVN  ¡˜TŒ ˆy ¾ Š}€U  j “Y€Šq$ lstruct name_translation female;
  struct name_translation maleitem_number;
  struct name_translation name;
  char graphic_str[MAX_LEN_NAME];
  char
/* General government accessor functions. */
const int government_count(void);
const int government_index(const struct government *pgovern);
const int government_number(const struct government *pgovern);

struct government *government_by_number(const int gov);
struct government *government_of_player(const struct player *pplayer);
struct government *government_of_city(const struct city *pcity);

struct government *find_government_by_rule_name(const char *name);
struct government *find_government_by_translated_name(const char *name);

const char *government_rule_name(const struct government *pgovern);
const char *government_name_translation(struct government *pgovern);
const char *government_name_for_player(const struct player *pplayer);

/* Ancillary routines */
const char *ruler_title_translation(const struct player *pplayer);

bool can_change_to_government(struct player *pplayer,
			      const struct government *pgovern);

/* Initialization and iteration */
void governments_alloc(int num);
void governments_free(void);

struct government *government_array_first(void);
const struct government *government_array_last(void);

#define government_iterate(_p)						\
{									\
  struct government *_p = government_array_first();			\
  if (NULL != _p) {							\
    for (; _p <= government_array_last(); _p++) {

#define government_iterate_end						\
    }									\
  }									ENDREP
DELTA 13038 7014 2413
SVN  …€…€Ap ‚Œd  jø: ‚@‚a• ³a‚2• —$‚Ä$‰ q‚ÛQ v‚ÝJ E‚ÅV ˆ‚àŽ ‚—C‚è?rule_name(pteamlayer_number(pplayer)layer_number(pplayer)by_numbername_translationrule_name(pteam)player_by_numbENDREP
DELTA 13024 45414 9884
SVN  ƒº,ƒ»W=ˆw  ( ¦ ¯ =œ Š>Ïm° ˜ÚV˜ Švò|° Œxþ˜ Oò| ´`‹s• †CÀg• ŒÇ>µ å: ‚)Õ˜ ˆ<×=´ å: Ž1á;Œ šKïl• …t‚ŠK€g  9‚‘"€U Žv‚²$  z‚Á@€! ƒ>‚ÄK§ H‚È"€q R‚ÊY  ¢H‚ÌQ¤ ¤‚ï1 ‡<ƒ“\ 9ƒ› €c Žƒ¬(
		       improvement_name_translationimprovement_name_translation
			pcity->name,
			improvement_name_translationgame_find_city_by_number
			pcity->name,
			improvement_name_translationgame_find_city_by_numberimprovement_by_numberimprovement_by_numberovernment_name_translation(preq->source.value.govern)special_name_translationnation_plural_translation(preq->source.value.nation)_translationimprovement_by_numberimprovement_name_translation(pcity->production.value),
		     improvement_name_translation(upgrades_to)improvement_by_number(id);

  if (!pcity->production.is_unit
      && improvement_hasnation_plural_for_player(pplayer
		     pcity->name,
		     improvement_name_translation(id));
    script_signal_emit("building_built", 2,
		       API_TYPE_BUILDING_TYPE, improvement_by_numberimprovement_name_translation(id),
		   nation_plural_for_player(pplayer),
	    advance_name_for_player(pplayer, tech),
	    improvement_name_translationnation_plural_for_player(pplayerimprovement_name_translation(i),
			improvement_ruleovernment_of_overnment_name_translation(g));
      handle_player_change_government(pplayer, government_number(g)ENDREP
DELTA 13038 754202 338
SVN  ÃoÃs
 ³| • b´layer_number(pplayer)ENDREP
DELTA 13024 79599 2516
SVN  ƒ†'ƒ‰‚
ˆH Œ+  “(Œ2¨ ŒŸx³ i¬,œ 
­)˜ ‚®C— ‚)°jŽ ³ – …r´9Œ ‡vº+• ƒgÂ5€+ ŸÇ§ dòl †ç$± |á! zîD 
ä) sñ] 
ä) ±[ôo• ¦^• $¨€R Šf©u‡ ŠF´_¼ /¿Nˆ 
Áˆ Âˆ 	Ã ˆ ‚,Ä1¼ Ç» ‰*ÈF€C ¥Ñ}ˆ ©÷‹ D‚ '‹ ‚¡o d‚¦s s‚£~‹ f‚¤u‹ ’M‚¦_ƒ ²=‚¹,– 
‚ëwŽ ™‚íterrain_count()0 != strlen(terrain_rule_name(pterrain))overnment_name_translation(req->source.value.governimprovement_name_translationspecial_name_translationnation_name_translationunit_flag_ruleclass_name_translation_translationimprovement_by_number
		       improvement_name_translation(impr_id));
	} else {
	  cat_snprintf(buf, bufsz, _("Allows %s (with %s)."),
		       improvement_name_translation(impr_id),
		      0 != strlen(terrain_rule_name(pterrain)
	                government_name_translation(govimprovement_name_translation(improvement_name_translation(improvement_by_numberimprovement_by_numberimprovement_by_number(which)->obsolete_by),
		 improvement_name_translation(which)advanceclass_name_translation(utype_class(utype)));
  if (uclass_haclass_haclass_haclass_haclass_haimprovement_name_translation(utype->impr_requirement));
  }
overnment_name_translation(utype->gov_requirement));
  }
  
                                   uclass_name_translation(uclass)class_haadvance_hasadvance_hasadvance_has_flag(i, TF_BRIDGEadvance_hasadvance_hasernclass_name_translationunit_flag_ruleENDREP
DELTA 13027 19816 735
SVN  ¸£wGƒb šB €F G  V›F˜ „D+ª ‚*¢€Q „Q¥¿ Ïjª"¨ ú6¯ “ûz€U †~•5ž P™ Œ«zgame_find_city_by_number(int id)
{
  return idex_lookup_city(id);
}


game_find_unit_by_number
	  nation_rule_name(nation_of_unit(punit)
	  pcity->name,
	  nation_rule_name(nation_of_city(pcity)),
	  pcity->tile->x,
	
	  pcity->name,
	  nation_rule_name(nation_of_city(pcity)),
	 }
  pplayer->attribute_block.length = 0;}
  pplayer->attribute_block_buffer.length = 0;  Return TRUE iff the player ID refers to an in-game player.  Unlike
  player_by_numblayer_number(pplayer) == phaseENDREP
DELTA 13076 0 37
SVN  ƒ•qƒ–"m È9 ¥ G©? „>É˜ †_Íi˜ †ÔW˜ ‚ºvÚ{game_find_city_by_number(id), target)game_find_city_by_numbergame_find_city_by_numbergame_find_city_by_numberENDREP
DELTA 13007 68201 619
SVN  ØpÙG ®3 ˜ œ®Bˆ ˆLÊd§ …2Ó>game_find_unit_by_numbertype_has
	      utype_rule_name(u_type),
	     ENDREP
DELTA 13024 84880 112
SVN  ƒänƒægƒ/–% ªO €i ”m«2• À1• ‹4ÁK• …	Í• QÒ,• iÔ€ …P× • 
Üb• †}Ý~• †$å› yå ŽìB• –>úU– †:‘%• \—q• C¨_• ƒª4• ”­]” ‡?Áo• †É@” ˆ+Ïn€ Lƒá? Ùe€- oè– ‡ê• Gñ,• ^ó€V Sõ3• ö• X÷7• ƒVù!• ‚^ý	• ƒpÿy• ¥_‚ƒ{” ‘<‚©k€R ‡^‚¼l”  v‚Ä[€& ƒ ‚æn• †R‚ê – H‚ñ• ‚ò^• „%‚ór• … ‚ø)• f‚ý[• ‚þS” O‚ÿ~” ƒ^” ƒkƒ‚n• …3ƒ†k• …YƒŒ0• 6ƒ’– ƒbƒ¢c• ‰Kƒ¦W€5 ”[ƒ±M „SƒÆ4– gƒË€ ƒ|ƒÍz€| …VƒÒl€` pƒÙ€g ƒÚm€= ‡ƒÝ#¯_index(player2)] > - (MAX_AI_LOVE * 4 / 10)
          && ai->diplomacy.player_intel[player_index(player2)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)]
                       - ai->diplomacy.req_love_for_alliance);
      }
      if (pplayer->ai.love[player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)] * 10player_index(aplayer)player_number(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(target)player_index(eplayer)player_index(target)player_number(aplayer));
  handle_diplomacy_create_clause_req(pplayer, player_number(aplayer),
				     player_number(pplayer), what, value)player_index(aplayer)] = ai_war_desire(pplayer, aplayer, ai);
    if (war_desire[player_index(aplayer)] > best_desire) {
      best_desire = war_desire[player_index(aplayer)player_number(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)] > 0) {
        amount -= pplayer->ai.love[player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(target)player_number(target), CLAUSE_LAST);
  }

  /* Throw a tantrum */
  if (pplayer->ai.love[player_index(target)] > 0) {
    pplayer->ai.love[player_index(target)] = -1;
  }
  pplayer->ai.love[player_index(target)player_index(target)player_index(aplayer)] < 0
        && pplayer->diplstates[player_index(aplayer)].has_reason_to_cancel >= 2
        && ai->diplomacy.player_intel[player_index(aplayer)player_index(aplayer)player_number(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(target)player_index(target)player_index(target)player_index(aplayer)player_index(aplayer)player_index(aplayer)player_number(eplayer)player_index(aplayer)player_number(aplayer),
				       CLAUSE_ALLIANCE);
          pplayer->ai.love[player_index(aplayer)] = 
                                 MIN(pplayer->ai.love[player_index(aplayer)ayer_index(plr)player_index(violator)player_index(violator)] -= MAX_AI_LOVE / 10;
        if (victim == pplayer) {
          pplayer->ai.love[player_index(violator)player_index(violator)] -= MAX_AI_LOVE / 100;
      if (victim == pplayer) {
        pplayer->ai.love[player_index(violator)player_index(violator)] -= MAX_AI_LOVE / 30;
      if (violator->diplstates[player_index(victim)player_index(violator)] -= MAX_AI_LOVE / 30;
      } else if (violator->diplstates[player_index(victim)player_index(violator)] -= MAX_AI_LOVE / 10;
      }
      if (victim == pplayer) {
        pplayer->ai.love[player_index(violator)] = 
          MIN(pplayer->ai.love[player_index(violator)player_index(violator)] -= MAX_AI_LOVE / 20;
}
ENDREP
DELTA 10445 341 2799
SVN  ÐpÒO~‰ ˆ4 €' a’€, ƒ[Š-… Ž§ PÍ?€F b‘€' [’˜ V”i‡ :–U‡ ‚i˜%€u kÊ8 †1œ\˜ ›r£³ G  ‚¿¯ G  ‚Â¯ G  ‚@Å}€g ƒŠ- ?Ì€h BÐ.
  Inconsistent references do not always indicate an error, because units
  can change owners (for example, because of civil war) outside the control
  the the AI codeguard(const struct unit *guard)
{
  const struct unit *charge_unit = game_find_unit_by_number(guard->ai.charge);
  const struct city *charge_city = game_find_city_by_numberDEBUGDEBUG, guard, "dangling guard reference/* Probably due to civil war */
    BODYGUARD_LOG(LOG_DEBUG, guard, "enemy charge");
  } else if (charge_owner && charge_owner != guard_owner) {
    /* Probably sold a city with its supported units.
  Inconsistent references do not always indicate an error, because units
  can change owners (for example, because of civil war) outside the control
  the the AI codegame_find_unit_by_numberDEBUG, DEBUG, game_find_unit_by_number(guard->ai.charge);
  struct city *charge_city = game_find_city_by_number(guard->ai.charge);
game_find_unit_by_numbergame_find_unit_by_number(charge->ai.bodyguard);
}

game_find_unit_by_number(guard->ai.charge);
}

game_find_city_by_number(guard->ai.charge);
}

game_find_unit_by_number(guard->ai.charge);
  const struct city *charge_city = game_find_city_by_numbercharge_owner != guard_owner) {
    BODYGUARD_LOG(LOGLEVEL_BODYGUARD, guard, "charge transferred, dismissENDREP
DELTA 13046 51106 100
SVN  ×Z×U ‡-  ›&‡X€U Z£A ²¥Estruct city *game_find_city_by_number(int id);

struct unit *game_find_unit_by_numberENDREP
DELTA 11025 0 271
SVN  ™tš" §2 ˜ ¶3§A˜ †uÞ˜ ƒcå¨ ‚Né˜ ­~ëvgame_find_city_by_numbergame_find_city_by_numbergame_find_city_by_numberat %s. Thank you.", pcity->name, BUG_URLgame_find_city_by_numberENDREP
DELTA 13038 767695 12393
SVN  ‚z›>k’P  “ ]9€W ZŽ~š †wŸ S–s 5“J ‚L˜{¤ EÜ •=œ+Š ƒz±lŠ ƒDµjŠ D¹2Š ‰cÈz§ @…@€ EÜ€ @…@€  EÜš SÒ{€[ EÜ¯ @…@€' JÜz° @…@€ LÜz ‚Ò_Š ’uÔ~Š ‡çwŠ ‚9ï¿ EÜ­ @…@€ EÜ­ @…@€} EÜ§ JÏ/ ƒZô1€H JÜz ƒ9ú « @…@€ JÜzµ @…@€$ JÜz …Lý.0 == nation_count()NULL == pnation) {
    freelog(loglevel, "%s has NULL nation", func_name);
    return FALSE;
  }
  if (pnation->item_number < 0
      || pnation->item_number >= nation_count()
      || &nations[nation_index(pnation)tem_number, nation_count()const char *qname = Qn_(name);
qQn_(pnation->name_single.vernacular)tem_numbertem_numbertem_numbertem_number***********
  Return the nation index.
**********/
const Nation_type_id nation_number(const struct nation_type *pnation)
{
  assert(pnation);
  return pnation->item_number***********
  Return the nation index.

  Currently same as nation_number(), paired with nation_count()
  indicates use as an array index.
**********/
const Nation_type_id nation_index(const struct nation_type *pnation)
{
  assert(pnation);
  return pnation - nations*************
  Return the*************/
const Nation_type_id nation_count(void)
{
  return game.control.nation_count***********
  Return the last item of nations.
**********/
const struct nation_type *nation_array_last(void)
{
  if (game.control.nation_count > 0) {
    return &nations[game.control.nation_count - 1];
  }
  return***********
  Return the first item of nations.
**********/
struct nation_type *nation_array_first(void)
{
  if (game.control.nation_count > 0) {
    return nations;
  }
  returntem_numbertem_numbertem_numberconst int nation_group_count(void)
{
  return num_nation_groups***********
  Return the nation group index.
**********/
const int nation_group_index(const struct nation_group *pgroup)
{
  assert(pgroup);
  return pgroup - nation_groups***********
  Return the nation group index.
**********/
const int nation_group_number(const struct nation_group *pgroup)
{
  assert(pgroup);
  return pgroup->item_number*************
  Return the nation groupconst char *qname = Qn_(name);
  int i;

  for (i = 0; i < num_nation_groups; i++) {
    if (0 == mystrcasecmp(Qn_(nation_groups[i].name), qname)) {
      return &nation_groups[i];
    }
  }

  return
  Return the first item of nation groups.
**********/
struct nation_group *nation_group_array_first(void)
{
  if (num_nation_groups > 0) {
    return nation_groups;
  }
  return***********
  Return the last item of nation groups.
**********/
const struct nation_group *nation_group_array_last(void)
{
  if (num_nation_groups > 0) {
    return &nation_groups[num_nation_groups - 1];
  }
  returnENDREP
DELTA 11431 0 4281
SVN  ¢j‹Mpˆ  Ž Š</™ ‚Z¨“ iªk“ `«dº ‚	­x“ …°” Gµ7” °`·€‚8 ‚Iéj€+ \íX G  wð€D &š6” uƒ|• ~œt  7‰-€P W‰"player_count()layer_index(pcity->owner)player_index(owner)player_index(owner)player_index(owner))) {
	pcmap->player[player_index(owner)player_index(owner)layer_index(pplayer)layer_index(pplayer)players_iterate(pplayer) {
    fprintf(fp, "# playerno:%d:color:#%02x%02x%02x:name:\"%s\"\n", 
            player_number(pplayer),
            col[player_index(pplayer)][0],
            col[player_index(pplayer)][1],
            col[player_index(pplayer)][2],
            pplayer->name);
  } players_iterate_end;player_index(city_owner(ptile->city))];
       } else if (unit_list_size(ptile->units) > 0) {
         color = col[player_index(unit_owner(unit_list_get(ptile->units, 0)))layer_index(pplayer)] = VS_NONE;
    } else if (pplayer->is_alive && !pplayer->surrendered) {
      plr_state[player_index(pplayer)] = VS_WINNER;
    } else {
      plr_state[player_index(pplayer)layer_index(pplayer)player_index(aplayer)layer_index(pplayer)] == VS_WINNlosers: ");
  players_iterate(pplayer) {
    if (plr_state[player_index(pplayer)ENDREP
DELTA 13038 780117 585
SVN  çWçH…H °o … *°r€_ j´ª `µ<€A q¶r€N H¹?‰ {º– »‡ ƒ5¼#€:  Á4½ …'ÂGŽ ŸaÇvj = 0players_iterate(pplayer) {
      char idlebuf[32], statebuf[32], namebuf[32], dsbuf[32];
      
      /* skip barbarians */
      if(is_barbarian(pplayer))
        continue;

      /* text for idleness */
      if(pplayer->pplayer->nturns_idle - 1),
		    pplayer->pplayer->is_alive) {
	if(pplayer->is_connected) {
	  if(pplayer->pplayer->ai.control)
	my_snprintf(namebuf, sizeof(namebuf), "*%-15s",pplayer->pplayer->player_number(pplayer)pplayerpplayer->nation), 
	      get_embassy_status(game.player_ptr, pplayer),
	      dsbuf,
	      get_vision_status(game.player_ptr, pplayer),
	      statebuf,
	      player_addr_hack(pplayerplayer_number(pplayer);
      j++;
    } players_iterate_end;player_by_numbENDREP
DELTA 1628 20667 2019
SVN  ™@µ|¯( …m € gˆ~€¢shared.h"		/* MAX_LEN_NAME */

#include "fc_types.h"

#define MAX_NUM_TECH_GOALS 10

/* Changing this value will break network compatibility. */
#define NO_NATION_SELECTED (NULL)

/* 
 * Purpose of this constant is to catch invalid ruleset and network
 * data and to allow static allocation of the nation_info packet.
 */
#define MAX_NUM_LEADERS MAX_NUM_ITEMS

#define MAX_NUM_NATION_GROUPS 128

/*
 * The city_name structure holds information about a default choice for
 * the city name.  The "name" field is, of course, just the name for
 * the city.  The "river" and "terrain" fields are entries recording
 * whether the terrain is present near the city - we give higher priority
 * to cities which have matching terrain.  In the case of a river we only
 * care if the city is _on_ the river, for other terrain features we give
 * the bonus if the city is close to the terrain.  Both of these entries
 * may hold a value of 0 (no preference), 1 (city likes the terrain), or -1
 * (city doesn't like the terrain).
 *
 * This is controlled through the nation's ruleset like this:
 *   cities = "Washington (ocean, river, swamp)", "New York (!mountains)"
 */
typedef int ternary;
struct city_name {
  char* name;
  ternary river;
  ternary terrain[MAX_NUM_TERRAINS];	
};

struct leader {
  char *name;
  bool is_male;
};

struct nation_group {
  int item_number;

  char name[MAX_LEN_NAME];
  
  /* How much the AI will try to select a nation in the same group */
  int match;
};

/* Pointer values are allocated on load then freed in free_nations(). */
struct nation_type {
  Nation_type_id item_number;
  struct name_translation name_single;
  struct name_translation name_pluralstruct leader *leaders;
  int city_style;
  struct city_name *city_names;		/* The default city names. */
  char *legend;				/* may be empty */

  bool is_playable;
  enum barbarian_type barb_type;

  /* civilwar_nations is a NO_NATION_SELECTED-terminated list of index of
   * the nations that can fork from this one.  parent_nations is the inverse
   * of this array.  Server only. */
  struct nation_type **civilwar_nations;
  struct nation_type **parent_nations;

  /* Items given to this nation at game start.  Server only. */
  int init_techs[MAX_NUM_TECH_LIST];
  int init_buildings[MAX_NUM_BUILDING_LIST];
  struct government *init_government;
  struct unit_type *init_units[MAX_NUM_UNIT_LIST];

  /* Groups which this nation is assigned to */
  int num_groups;
  struct nation_group **groups;
  
  /* Nations which we don't want in the same game.
   * For example, British and English. */
  int num_conflicts;
  struct nation_type **conflicts_with;

  /* Unavailable nations aren't allowed to be chosen in the scenario. */
  bool is_available;

  struct player *player; /* Who's using the nation, or NULL. */
};

/* General nation accessor functions. */
const Nation_type_id nation_count(void);
const Nation_type_id nation_index(const struct nation_type *pnation);
const Nation_type_id nation_number(const struct nation_type *pnation);

struct nation_type *nation_by_number(const Nation_type_id nation);
struct nation_type *nation_of_player(const struct player *pplayer);
struct nation_type *nation_of_city(const struct city *pcity);
struct nation_type *nation_of_unit(const struct unit *punit);

struct nation_type *find_nation_by_rule_name(const char *name);
struct nation_type *find_nation_by_translated_name(const char *name);

const char *nation_rule_name(const struct nation_type *pnation);

const char *nation_name_translation(struct nation_type *pnation);
const char *nation_name_for_player(const struct player *pplayer);
const char *nation_plural_translation(struct nation_type *pnation);
const char *nation_plural_for_player(const struct player *pplayer);

int city_style_of_nation(const struct nation_type *nation);

/* Ancillary nation routines */
bool is_nation_playable(const struct nation_type *nation);
enum barbarian_type nation_barbarian_type(const struct nation_type *nation);
bool can_conn_edit_players_nation(const struct connection *pconn,
				  const struct player *pplayer);

/* General nation leader accessor functions. */
struct leader *get_nation_leaders(const struct nation_type *nation, int *dim);
struct nation_type **get_nation_civilwar(const struct nation_type *nation);
bool get_nation_leader_sex(const struct nation_type *nation,
			   const char *name);
bool check_nation_leader_name(const struct nation_type *nation,
			      const char *name);

/* General nation group accessor routines */
const int nation_group_count(void);
const int nation_group_index(const struct nation_group *pgroup);
const int nation_group_number(const struct nation_group *pgroup);

struct nation_group *nation_group_by_number(int id);
struct nation_group *find_nation_group_by_rule_name(const char *name);

bool is_nation_in_group(struct nation_type *nation,
			struct nation_group *group);

/* Initialization and iteration */
void nation_groups_free(void);
struct nation_group *add_new_nation_group(const char *name);

struct nation_group *nation_group_array_first(void);
const struct nation_group *nation_group_array_last(void);

#define nation_groups_iterate(_p)					\
{									\
  struct nation_group *_p = nation_group_array_first();			\
  if (NULL != _p) {							\
    for (; _p <= nation_group_array_last(); _p++) {

#define nation_groups_iterate_end					\
    }									\
  }									\
}

/* Initialization and iteration */
void nations_alloc(int num);
void nations_free(void);
void nation_city_names_free(struct city_name *city_names);

struct nation_type *nation_array_first(void);
const struct nation_type *nation_array_last(void);

/* Iterate over nations.  This iterates over all nations, including
 * unplayable ones (use is_nation_playable to filter if necessary). */
#define nations_iterate(_p)						\
{									\
  struct nation_type *_p = nation_array_first();			\
  if (NULL != _p) {							\
    for (; _p <= nation_array_last(); _p++) {

#define nations_iterate_end						\
    }									\
  }									\
}

#endif  /* FC__NATION_H */
ENDREP
DELTA 13109 0 2990
SVN  †  †  X…$ à?  ‚à@ âV€d ƒ§fä; G…Œ(€B Ë…š`— ‚Y…æn€Q ƒg…ê$¨ …=…îI€@ †!…õ8€\ ”q…ü'œ ŽR†‘.©nations_iterate(pnation) {
    tileset_setup_nation_flag(tileset, pnation);
  } nations_iterate_end;ype_index(ut)assert(presource);
  t->sprites.resource[resource_index(presource)terrain_index(pterrain)
			      struct government *gov)
{
  t->sprites.government[government_index(gov)
			       struct nation_type *nation)
{nation_count());
  t->sprites.nation_flag.p[nation_index(nation)] = flag;

  sprite_vector_reserve(&t->sprites.nation_shield, nation_count());
  t->sprites.nation_shield.p[nation_index(nation)nation_index(pnation)];
  } else {
    return t->sprites.nation_flag.p[nation_index(pnation)type_index(unit_type(punit))E_FULL(t->sprites.unit.go_to);
    }
  }
†  ƒ»=ƒ»Ep†9 ø&)€3 eùj— l‰^€w ¯(Œ1— ¢V»h€7 B‚¬ ¡2à1“ ‚s® [‚­< ,‚’x€_ Ü‚”s– i‚ä} ˆ‚ñx€] P‚ä} ‚N‚ûc— Z‚ä} ¼!‚ÿterrain_index(other)]->blending
	   &&  NULL == t->sprites.drawing[terrain_index(other)]->blender)) {
      continue;
    }

    ADD_SPRITE(t->sprites.drawing[terrain_index(other)terrain_index(pterrain)errain_index(tterrain_near[(dir)])]->num_layers > l	    \
     ? t->sprites.drawing[terrain_index(tterrain_near[(dir)])terrain_index(pterrain)player_index(owner0)][pedge->type][0]);
	}
	if (owner1) {
	  ADD_SPRITE_SIMPLE(t->sprites.grid.player_borders
			    [player_index(owner1)][pedge->type][1]);
	}
      }
    }
  } elseplayer_index(owner)resource_index(ptile->resource)]);
	}
      }
terrain_index(pterrain)]->mine) {
	ADD_SPRITE_SIMPLE(t->sprites.drawing[terrain_index(pterrain)nation_index(pnation)]) {
    assert(0);
    return NULL;
  }
  return t->sprites.government[government_index(gov)]utype_index(punittype)]ENDREP
DELTA 13095 27194 227
SVN  …[†>V‚1 ”B ‘ t”J‘ †G–FŽ ‰k˜ ƒ§˜ …Zª%— Lë: ‡g°\Ž ‡<¸K€a SÀV˜ …/Î8Ž tÓo‰ •mÔlŽ ‹ êaŽ rõitile_special_typetile_special_typeplayer_by_numbgame_find_unit_by_numbergame_find_unit_by_numberplayer_by_number(owner)player_by_numbgame_find_city_by_number(old_traderoutes[i]);
    struct city *newcity = game_find_city_by_numbergame_find_city_by_numberplayer_by_numbby_numberplayer_by_numbplayer_by_numbENDREP
DELTA 13046 55403 514
SVN  ØØk}…j “ €D m“K€D ‚•t€z ‚Y™a€D ¡Eœv‘ ˆ5¾H‘ ¢Ç
€% Š	ê5€U ¢rõ‘ ‚˜
‘ „š)‘ f°[ )Ÿ6‘ P²{ š.¡<‘ »w‘ …;½‘ BÂ_‘ “]Ä.player_number(treaty->plr0);
  pa.plrno1=player_number(treaty->plr1)player_number(treaty->plr0);
  pa.plrno1=player_number(treaty->plr1)player_number(treaty->plr0);
      pa.plrno1=player_number(treaty->plr1);
      pa.plrno_from=player_number(pclause->from)player_number(treaty->plr0);
  pa.plrno1=player_number(treaty->plr1)ayer_number(plr0)ayer_number(plr0)layer_number(pdialog->treaty.plr0);
  pa.plrno1 = player_number(pdialog->treaty.plr1);
  pa.clause_type = type;
  pa.plrno_from = player_number(pdialog->treaty.plr0)layer_number(pdialog->treaty.plr0);
  pa.plrno1 = player_number(pdialog->treaty.plr1)ayer_number(plr0)ayer_number(plr0)ayer_number(plr1)ayer_number(plr1)ayer_number(plr0)ayer_number(plr1)ayer_number(plr0)ayer_number(plr1)ENDREP
DELTA 13038 789898 310
SVN  „×K„×Z& ÀW Ž ‚ÇbÀ_˜ Î{„ˆPplayer_by_numbgame_find_city_by_numberENDREP
DELTA 1827 55073 2596
SVN  ±*¯@yŠ) …8 €i U†€g ˆ€N A €‚p A  ‚K|€V „F“  }c ‚Hš¡ {c }¬s j­z¼ ¯2” k°? A  |ž^µ ŸW€H ‚s¡€ ƒ¥‹ o¨8‹ ©/‹ wª:
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>
#include <stringfcintl.h"
#include "game.h"
#include "map.h"
#include "packets.h"
#include "player.h"
#include "support#include "gui_main.h"
#include "gotodlg.h"
#include "muistuff.h"

static Object *goto_wnd;
static Object *goto_cities_listview;
static struct Hook goto_cities_disphook;
static Object *goto_airlift_button;


 Display function for the cities listview
*****************************************************************/
HOOKPROTONH(goto_cities_display, void, char **array, struct city *pcity)
{
  static char name[80];
  sz_strlcpy(name, pcity->name);
  /* FIXME: should use unit_can_airlift_to(). */
  if (pcity->airlift) {
    sz_strlcat(name, "(A)");
  }
  *array = name;
}

/ remove me
#if DISABLED
    center_tile_mapcanvas(pdestcity->x, pdestcity->y);
#endifend_goto_tile(punit, pcity->tilerequest_unit_airlift(punit, pcityplayers_iterate(pplayer)
  {
    city_list_iterate(pplayer->players_iterate_end;Object *goto_ok_button;
  Object *goto_cancel_button;_("Goto/Airlift Unit"),
        MUIA_Window_ID, MAKE_ID('G','O','T','O')_("_Ok")),
                Child, goto_airlift_button = MakeButton(_("_Airlift")),
                Child, goto_cancel_button = MakeButton(_("_Cancel")civstandardcivstandardcivstandardENDREP
DELTA 13038 788611 1259
SVN  ÆmÈ_s“ ˜/ Ž a˜7˜ Œ"¨'” j´Y• XµT€Q .º1 ƒ\º˜ ¨' À;’ !¾i ‘,Á=’ ’Òx˜ „å"€L ƒMêw€ƒa ˆò€‚] ‰eüd• …2†[¸ ‚Œ9€ …H@¸ KŒ9 „•˜ ^š€ ‚r@ zŸuµ m¢´ „J¤5Ÿ P± P> bª8Ž „:¬"€- „G±y€V ·€_ v¹ ” D»” ˆ*¼Z– Å•;Æ2player_by_numbgame_find_city_by_numberlayer_number(pother)layer_number(pplayer)layer_number(pother),
					   player_number(pplayer));
    dlsend_packet_diplomacy_cancel_meeting(pother->connections,
					   player_number(pplayer),
 					   player_number(pplayer));

    notify_player(pplaygame_find_city_by_numbernotify_player(pothlayer_index(pdest)game_find_city_by_numberlayer_index(pdest)].type=DS_CEASEFIRE;
	pgiver->diplstates[player_index(pdest)].turns_left = TURNS_LEFT;
	pdest->diplstates[player_index(pgiver)].type=DS_CEASEFIRE;
	pdest->diplstates[player_index(pgiver)layer_index(pdest)].type = DS_ARMISTICE;
	pdest->diplstates[player_index(pgiver)].type = DS_ARMISTICE;
	pgiver->diplstates[player_index(pdest)].turns_left = TURNS_LEFT;
	pdest->diplstates[player_index(pgiver)].turns_left = TURNS_LEFT;
	pgiver->diplstates[player_index(pdest)].max_state = 
          MAX(DS_PEACE, pgiver->diplstates[player_index(pdest)].max_state);
	pdest->diplstates[player_index(pgiver)].max_state = 
          MAX(DS_PEACE, pdest->diplstates[player_index(pgiver)layer_index(pdest)].type=DS_ALLIANCE;
	pdest->diplstates[player_index(pgiver)].type=DS_ALLIANCE;
	pgiver->diplstates[player_index(pdest)].max_state = 
          MAX(DS_ALLIANCE, pgiver->diplstates[player_index(pdest)].max_state);
	pdest->diplstates[player_index(pgiver)].max_state = 
          MAX(DS_ALLIANCE, pdest->diplstates[player_index(pgiver)player_index(aplayer)player_by_number(counterpart);
  pgiver = player_by_numblayer_number(pother), giver, type,
					  value);
    dlsend_packet_diplomacy_remove_clause(pother->connections,
					  player_number(pplayer)player_by_number(counterpart);
  pgiver = player_by_numbgame_find_city_by_numberlayer_number(pother), giver, type,
					  value);
    dlsend_packet_diplomacy_create_clause(pother->connections,
					  player_number(pplayer)layer_number(pplayer),
					   player_number(pplayer)layer_number(pother),
					   player_number(pplayer)player_by_number(counterpart));player_by_numblayer_number(pother),
					 player_number(pplayer));
    dlsend_packet_diplomacy_init_meeting(pother->connections,
					 player_number(pplayer),
					 player_number(pplayer)player_number(other),
                                          player_number(pplayer)player_number(other),
                                             player_number(pclause->from)player_number(other)player_number(other)layer_number(pplayer2)layer_number(pplayer)ENDREP
DELTA 7723 1260 11638
SVN  è
‚¢Y„Rì2 …f €R …z ‚‡€‚ -‰9 ‡Šf€ƒ- „9“• ;—e€ƒo šH© EŽ@€„ G  ‚U›T˜ „`ž8€ƒ5 G  U¦0§ ‹^¨€‚J ´A  ˆµq€ m¿{€K G  HÂo€w ‚mÅ/€p PÊ@€…V G  xÈ¸ É	 EŽ@ BË€‚$ ƒ$ÍX€b _Ñ.€p „ÕO€3 ƒ0Ú- EŽ@ 2ÞI€ hâ€6 LÊ@€‚F X”>€‚ LÊ@€’@ G €Y LÊ@€†0 G  ‚Uä  EŽ@ Sèo– héX½ mì €t jî%˜ ‚Sï)„ ƒò˜ hõ˜ 6ö€‚ fù5˜ hú5˜ Tü,€Z ÿ€i O†w€k M‰W• @‹€U g9€ @@€I ‚‘. ‰&”Dˆ ‚ž€v ¡– v±8€U h²lŠ p´%€( V·p ‚*¶yˆ `¹= ‚iº- †½A˜ ÃE€ tÅm¥ Æo€d Èa€F Ë<€ 1Í€‚ ƒFÏ¦ QÒo€ ‚Õw€…y QÛ7­ JÝ­ ÞN„ ßU€ƒ& á(€~ iã+€ läW€l hålž Fæ|€uçogame.h"
#include "log.h"
#include "movement.h"
#include "unit.h"
#include "unitlisguard.h"
#include "aiexplorer -1     /* Boat is looking for a passenger */
#define FERRY_ABANDON_BOSS  0     /* Passenger is assigned for boat, but boat
                                   * might take another passenger. Probably
                                   * passenger already left the boat*/
t) {
        unit_class_iterate(punitclass) {
          if (punitclass->move_type == LAND_MOVING
              && can_unit_type_transport(unit_type(punit), punitclass)) {
            /* Can transport some land units. */
            ai->stats.boats++;
            if (punit->ai.passenger == FERRY_AVAILABLE) {
              ai->stats.available_boats++;
            }
            break;
          }
        } unit_class_iterate_end;layer_number(pplayer)) {
        unit_class_iterate(punitclass) {
          if (punitclass->move_type == LAND_MOVING
              && can_unit_type_transport(unit_type(punit), punitclass)) {
            /* Can transport some land units. */
            freelog(LOG_NORMAL, "#%d. %s[%d], psngr=%d",
                    n,
                    unit_rule_name(punit),
                    punit->id,
                    punit->ai.passenger);
            n++;
            break;
          }
        } unit_class_iterate_endInitialize new ferry when player gets it
*****/
void aiferry_init_ferry(struct unit *ferry)
{
  if (is_sailing_unit(ferry)) {
    unit_class_iterate(punitclass) {
      if (punitclass->move_type == LAND_MOVING
          && can_unit_type_transport(unit_type(ferry), punitclass)) {
        /* Can transport some land units, so is consider ferry */
        struct ai_data *ai = ai_data_get(unit_owner(ferry));

        ferry->ai.passenger = FERRY_AVAILABLE;
        ai->stats.boats++;
        ai->stats.available_boats++;

        break;
      }
    } unit_class_iterate_end;
  }
}


game_find_unit_by_numberstruct ai_data *ai = ai_data_get(unit_owner(punit));

  /* First clear the previous assignments (just in case). */
  aiferry_clear_boat(punit);

  /* Now add ourselves to the list of potential passengers */
  ai->stats.passengers++;
  UNIT_LOG(LOG_DEBUG, punit, "requests a boat (total passengers=%d).",
           ai->stats.passengers);
  punit->ai.ferryboat = FERRY_WANTED;

  /* Lastly, wait for ferry. */
  punit->ai.done = TRUE;
}

assert(punit->owner == pferry->owner);

	&& punit->ai.passenger == FERRY_AVAILABLE) {
      unit_class_iterate(punitclass) {
        if (punitclass->move_type == LAND_MOVING
            && can_unit_type_transport(unit_type(punit), punitclass)) {
          /* Can transport some land units. */
          boats++;
          break;
        }
      } unit_class_iterate_endlayer_number(pplayer), game.infoconst struct tile *src_tile,
				  enum direction8 dir,
				  const struct tile *tgt_tile,
                                  struct pf_parameter *param)
{is_ocean(src_tile->terrain)) {
    /* Sea-to-Land */
    move_cost = PF_IMPOSSIBLE_MC;
  } else {
    /* Land-to-Land */
    move_cost = map_move_cost_ai(src_tile, tgt_tile);
  }

  return move_cost;
}

const struct tile *ptile, enum known_type known,
                    struct pf_parameter *param)
{
  if (is_ocean(ptileRuns a few checks to determine if "boat" is a free boat that can carry
  "cap" units of the same type as "punit"bool is_boat_free(struct unit *boat, struct unit *punit, int cap)
{
  /* - Only transporters capable of transporting this unit are eligible.
   * - Units with orders are skipped (the AI doesn't control units with
   *   orders).
   * - Only boats that we own are eligible.
   * - Only available boats or boats that are already dedicated to this unit
   *   are eligible.
   * - Only boats with enough remaining capacity are eligible.
   */
  return (can_unit_transport(boat, punit)
	  && !unit_has_orders(boat)
	  && boat->owner == punit->owner
	  && (boat->ai.passenger == FERRY_AVAILABLE
	      || boat->ai.passenger == punit->id)
	  && (get_transporter_capacity(boat) 
	      - get_transporter_occupancy(boat) >= cap));
}

  Return the unit ID of the boat; punit is the passenger  int ferryboat = punit->ai.ferryboat; /*currently assigned ferry*/

  assert(0 < ferryboat
	 || FERRY_NONE == ferryboat
	 || FERRY_WANTED == ferryboat);
  UNIT_LOG(LOGLEVEL_FINDFERRY, punit, "asked aiferry_find_boat for a boat");

  if (aiferry_avail_boats(unit_owner(punit)) <= 0 
      && /* Should this be !can_unit_exist_at_tile() instead of is_ocean() some day?
    * That would allow special units to wade in shallow coast waters to meet
    * ferry where deep sea starts. */
    int radius = (is_ocean(pos.tiletile, radius, ptile) {
      unit_list_iterate(ptile->units, aunit) {
        if (is_boat_free(aunit, punit, cap(moves left: %d)",
                     unit_rule_name(aunit),
                     aunit->id,
                     aunit->tile->x,
		     aunit->tile->y,
		     aunit->moves_lefttile, 1, ptile) {
    unit_list_iterate(ptile->units, aunit) {
      if (is_boat_free(aunit, punit, cap)) {
        return aunit->id;

  Manage the passengers on a ferry, even if they are asleep.
  This is suitable for when the commander of a ferry has left;
  it gives a chance for another passenger to take control/
static void ai_activate_passengers(struct unit *ferry)
{
  unit_list_iterate_safe(ferry->tile->units, aunit) {
    if (aunit->transported_by == ferry->id) {
      handle_unit_activity_request(aunit, ACTIVITY_IDLE);
      aunit->ai.done = FALSE;
      ai_manage_unit(unit_owner(aunit), aunit);
    }
  } unit_list_iterate_safMove a passenger on a ferry to a specified destination.
  The passenger is assumed to be on the given ferry.
  The destination may be inland, in which case the passenger will ride
  the ferry to a beach head, disembark, then continue on land.
  Return FALSE iff we died/
bool ai_amphibious_goto_constrained(struct unit *ferry,
				    struct unit *passenger,
				    struct tile *ptile,
				    struct pft_amphibious *parameter)
{
  bool alive = TRUE;
  struct player *pplayer = unit_owner(passenger);
  struct pf_map *map = NULL;
  struct pf_path *path = NULL;

  assert(pplayer->ai.control);
  assert(!unit_has_orders(passenger));
  assert(ferry->tile == passenger->tile);

  ptile = immediate_destination(passenger, ptile);

  if (same_pos(passenger->tile, ptile)) {
    /* Not an error; sometimes immediate_destination instructs the unit
     * to stay here. For example, to refuel.*/
    send_unit_info(NULL, passenger);
    return TRUE;
  } else if (passenger->moves_left == 0 && ferry->moves_left == 0) {
    send_unit_info(NULL, passenger);
    return TRUE;
  }

  map = pf_create_map(&parameter->combined);
  path = pf_get_path(map, ptile);

  if (path) {
    ai_log_path(passenger, path, &parameter->combined);
    /* Sea leg */
    alive = ai_follow_path(ferry, path, ptile);
    if (alive && passenger->tile != ptile) {
      /* Ferry has stopped; it is at the landing beach or
       * has run out of movement points */
      struct tile *next_tile;

      pft_advance_path(path, passenger->tile);
      next_tile = path->positions[1].tile;
      if (!is_ocean(next_tile->terrain)) {
	UNIT_LOG(LOG_DEBUG, passenger, "Our boat has arrived "
		 "[%d](moves left: %d)", ferry->id, ferry->moves_left);
	UNIT_LOG(LOG_DEBUG, passenger, "Disembarking to (%d,%d)",
		 TILE_XY(next_tile));
	/* Land leg */
	alive = ai_follow_path(passenger, path, ptile);
	if (0 < ferry->moves_left
            && (!alive || ferry->tile != passenger->tile)) {
	  /* The passenger is no longer on the ferry,
	   * and the ferry can still act.
	   * Give a chance for another passenger to take command
	   * of the ferry.
	   */
	  UNIT_LOG(LOG_DEBUG, ferry, "Activating passengers");
	  ai_activate_passengers(ferry);
          /* It is theoretically possible passenger died here due to
           * autoattack against another passing unit at its location. */
        }
      }
      /* else at sea */
    }
    /* else dead or arrived */
  } else {
    /* Not always an error; enemy units might block all paths. */
    UNIT_LOG(LOG_DEBUG, passenger, "no path to destination");
  }

  pf_destroy_path(path);
  pf_destroy_map(map);

  return alive;
}

****
  Move a passenger on a ferry to a specified destination.
  Return FALSE iff we died/
bool aiferry_goto_amphibious(struct unit *ferry,
			     struct unit *passenger, struct tile *ptile)
{
  struct pft_amphibious parameter;
  struct ai_risk_cost land_risk_cost;
  struct ai_risk_cost sea_risk_cost;

  ai_fill_unit_param(&parameter.land, &land_risk_cost, passenger, ptile);
  if (parameter.land.get_TB != no_fights) {
    /* Use the ferry to go around danger areas: */
    parameter.land.get_TB = no_intermediate_fights;
  }
  ai_fill_unit_param(&parameter.sea, &sea_risk_cost, ferry, ptile);
  pft_fill_amphibious_parameter(&parameter);

  /* Move as far along the path to the destination as we can;
   * that is, ignore the presence of enemy units when computing the
   * path */
  parameter.combined.get_zoc = NULL;
  return ai_amphibious_goto_constrained(ferry, passenger, ptile, &parameter);
}

struct tile *dest_tileTILE_XY(dest_tile));

    if (!is_ocean_near_tile(punit->tilepunit->ai.done = TRUE; /* Nothing to do */
        return FALSE;
      }

      ferryboat = game_find_unit_by_numberTILE_XY(ferryboat->tile)tilegame_find_unit_by_numberTILE_XY(ferryboat->tile)tile, ferryboat->tile)) {
      (void) ai_unit_move(punit, ferryboat->tile);
    }

    if (!can_unit_load(punit, ferryboat)) {
      /* Something prevented us from boarding */
      /* FIXME: this is probably a serious bug, but we just skip past
       * it and continue.TILE_XY(ferryboat->tile)game_find_unit_by_numberis_boat_free(ferryboat, punit, 0)) {
      struct unit *bodyguard = aiguard_guard_of(punitTILE_XY(dest_tile));
      aiferry_psngr_meet_boat(punit, ferryboat);

      punit->goto_tile = dest_tiletile, bodyguard->tile)) {
        if (!goto_is_sane(bodyguard, punit->tile, TRUE)
            || !ai_unit_goto(bodyguard, punit->tile)) {
          /* Bodyguard can't get there or died en route */
          aiguard_request_guard(punit)punit->ai.done = TRUEaiguard_request_guard(punit);
          ai_unit_new_role(bodyguard, AIUNIT_NONE, NULLtile, bodyguard->tile));
	handle_unit_load(pplayer, bodyguard->id, ferryboat->id);
      }
      if (!aiferry_goto_amphibious(ferryboat, punit, dest_tilesame_pos(punit->tile, dest_tile)) {
        /* Arrived */
        handle_unit_activity_request(punit, ACTIVITY_IDLE);
      } else {
        /* We are in still transit */
        punit->ai.done = TRUE;pos.tilerule_name(aunit),
                 aunit->id,
                 TILE_XY(aunit->tile));
	pferry->goto_tile = aunit->tiletile_get_city(pos.tileproduction.is_unit
		&& utype_has_role(utype_by_number(pcity->production.value),
				productionTILE_XY(pcity->tile));

      if (pos.turn > turns && pcity->production.is_unit
          && utype_has_role(utype_by_number(pcity->production.value),
			   L_FERRYBOAT)pos.tiletype_role(aunit	pferry->goto_tile = pos.tile  int sanity = punit->idtile_get_city(punit->tile))) {
    UNIT_LOG(LOGLEVEL_FERRY, punit, "waiting in %s to recover hitpoints", 
             pcity->name);
    punit->ai.done = TRUEget_transporter_occupancy(punit) == 0punit->tile;

    if (punit->ai.passenger > 0) {
      struct unit *psngr = game_find_unit_by_number */
      if (!psngr 
	  || real_map_distance(punit->tile, psngr->tileFERRY_ABANDON_BOSS;
      }
    }

    if (punit->ai.passenger == FERRY_AVAILABLE
        || punit->ai.passenger == FERRY_ABANDON_BOSSunit_owner(aunit) != pplayer 
            || aunit->transported_by != punit->id) {
          /* We used to check if ferryboat was set to us or to
           * FERRY_WANTED too, but this was a bit strict. Especially
           * when we don't save these values in a savegame. */rule_name(candidate),
                game_find_unit_by_number(punit->ai.passenger);

      assert(boss != NULL);

      if (unit_has_type_flag(boss, F_SETTLERS) || unit_has_typerule_name(boss),
		boss->id);
      ai_manage_unit(pplayer, boss);
    
      if (!game_find_unit_by_number(sanity) || punit->moves_left <= 0) {
        return;
      }
      if (game_find_unit_by_number(bossid)) {
	if (same_pos(punit->tile, boss->tile)) {
	  /* The boss decided to stay put on the ferry. We aren't moving. */
          UNIT_LOG(LOG_DEBUG, boss, "drove ferry - done for now");
          boss->ai.done = TRUE;
	  return;
	} else if (get_transporter_occupancy(punit) != 0) {
	  /* The boss isn't on the ferry, and we have other passengers?
	   * Forget about him. */
	  punit->ai.passenger = FERRY_ABANDON_BOSS;
	}
      }
    } else {
      /* Cannot select a passenger-in-charge */
      break;
    }
  } while (get_transporter_occupancy(punit)ai_unit_new_role(punit, AIUNIT_ATTACK, NULL); "
	   "(moves left: %d).", punit->moves_leftNULL (moves left: %d)",
	     punit->moves_left);
    if (ai_unit_goto(punit, punit->goto_tile)) {
      if (is_tiles_adjacent(punit->tile, punit->goto_tile)
          || same_pos(punit->tile, punit->goto_tile)) {
        struct unit *cargo = game_find_unit_by_number(punit->ai.passenger);

        /* See if passenger can jump on board! */
        assert(cargo != punit);
        ai_manage_unit(pplayer, cargo);
      }
    }tile, punit->goto_tile)) {
      UNIT_LOG(LOGLEVEL_FERRY, punit, "staying in city that needs us");
      punit->ai.done = TRUEif (ai_unit_goto(punit, punit->goto_tile)
          && same_pos(punit->tile, punit->goto_tile)) {
        punit->ai.done = TRUE; /* save some CPU */
      }if (!ai_manage_explorer(punit)) {
    punit->ai.done = TRUE;
  }

  if (game_find_unit_by_number(sanity) && punit->goto_tile = pcity->tilepunit->ai.done = TRUE;
      ai_unit_new_role(punit, AIUNIT_NONE, NULL);
      (void) ai_unit_goto(punit, pcity->tileENDREP
DELTA 6093 58 7525
SVN  ¥,…~OÈQ † €z b†_€a G €^ M‘ €‚E Y€„+ b˜,€‰ zêq€‹ š5… d›;º xœS Ns€‚* Sô>§ N€„) Rô>€] uº{€ IÁ;€* †DÄŠ bÐ!‰ „TËGŠ bÐ!€ˆD ‡_ô?€…y …€a '‡-€C „ˆw› u• „UŽ€L ˆa“€S M‘ €†] G  lŸ^± N€„Wcapability.h"
#include "capstr.h"
#include "events.h"
#include "fcintl.h"
#include "game.h"
#include "log.h"
#include "memauth.h"
#include "diplhand.h"
#include "gamehand.h"
#include "maphand.h"
#include "meta.h"
#include "plrhand.h"
#include "ruleset.h"
#include "sernet.h"
#include "srv_main.h"
#include "stdinhand.h"

#include "connecthand.h"

****
  This is used when a new player joins a server, before the game
  has started.  If pconn is NULL, is an AI, else a client.

  N.B. this only attachs a connection to a player if 
       pconn->name == player->usernamevoid establish_new_connection(struct connection *pconn)
{
  struct conn_list *dest = pconn->self;
  struct player *pplayer;
  struct packet_server_join_reply packet;
  char hostname[512];

  /* zero out the password */
  memset(pconn->server.password, 0, sizeof(pconn->server.password));

  /* send off login_replay packet */ _("%s Welcome"),
              pconn->username);
  sz_strlcpy(packet.challenge_file, new_challenge_filename(pconn));
  packet.conn_id = pconn->id;
  send_packet_server_join_reply(pconn, &packet);

  /* "establish" the connection */
  pconn->established = TRUE;
  pconn->server.status = AS_ESTABLISHED;

  conn_list_append(game.est_connections, pconn);

  /* introduce the server to the connection */
  if (my_gethostname(hostname, sizeof(hostname)) == 0) {
    notify_conn(dest, NULL, E_CONNECTION,
		_("Welcome to the %s Server running at %s port %d."),NULL, E_CONNECTION,
		_("Welcome to the %s Server at port %d."),
                freeciv_name_version(), srvarg.port);
  }

  /* FIXME: this (getting messages about others logging on) should be a 
   * message option for the client with event */

  /* notify the console and other established connections that you're here */
  freelog(LOG_NORMAL, _("%s has connected from %s."),
          pconn->username, pconn->addr);
  conn_list_iterate(game.est_connections, aconn) {
    if (aconn != pconn) {
      notify_conn(aconn->self, NULL, E_CONNECTION,
		  _("Server: %s has connected from %s."),
                  pconn->username, pconn->addr);
    }
  } conn_list_iterate_end;

  send_rulesets(dest);
  send_server_settings(dest);

  /* a player has already been created for this user, reconnect him */
  if ((pplayer = find_player_by_user(pconn->username))) {
    attach_connection_to_player(pconn, pplayer);

    if (server_state == RUN_GAME_STATE) {
      /* Player and other info is only updated when the game is running.
       * See the comment in lost_connection_to_client(). */
      send_packet_freeze_hint(pconn);
      send_all_info(dest);
      send_game_state(destthaw_hint(pconn);
      dsend_packet_start_phase(pconn, game.info.phase);
    }

    /* This must be done after the above info is sent, because it will
     * generate a player-packet which can't be sent until (at least)
     * rulesets are sent. */
    if (game.info.auto_ai_toggle && pplayer->ai.control) {
      toggle_ai_player_direct(NULL, pplayer);
    }

  } else if (server_state == PRE_GAME_STATE && game.info.is_new_game) {
    if (!attach_connection_to_player(pconn, NULL)) {
      notify_conn(dest, NULL, E_CONNECTION,
		  _("Couldn't attach your connection to new player."));
      freelog(LOG_VERBOSE, "%s is not attached to a player", pconn->username);
    } else {
      sz_strlcpy(pconn->player->name, pconn->username);
    }
  }

  /* remind the connection who he is */
  if (!pconn->player) {
    notify_conn(dest, NULL, E_CONNECTION,
		_("You are logged in as '%s' connected to no player."),
                pconn->username);
  } else if (strcmp(pconn->player->name, ANON_PLAYER_NAME) == 0) {
    notify_conn(dest, NULL, E_CONNECTION,
		_("You are logged in as '%s' connected to an "
		  "anonymous player."),
		pconn->username);
  } else {
    notify_conn(dest, NULL, E_CONNECTION,
		_("You are logged in as '%s' connected to %s."),
                pconn->username, pconn->player->name);
  }

  /* if need be, tell who we're waiting on to end the game.info.turn */
  if (server_state == RUN_GAME_STATE && game.infophaseNULL, E_CONNECTION,
		    _("Turn-blocking game play: "
		if (server_state != RUN_GAME_STATE) {
    show_players(pconn);
  }

  send_conn_info(dest, game.est_connections);
  send_conn_info(game.est_connections, dest);
  send_game_info(dest);
  send_player_info_c(NULL, dest);
  reset_all_start_commands();
  (void) send_server_info_to_metaserver(META_INFO)send the rejection packet to the clientvoid reject_new_connection(const char *msg, struct connection *pconn)
{
  struct packet_server_join_reply packet;

  /* zero out the password */
  memset(pconn->server.password, 0, sizeof(pconn->server.password));

  packet.you_can_join = FALSE;
  sz_strlcpy(packet.capability, our_capability);
  sz_strlcpy(packet.message, msg);
  packet.challenge_file[0] = '\0';
  packet.conn_id = -1;
  send_packet_server_join_reply(pconn, &packet);
  freelog(LOG_NORMAL, _("Client rejected: %s."), conn_description(pconn));
  flush_connection_send_buffer_all(pconn)Returns FALSE if the clients gets rejected and the connection should be
 closed. Returns TRUElogin_request(struct connection *pconn, 
                          struct packet_server_join_req *req)
{
  char msg[MAX_LEN_MSG];
  
req->username, pconn->addr);
  
  /* print server and client capabilities to console */
  freelog(LOG_NORMAL, _("%s has client version %d.%d.%d%s"),
          pconn->userconnectionreq->userconnectionreq->username);
    return FALSE;
  }

  remove_leading_trailing_spaces(req->username);

  /* Name-sanity check: could add more checks? */
  if (!is_valid_username(req->username)) {
    my_snprintf(msg, sizeof(msg), _("Invalid username '%s'"), req->username);
    reject_new_connection(msg, pconn);
    freelog(LOG_NORMAL, _("%s was rejected: Invalid name [%s]."),
            req->username, pconn->addr);
    return FALSE;
  } 

  /* don't allow duplicate logins */
  conn_list_iterate(game.all_connections, aconn) {
    if (mystrcasecmp(req->username, aconn->username) == 0) { 
      my_snprintf(msg, sizeof(msg), _("'%s' already connected."), 
                  req->username);
      reject_new_connection(msg, pconn);
      freelog(LOG_NORMAL, _("%s was rejected: Duplicate login name [%s]."),
              req->username, pconn->addr);
      return FALSE;
    }
  } conn_list_iterate_end;

  if (srvarg.auth_enabled) {
    return authenticate_user(pconn, req->username);
  } else {
    sz_strlcpy(pconn->username, req->username);
    establish_new_connection(pconn);
    return TRUE;
  }game.est_connections, pconn);
  delayed_disconnect++;
  notify_conn(game.est_connections, NULL, E_CONNECTION,
	      _("Lost connection: %s."), desc);

  if (!pplayer) {
    delayed_disconnect--;
    return;
  }

  unattach_connection_from_player(pconn);

  send_conn_info_remove(pconn->self, game.est_connections);
  if (server_state == RUN_GAME_STATE) {
    /* Player info is only updated when the game is running; this must be
     * done consistently or the client will end up with inconsistent errors.
     * At other times, the conn info (send_conn_info) is used by the client
     * to display player information.  See establish_new_connection(). */
    send_player_info(pplayer, NULL);
  }
  notify_if_first_access_level_is_available();

  if (game.infoserver_state == PRE_GAME_STATE) {
    server_remove_player(pplayer);
  } else {
    if (game.info
    check_for_full_turn_done();
  }
  reset_all_start_commands();
layer_number(pconn->player)username, pconn->user
  if (!dest) {
    dest = game.est_connections;
  }
  
  conn_list_iterate(
  If pplayer is NULL, take the next available player that is not already 
  associated.
  Note "observer" connections do not count for is_connected. You must set
       pconn->obserber to TRUE before attaching!bool attach_connection_to_player(struct connection *pconn,
                                 struct player *pplayer)
{
  /* if pplayer is NULL, attach to first non-connected player slot */
  if (!pplayer) {
    if (game.info.nplayers > game.info.max_players 
        || game.info.nplayers > MAX_NUM_PLAYERS + MAX_NUM_BARBARIANS) {
      return FALSE; 
    } else {
      pplayer = &game.players[game.info.nplayers];
      server_player_init(pplayer, FALSE, TRUE);
      game.info.nplayers++;
    }
  }

  if (!pconn->observer) {
    sz_strlcpy(pplayer->username, pconn->username);
    pplayer->user_turns = 0; /* reset for a new user */
    pplayer->is_connected = TRUE;
  }

  pconn->player = pplayer;
  conn_list_append(pplayer->connections, pconn);

  send_game_info(NULL);
  send_player_info(pplayer, NULL);

  aifill(game.info.aifill);

  return TRUE;
}
  

  pconn remains a member of game.est_connectionsbool unattach_connection_from_player(struct connection *pconn)
{
  if (!pconn->player) {
    return FALSE; /* no player is attached to this conn */
  }

  conn_list_unlink(pconn->player->connections, pconn);

  pconn->player->is_connected = FALSE;
  pconn->observer = FALSE;

  /* If any other (non-observing) conn is attached to 
   * this player, the player is still connected. */
  conn_list_iterate(pconn->player->connections, aconn) {
    if (!aconn->observer) {
      pconn->player->is_connected = TRUE;
      break;
    }
  } conn_list_iterate_end;

  pconn->player = NULL;

  return TRUE;
}
ENDREP
DELTA 12153 733 335
SVN  Æ6È3$‚N ˆ` ‘ Œˆ^ˆ Œ#”Y€z š¡[š »u¡ ‰=¼ystruct base_type;TERRAIN3base(struct tileset *t,
                        const struct base_type *pbase);
void tileset_setup_government(struct tileset *t,
			      struct government *gov);
void tileset_setup_nation_flag(struct tileset *t, 
			       struct nation_type *nation,
				       int happy_cos,
				      const int *upkeep_cosENDREP
DELTA 12750 52 973
SVN  „¾A„Ä‚\‘6 ˆ † ¯‡s€L „	·< ›D»U¦ Š+×?€A ‰?âA€p ƒQìk’ ‚	ðB€( róY€' söX€% ˆ?øV· …'L¡ ‡š 7ˆ5˜ N‰~œ I‹Z ;3’ Žz t3€^ –<‘iœ F¨;˜ –ª˜ ŒÀ.£ ÌV€J Š+Ûr˜ ƒæ,˜ ‡CéN ŒAñ ….ýo‡ ‡8‚ƒ€J A‚Š\˜ ‘k‚˜,€r ‚‚ªY¦ ‚0‚­
˜ °F‚¯I˜ …_‚à€W 2‚æL• ¼a‚çrš ’1ƒ¤i¬ Q‚þ@ †oƒ·i  ƒRƒ¾NŽ …ƒÂ ŒWƒÇ	˜ ™rƒÓo  ƒƒî€t †hƒñv  ¼/ƒù• ƒ„µG¾ …M„¸tmproveterrain_index(pterrain)]
      : -city_name->terrain[terrain_index(pterrain)nation_of_playe
		    nation_plural_for_player(pothernation_count()];
  struct nation_type *nation_list[nation_count()nation_of_player(pplayer);
  nations_selected[nation_index(nation_list[0])] = TRUE;

  while (i < nation_count()_rule_name(nation)ation_index(n)]) {
	  nation_list[queue_size] = n;
	  nations_selected[nation_index(n)] = TRUE;
	  queue_size++;
	  freelog(LOG_DEBUG, "Parent %s.", nation_rule_name(n)ation_index(n)]) {
	  nation_list[queue_size] = n;
	  nations_selected[nation_index(n)] = TRUE;
	  queue_size++;
	  freelog(LOG_DEBUG, "Child %s.", nation_rule_name(n)ation_index(n)]) {
	nation_list[queue_size] = n;
	nations_selected[nation_index(n)] = TRUE;
	queue_size++;
	freelog(LOG_DEBUG, "Misc nation %s.", nation_rule_name(n)type_has_flag(punittype, F_SETTLERS)
      || utype_has
	    unit_rule_name(punit),
	   _translation(punit),
		   rule_name(punit),
	     _translation(punit),
		     rule_name(punit_translation(punitrule_name(punitLOST,
		      _("%s from %s lost in transfer to %s's %s"),
		      unit_name_translation(punit
	      unit_rule_name(vunit_translation(vunit),
			game_find_city_by_number
		    improvement_name_translation);
  vision_reveal_tiles(pcity->server.vision, game.info.city_reveal_tilesgame_find_city_by_numbergame_find_city_by_numberutype_by_numbernation_of_playe, FALSE);
  vision_reveal_tiles(pcity->server.vision, game.info.city_reveal_tilesgame_find_city_by_numbername_translation(punit),
                          pcity->name,
                          terrain_name_translation
		       unit_name_translation(punit)game_find_city_by_numbergame_find_city_by_numberlayer_number(ptile->owner);
  } else {
    packet->owner = player_number(pdcity->owner)walls = pdcity->wallslayer_number(pcity->owner)
  packet->walls = city_got_citywalls(pcity)walls = city_got_citywalls(pcitywalls == wallswalls = wallsgame_find_city_by_numbernation_plural_for_player(pplayerutype_name_translation(utype_by_number(pcity->production.value));
  } else {
    name = improvement_name_translationnation_plural_for_player(pplayerimprovement_by_numberimprovement_name_translation(impr),
                          ENDREP
DELTA 13024 98087 5548
SVN  ‚¯‚®$/ƒN – ˜ å–€‚ :þµ ‡nÿ]„ Y‚‡K€E 4‚Š@µ £‚Œ game_find_city_by_numberType = utype_by_number(pCity->production.value);
      pLogo = ResizeSurface(get_unittype_surface(pUnitType), adj_size(36), adj_size(24), 1);      
      togrow = unit_build_shield_cost(pUnitType);
      pName = utype_name_translation(pUnitType);
    } else {improvement_name_translation(pCity->production.value)TypepUnitType);
    pName = utype_name_translation(pUnitType);
  } else {improvement_name_translation(pCity->production.value)ENDREP
DELTA 13024 104362 31
SVN  ´3´= Ž" ” l‹@‚ @Œ@ ¤YZuclass_index(pclass)?
ENDREP
DELTA 10380 1725 547
SVN  †d‡"j ©K „ ‚v©J¤ …V¬Z˜ ‡F²?— œº“ °/Ö5infoovernment_of_player(game.player_ptr)game_find_unit_by_numbername_translation(punit)overnment_by_numberENDREP
DELTA 13046 60509 289
SVN  ‚¬]‚¬` ì_ € ¾{íbplayers_iterate(pplayer) {
      if (city_list_size(pplayer->cities)) {
	any_cities = TRUE;
	break;
      }
    } players_iterate_end;ENDREP
DELTA 13120 1598 1540
SVN  „	„S1‚` ¼ €p *¼{— å@¾4… „d‚£t€s ‚©9™ W‚ªV€H â&‚¬cterrain_count()];
  int count = 0;

  terrain_type_iterate(pterrain) {
    if ((has_flag[terrain_index(pterrain)terrain_index(pterrain)find_s[terrain_count()];
  int total = 0;

  terrain_type_iterate(pterrain) {
    terrain_counts[terrain_index(pterrain)s[terrain_index(pterrain)s[terrain_index(pterrain)],
	    (terrain_counts[terrain_index(pterrain)ENDREP
DELTA 13038 794585 93
SVN  ÑÑ()H ˜ £ C  ˜_ ‚j¥© 
©
 ª.€B C  ¤T¬;name_translation(player->team);
}

player_index(game.player_ptr)_number(player1) - player_number(player2)player_index(game.player_ptr)player_index(game.player_ptr)];
  }
  
  return love1 - love2;
}

ENDREP
DELTA 1865 11580 193
SVN  ƒ——€—‚~/********************************************************************** 
 Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
***********************************************************************/

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include "citydlg.h"

/**************************************************************************
  Pop up (or bring to the front) a dialog for the given city.  It may or
  may not be modal.
**************************************************************************/
void popup_city_dialog(struct city *pcity)
{
  /* PORTME */
}

/**************************************************************************
  Close the dialog for the given city.
**************************************************************************/
void popdown_city_dialog(struct city *pcity)
{
  /* PORTME */
}

/**************************************************************************
  Close the dialogs for all cities.
**************************************************************************/
void popdown_all_city_dialogs(void)
{
  /* PORTME */
}

/**************************************************************************
  Refresh (update) all data for the given city's dialog.
**************************************************************************/
void refresh_city_dialog(struct city *pcity)
{
  /* PORTME */
}

/**************************************************************************
  Update city dialogs when the given unit's status changes.  This
  typically means updating both the unit's home city (if any) and the
  city in which it is present (if any).
**************************************************************************/
void refresh_unit_city_dialogs(struct unit *punit)
{
  /* PORTME */
#if 0
  /* Demo code */
  struct city *pcity_sup, *pcity_pre;
  struct city_dialog *pdialog;

  pcity_sup = game_find_city_by_number(punit->homecity);
  pcity_pre = tile_get_city(punit->tile);

  if (pcity_sup && (pdialog = get_city_dialog(pcity_sup))) {
    city_dialog_update_supported_units(pdialog);
  }

  if (pcity_pre && (pdialog = get_city_dialog(pcity_pre))) {
    city_dialog_update_present_units(pdialog);
  }
#endif
}

/**************************************************************************
  Return whether the dialog for the given city is open.
**************************************************************************/
bool city_dialog_is_open(struct city *pcity)
{
  /* PORTME */
  return FALSE;ENDREP
DELTA 12945 0 4236
SVN  ƒ”ƒ—P‚X‘ ˜ “ ”K˜„ ­U¬^ˆ {Ú2 ƒ/Ü8˜ „ ßvˆ >ãu€V †wˆ „‡x „	Œˆ \ˆ ƒ'‘hˆ w•Ÿ –3ˆ }—6¿ ‚¨r€T „k«W€< G±~€T ‰h³² }½1„ `¾1ˆ Ža¿– †+Î
– xÔE– ,ÖMº ŒvØ ” åˆ ˆPù¥ Œs‚‚	€ ‚Y‚[€J „%‚“[€J Œv‚˜D‘ †E‚¥F‘ ‚¬ˆ ‚@‚­€a „K‚°0‘ ‚3‚µ‘ ‚/‚·F¢ $‚º€U ‚~‚»|€I †1‚¿9¾ ‚^‚Æ L‚Èz€A ‚Êj€C ^‚Û/ ƒ?‚ù€B •G‚ü}¾ uƒ’h,ƒ“lunit_type(attacker)typehas_typeunit_type(punit)game_find_unit_by_numberhas_typehas_type_flag(punit, F_DIPLOMAT)) pcity->ai.has_diplomat = TRUE;
    if (unit_has_typehas_typeunit_type(punit)has_typehas_typehas_typeclass_has_flag(unit_class(punithas_typetype_has_flag(punittype, F_BADCITYDEFENDER)
      && !utype_hastype_has_flag(punittype, F_PIKEMEN)) {
    desire += desire / 2;
  }
  if (utype_hastype_has_flag(punittype, F_IGTER)) {
    desire += desire / 2;
  }
  if (utype_has_flag(punittype, F_GAMELOSS)) {
    desire /= 10; /* but might actually be worth it */
  }
  if (utype_hastype_has_flag(punittype, F_MARINES)) {
    desire += desire / 4;
  }
  if (utype_hastype_has_role(punittype, L_DEFEND_GOOD)
	&& !utypetypetype_hasutype_index(punittype)utype_index(punittype)utype_index(punittype)
               utype_rule_name(punittype),
              utype_by_numbertype_hasclass_has_flag(utype_class(punittype)
                   utype_rule_name(punittype),
                   (acity ? acity->name : utype_rule_name(victim_unit_type)),
                  type_rule_name(utype_by_number(best_choice->choice)),
		     best_choice->want,
                     utype_rule_name(punittype),
                     want,
                     attack, value, move_time,improvement_rule_name(id),
                     utype_rule_name(punittype)unit_type(myunit)unit_type(myunit)has_typegame_find_unit_by_number(boatid);

      if (ferryboat) {
        boattype = unit_type(ferryboat)unit_type(myunit)unit_type(myunit)unit_type(myunit), unit_type(pdef)unit_type(pdef));
        def_vet = pdef->veteran;
        def_type = unit_type(pdef)unit_type(pdef));
    go_by_boat = FALSE;

    def_type = unit_type(pdef)
	     utype_rule_name(utype_by_number(choice->choice)),
	    utype_by_number
                utype_rule_name(utype_by_number(choice->choice))type_has_flag(utype_by_number(choice->choice), F_NONMIL)
      || do_make_unit_veteran(pcity, utype_by_number(choice->choice))) {
    return;
  }

  move_type = get_unit_move_type(utype_by_numberutype_by_numberutype_rule_name(utype_by_number(choice->choice)),
                utype_rule_name(utype_by_number(choice->choice)),
            improvement_ruleENDREP
DELTA 12750 3745 165
SVN  ðRóLe‡ Ž  <Ž% ‚l€l G s² ‚	¢^˜ 3¤v¬ ¦L€r ¨3  —·n ƒ0Ï¤ ‰oÒHº ‚jÜV tßQ˜ ‰9àT€‚$ „ê?¡ hî`¡ xïZunit_type(punit)unit_type(punit)class_has_flag(unit_class(punit), UCF_MISSILE)) {
    victim_cost -= unit_build_shield_cost(unit_type(punit)unit_type(punit));

  sortie_time = (unit_has_typegame_find_city_by_numberrule_name(pdefender),
	    dst_tile->x,
	   rule_name(punit),
	    punit->tile->x,
	    punit->tile->y,
	    unit_rule_name(pdefender),
	    dst_tile->x,
	   rule_name(punit),
		tile1->x,
		unit_type(punit)
              unit_rule_name(punit)rule_name(punit),
              dst_tile->x,
             rule_name(punit)game_find_unit_by_numberstruct unit_class *pclass = utype_class(punittype);

    if (pclass->ai.land_move == MOVE_NONE
        || pclass->ai.sea_move == MOVE_NONE
        || uclass_has_flag(pclass, UCF_TERRAIN_SPEED)
        || unit_type_is_losing_hp(pplayer, punittype)) {
      /* We don't consider this a plane */
		utype_rule_name(punittype),
		
		utype_rule_name(punittype),
		ENDREP
DELTA 1827 132655 3049
SVN  ¿Ûuf©f …8 €U N…n€… ‚I‹-› \s A ® @@ < A  o‘}€\ 	“Q€‚ B•-€ŒU A  ‚2œ~š 4ŸG€„/ ƒc£#€ A  ¨u ¥{€H I«z€ A – I¤~™  ¥r€w G  T¤~“  ¥r€t A œ I¤~Ÿ  ¥r€O A  Tœ~ ®BŒ g¯]€ƒ1 „)³X‹ y¸	¸ C¸?º C¸?€@ C¸?£ q¹‹ ‚º¤  ¼=€) b¾%
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlibfcintl.h"
#include "game.h"
#include "packets.h"
#include "player.h"
#include "support.h"

#include "chatline.h"
#include "civclient.h"
#include "climisc.h"
#include "clinet.h"
#include "inteldlg.h"
#include "gui_main.h"
#include "spaceshipdlg.h"
#include "plrdlg.h"

/* Amiga Client stuff */
#include "muistuff.h"

static Object *player_wnd;
static Object *player_players_listview;
static Object *player_close_button;
static Object *player_intelligence_button;
static Object *player_meet_button;
static Object *player_war_button;
static Object *player_vision_button;
static Object *player_spaceship_button;
static struct Hook player_players_disphook;

static pa.plrno_from = pa.plrno0;

popup the dialog 10% inside the main-window 
HOOKPROTONH(players_render, void, char **array, APTR msg)
{
  ULONG playerno = (ULONG) msg;
    static char dsbuf[32];
    static char repbuf[32];
    const struct player_diplstate *pds;

    if (game.players[i].nturns_idle > 3)
      my_snprintf(idlebuf, sizeof(idlebuf),
		  PL_("(idle %d turn)", "(idle %d turns)",
		      game.players[i].nturns_idle - 1),
		 z_strlcpy(statebuf, _("done"));
	else
	  sz_strlcpy(statebuf, _("moving"));
      }
      else
	statebuf[0] = '\0';
    }
    else
      sz_strlcpy(statebuf, _("R.I.P"));

    if (game.players[i].ai.control)
      my_snprintf(namebuf, sizeof(namebuf), "*%-15s", game.players[i].name);
    else
      my_snprintf(namebuf, sizeof(namebuf), "%-16s", game.players[i].name);



    /* text for diplstate type and turns -- not applicable if this is me */
    if (i == game.player_idx) {
      sz_strlcpy(dsbuf, "-");
    } else {
      pds = pplayer_get_diplstate(game.player_ptr, player_by_number(i));
      if (pds->type == DS_CEASEFIRE) {
	my_snprintf(dsbuf, sizeof(dsbuf), "%s (%d)",
		    diplstate_text(pds->type), pds->turns_left);
      } else {
	my_snprintf(dsbuf, sizeof(dsbuf), "%s",
		    diplstate_text(pds->type));
      }
    }

    /* text for reputation */
    my_snprintf(repbuf, sizeof(repbuf),
		reputation_text(game.players[i].reputation));

    *array++ = namebuf;
    *array++ = nation_name_translation(game.players[i].nation);
    *array++ = get_embassy_status(game.player_ptr, &game.players[i]);
    *array++ = dsbuf;
    *array++ = get_vision_status(game.player_ptr, &game.players[i]);
    *array++ = repbuf;
    *array++ = statebuf;
    *array++ = (char*)player_addr_hack(&game.players[i]);  /* Fixme */
    *array = idlebuf;
  }
  else
  {
    *array++ = _("Name");
    *array++ = _("Nation");
    *array++ = _("Embassy");
    *array++ = _("Dipl.State");
    *array++ = _("Vision");
    *array++ = _("Reputation");
    *array++ = _("State");
    *array++ = _("Host");
    *array = _("Idle");
  }
}

player_by_number(playerno)switch (pplayer_get_diplstate(game.player_ptr, pplayer)->type) {
      case DS_WAR:
      case DS_NO_CONTACT:
	   set(player_war_button, MUIA_Disabled, TRUE);
           break;

      default:
	   set(player_war_button, MUIA_Disabled, game.player_idx == playerno);
           break;
    }

    set(player_vision_button, MUIA_Disabled,
	!gives_shared_vision(game.player_ptr, pplayer));

    set(player_meet_button, MUIA_Disabled, !can_meet_with_player(pplayer));
    set(player_intelligence_button, MUIA_Disabled,
	!can_intel_with_player(pplayer));
    return;playerno -= 100;

    if (can_intel_with_player(&game.players[playerno])) {
      popup_intel_dialog(&game.players[playerno]);
    }
  }
}

playerno -= 100;

    if (can_meet_with_player(&game.players[playerno])) else {
      append_output_window(_("You need an embassy to establish a "
                             "diplomatic meeting."));
    }
  }
}


 Callback for the war/
static void players_war(playerno)
  {
    struct packet_generic_values packet;

    packet.id = playerno - 100;
    packet.value1 = CLAUSE_CEASEFIRE;
    send_packet_generic_values(&aconnection, PACKET_PLAYER_CANCEL_PACT,
                               &packet);
  }
}

****
 Callback for the visionvoid players_vision(playerno)
  {
    struct packet_generic_values packet;

    packet.id = playerno - 100;
    packet.value1 = CLAUSE_VISION;
    send_packet_generic_values(&aconnection,
                               PACKET_PLAYER_CANCEL_PACT, &packet);
  }
}


 Callback for the spaceship/
static void players_spaceship(playerno)
  {
    popup_spaceship_dialog(&game.players[playerno-100]);
  }
}

_("Players"),,,",
	    End,
	End,
	Child, HGroup,
	    Child, player_close_button = MakeButton(_("_Close")),
	    Child, player_intelligence_button = MakeButton(_("_Intelligence")),
	    Child, player_meet_button = MakeButton(_("_Meet")),
	    Child, player_war_button = MakeButton(_("_Cancel Treaty")),
            Child, player_vision_button = MakeButton(_("_Withdraw vision")),
	    Child, player_spaceship_button = MakeButton(_("_Spaceship")civstandardcivstandard_hook, players_meet);
    DoMethod(player_warcivstandard_hook, players_war);
    DoMethod(player_visioncivstandard_hook, players_vision);
    DoMethod(player_spaceshipcivstandard_hook, players_spaceshipcivstandardf (!player_wnd || is_plrdlg_frozen()players_iterate(pplayer)
  {
    if(is_barbarian(pplayer->cities))
      continue;

    DoMethod(player_players_listview, MUIM_NList_InsertSingle, player_number(pplayer)ENDREP
DELTA 13002 272960 6492
SVN  ¸	º[7‡I † œ ‚S†'° Š‰( ‡c•!‡ Š/
€„N D«~€ ƒ§v ƒ{­(€} …I²@/*
typedef int Tech_type_id;UNKNOWN (A_LAST-3)
#define A_LAST_REAL A_UNKNOWNstruct name_translation name;UNKNOWN/* General advance/technology accessor functions. */
const char *advance_name_by_player(const struct player *pplayer, Tech_type_id tech);
const char *advance_name_for_player(const struct player *pplayer, Tech_type_id tech);
const char *advance_name_researching(const struct player *pplayer);

const char *advance_rule_name(Tech_type_id tech);
const char *advance_name_translation(Tech_type_id tech);

Tech_type_id find_advance_by_rule_name(const char *s);
Tech_type_id find_advance_by_translated_name(const char *s);

/* General advance/technology flag accessor routines */
bool advance_hasfind_advance_flag_by_rule_name(const char *s);
Tech_type_id find_advance_by_flag(int index, enum tech_flag_id flag);

/* Ancillary routines */
void precalc_tech_data(void);

/* Initialization and iteration */
void player_research_init(struct player_research* researchENDREP
DELTA 13114 6191 167
SVN  ƒØ|ƒÙhH‚h “r ˜ ™Y”˜ „­i€T •²E˜ ÏgÇf˜ â—\˜ á#ú ˜ ….‚Û2˜ Í~‚ào˜ „+ƒ®|€T ¥ƒ³igame_find_city_by_numbergame_find_unit_by_numbergame_find_unit_by_number(target_id);
  struct city *pcity = game_find_city_by_numbergame_find_city_by_numbergame_find_unit_by_numbergame_find_unit_by_numbergame_find_city_by_numbergame_find_city_by_numbergame_find_unit_by_numbergame_find_unit_by_number(cargo_id);
  struct unit *ptrans = game_find_unit_by_numberENDREP
DELTA 13046 75202 1960
SVN  ®e®k ‡| — ^¬  ¥zˆkplayer_by_number(playerENDREP
DELTA 12753 152 15913
SVN  …»…¾ƒ{¥a ®y  |¯ˆ u¯€‚ IÁ>€ƒ% ‹Ç? ‚Ò^ ŒJÕh Ÿâ= …w^¡ ;‡l¡ ‹‰> †e”fœ ¿›b„ šÚ~€ƒ ‚[÷' Œeú ‚†}˜ ‰‚–€…e g‚¥Zº N¬  ƒ0‚¨!€5 J‚®<ˆ —q‚°° G‚Ç~¬ Œz‚Èo ‰‚Õtˆ  ‚Þy€E m‚à4€K …(‚á9” ‚9‚æp¦ … ‚é>  …‚îS¡ ‚‚ô q‚ö ‚÷€ p‚ù€T ’
‚ûJ˜ ‚ƒc˜ ‚`ƒ  1ƒ’x€K ‚ƒ”S¾ Š8ƒ—´ „ƒ¡_  xƒ¦€m {ƒ§d‡ ƒ¨`€ ƒ}ƒª~˜ ‹ƒ¯
 ‰^ƒº4˜ „%ƒÄ! ‘6ƒÈE˜ ƒÚ
˜ ‚rƒé6˜ —sƒì7´ ˆ%„„L —Q„Œ|˜ Ž@„¤\˜ †B„³+€ *„ºm· )„¼_ˆ  „Í¹ 3„Î7€V ;„Ñ g„Ògˆ ‰U„ÓM˜ ¤~„Ý1˜ ‚|…‚>‘ ‡B……Q ˆF…#€t m…–L€F ’…˜N€k A…«Nunit_type(punit)has_type  struct unit_class *pclass = unit_class(punit);

  if (!uclass_has_flag(pclass, UCF_TERRAIN_SPEED)) {
    /* Unit does not care about terrain */
    move_time = real_map_distance(punit->tile, ptile) * SINGLE_MOVE / move_rate;
  } else {
    if (unit_has_type_flag(punit, F_IGTER)) {
      * igter_speedup. Note: actually, igter units should never have their 
       * move rates multiplied. The correct behaviour is to have every tile 
       * they cross cost 1/3 of a movement point. ---RK */
      move_rate *= 3;
    }

    if (get_unit_move_type(unit_type(punit)) == SEA_MOVING) {
      move_time = WARMAP_SEACOST(ptile) / move_rate;
    } else {
      move_time = WARMAP_COST(ptile) / move_rate;
    }unit_type(punit)unit_type(punit)unit_type(punit)unit_type(aunit)unit_type(aunit), unit_type(pdef)unit_type(punit), unit_type(pdef)unit_type(punit)
		 unit_rule_name(pdef),
		type
           best * 100 / toughness,
           *acity
           ? (*acity)->name
           : (*aunit
              ? unit_rule_name(*aunit)
              : ""), 
           *acity
           ? (*acity)->tile->x
           : (*aunit
	      ? (*aunit)->tile->x
	      : 0),
           *acity
           ? (*acity)->tile->y
           : (*aunit
              ? (*aunit)->tile->y
              : 0)
           unit_type(punit)unit_type(punit)game_find_city_by_numbertruct unit_class *pclass = utype_class(our_type);

  if (pclass->ai.sea_move == MOVE_NONE && go_by_boat) {
    int boatspeed = boattype->move_rate;
    int move_time = (WARMAP_SEACOST(acity->tile)) / boatspeed;
      
    if (utype_has_flag(boattype, F_TRIREME) && move_time > 2) {
      /* Return something prohibitive */
      return 999;
    }
    if (boat) {
      /* Time to get to the boat */
      move_time += (WARMAP_COST(boat->tile) + speed - 1) / speed;
    }
      
    if (!utype_has_flag(our_type, F_MARINES)) {
      /* Time to get off the boat (Marines do it from the vessel) */
      move_time += 1;
    }
      
    return move_time;
  }

  if (pclass->ai.land_move == MOVE_NONE
      && pclass->ai.sea_move != MOVE_NONE) {}

  return (WARMAP_COST(acity->tile) + speed - 1) / speedstruct unit_class *pclass = utype_class(our_type);
  int dist;

  if (pclass->ai.land_move != MOVE_NONE) {
    dist = WARMAP_COST(ptile);
  } else {
    dist = WARMAP_SEACOST(ptile)type_has  struct unit_class *pclass = unit_class(punit);unit_type(punit)->fuel
      || is_losing_hpunit_type(aunit)has_typeunit_type(punit));
  bcost_bal = build_cost_balanced(unit_type(punit)pclass->ai.sea_move == MOVE_NONE) {
    /* We need boat to move over sea */unit_type(ferryboat)pclass->ai.sea_move == MOVE_NONE
     pclass->ai.sea_move == MOVE_NONEpclass->ai.land_move == MOVE_NONEunit_type(pdef)unit_type(punit) = ai_choose_defender_versus(acity, punit);

        if (def_type) {
          int v = unittype_def_rating_sq(unit_type(punit), def_type,
    do_make_unit_veteran(acity, def_type));
          if (v > vuln) {
            /* They can build a better defender! */ 
            vuln = v; 
            benefit = unit_build_shield_cost(def_type); 
          }game_find_city_by_numbergame_find_city_by_numberpclass->ai.sea_move == MOVE_NONErule_name(ferryboat),
                 ferryboat->tile->x,
                pclass->ai.sea_move == MOVE_NONE
            && !unit_has_typehas_type_flag(aunit, F_HELP_WONDER) || unit_has_typepclass->ai.sea_move != MOVE_FULLMaybe impossible or too far to walk */
        continue;
      }

      if (pclass->ai.land_move != MOVE_FULLMaybe iunit_type(aunit));
 
      move_time = turns_to_enemy_unit(unit_type(punit), move_rate, 
                                      aunit->tile, unit_type(aunit)game_find_city_by_numberunit_type(punit)game_find_unit_by_numbergame_find_unit_by_numbergame_find_unit_by_numbergame_find_unit_by_numberhas_type_flag(punit, F_TRADE_ROUTE) || unit_has_typeunit_type(punit)game_find_unit_by_numbergame_find_unit_by_numberan
  BARBARIAN_MIN_LIFESPAN, they are not in cities, and they are far from
  any enemy units. It is to remove barbarians that do not engage into any
 birth_turn + BARBARIAN_MIN_LIFESPAN > game.info.turn) {class_hahas_type_flag(punit, F_DIPLOMAT))
      || (unit_has_typehas_type_flag(punit, F_SETTLERS)
	     ||unit_has_type_flag(punit, F_CITIES)) {
    ai_manage_settler(pplayer, punit);
    return;
  } else if (unit_has_type_flag(punit, F_TRADE_ROUTE)
             || unit_has_typetype_role(punithas_typegame_find_unit_by_numbergame_find_unit_by_numbertype_role(warriortype_role(aunit(%d,%d) dist %d",
                  unit_rule_name(aunit),
                  aunit->tile->x,
		  aunit->tile->y,
		 
      && leader->birth_turn + BARBARIAN_MIN_LIFESPAN < game.info.turntype_has_flag(punittype, F_NONMIL)
	&& !uclass_has_flag(utype_class(punittype), UCF_MISSILE)
	&& !utype_hasENDREP
DELTA 13000 9922 6805
SVN  Ô(Ôd#S ˜H • •+˜Z¤ ‰=®€P "¸’ ‚C¹L¸ —|¼,player_index(aplayer)
              unit_rule_name(punit)game_find_city_by_number(punit->ai.charge);
  pcharge = game_find_unit_by_numberrule_name(pcharge)
              type,
              unit_rule_name(punit)ENDREP
DELTA 13027 40540 1077
SVN  çSç\
 ón ˜ óVó}game_find_city_by_numberENDREP
DELTA 12753 16093 1966
SVN  ¥p¥y5 ‰+  H‰8 ƒzŠ• —WŽayer_index(plr2)ayer_index(plr2)player_index(aplayer)ENDREP
DELTA 13038 796682 94
SVN  Ý#Ý'
 Ÿi • ½)Ÿzlayer_number(pplayer)ENDREP
DELTA 13046 88301 581
SVN  ñ	ñ`… ®F ¦ G¦8 e°-¦ j¦8 ƒ^³Ž ˆ·€o G«@ ˆÀD¶ íwÉ€G …·N€M KË ƒo½x€P SÆzƒ DÈ  ‚iÃI€A „UÆk€A Œ(Ëy¢ ƒ-Ø?¢ H¹; NÃ  ƒ4Ý Ž ‹'à\€E „HìAplayer_by_number(giver), type, value);player_by_number(giver), type, value);player_by_numbayer_number(plr0) << 24) |
					 (player_number(plr1) << 16) |
					 i));
      flag=1;
    }
  }
  return flagayer_number(plr0) << 24) |
				   (player_number(plr1)layer_number(pdialog->treaty.plr1),
						 player_number(pclause->from)layer_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_MAPlayer_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_SEAMAP...layer_number(pdialog->treaty.plr1),
					   player_number(pgiver)layer_number(pdialog->treaty.plr1),
					   player_number(pgiver)layer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1)player_by_numblayer_number(pdialog->treaty.plr1),
					       player_number(pgiver)ENDREP
DELTA 13095 7263 8547
SVN  †  †  +•3 Ô" … –Ô"Ž •RêF€K —,‚€]š $‚œe• ‚• …i‚›W” ½‚¡Q  ‚à	‹ q‚áz‹ ½p‚ã< @ƒ¨P€q ƒ¶_€ƒz …$ƒ»
˜ Â!ƒÀ=‰ ¡P„‚g€C ‚ „¤s€B Òe„§O€I ÷„úqŽ ]…òx½ "††£ S††: †Š€K ”5†‹K€‹Lfind_player_by_numblayer_index(pplayer))) {
	  BV_SET(ptile->tile_known, player_index(pplayer)layer_number(ptile->owner)owner%03d", y);
    }layer_index(pplayer)if (id < 0) {
    return NULLreturn NULLreturn NULL
                                           "player%d.u%d.type_by_name",
                                        _default(file, -1,
                                         "player%d.u%d.type",
                                         plrno, i);
      type_name = old_unit_type_name(t);
      if (!type_name) {
        freelog(LOG_FATAL, "player%d.u%d.type: unknown (%d)",
                plrno, i, t);
        exit(EXIT_FAILURE);
      }
    }
    
    type = find_unit_type_by_rule_name(type_name);
    if (!type) {
      freelog(LOG_FATAL, "player%d.u%d: unknown unit type \"%s\".",
              plrno, i, type_namegame_find_city_by_numberby_numberlayer_number(pother))) {
	BV_SET(plr->embassy, player_index(pother)layer_index(pother))) {
	BV_SET(plr->embassy, player_index(pother)player_by_number(id);
    } else {
      pcity->original = player_by_numbplayer_by_numb
  secfile_insert_int(file, plr->team ? team_index(plr->team)
  if (plr->target_government) {
  layer_index(pother)),
			"player%d.embassy%d", plrno, player_number(pother)_turn, "player%d.bulbs_last_turn",
                     plrno);

  secfile_insert_int(file, get_player_research(plr)->future_tech,
		     "player%d.futuretech", plrno);

  secfile_insert_int(file, get_player_research(plr)->bulbs_researched, 
		     "player%d.researched", plrno);
  secfile_insert_int(file, get_player_research(plr)->bulbs_researched_before,
		     "player%d.researched_before", plrno);
  secfile_insert_bool(file, get_player_research(plr)->got_tech,
		      "player%d.research_got_tech", plrno);
  save_technology(file, "player%d.research_changed_from", plrno, 
                  get_player_research(plr)->changed_from);
  secfile_insert_int(file, get_player_research(plr)->techs_researched,
		     "player%d.researchpoints", plrno);
  save_technology(file, "player%d.researching", plrno,
                  get_player_research(plr)->researching);  

  secfile_insert_bool(file, plr->capital, "player%d.capital", plrno);

  secfile_insert_int(file, plr->revolution_finishes,
		     "player%d.revolution_finishes", plrno);
  {
    /* Insert the old-style "revolution" value, for forward compatibility.
     * See the loading code for more explanation. */
    int revolution;

    if (plr->revolution_finishes < 0) {
      /* No revolution. */
      revolution = 0;
    } else if (plr->revolution_finishes <= game.info.turn) {
      revolution = 1; /* Approximation. */
    } else {
      revolution = plr->revolution_finishes - game.info.turn;
    }
    secfile_insert_†  ƒßƒÔXPƒ& a‹LŽ Âe™5 ÅZÜ3› ´;¢$• ŠV‚Öp€W ‡w‚â• /‚ê• †‚ë`¥ „‚ñz˜ ç6‚ö€l OƒÝz¡1ƒÞfplayer_by_numblayer_number(pcity->original)layer_number(pdcity->owner)layer_number(pplayer)player_index(aplayer)].type = DS_PEACE;
          aplayer->diplstates[player_index(plr)layer_number(pplayer)layer_index(pplayer2)/* players_iterate() not used here */game_find_unit_by_numberlayer_number(pplayer), file);
    } players_iterate_end;

    /* shuffled_players_iterate() not used here */player_number(shuffled_player(i))ENDREP
DELTA 13038 800670 2285
SVN  ‹G‹9 …  †…1utype_count()ENDREP
DELTA 13046 90272 1581
SVN  ……H „ˆ ˜ ‹„ˆ-˜ †M„“>˜ c„“> ô„š}game_find_city_by_numbergame_find_city_by_numbergame_find_city_by_numberENDREP
DELTA 9577 21411 499
SVN  ÅoÅw* ˜x • •™	• —6®9layer_number(pplayer)layer_number(pplayer)ENDREP
DELTA 13038 805364 14024
SVN  þpÿ	F °z  1°{” cÁ5” …gÂ!ž ¶NÈ"_name_translation(i)_name_translation(i)layer_number(pdialog->pplayer)ENDREP
DELTA 13027 48308 532
SVN  ‚«[‚«y8Œ` W ž k{€P ?Ÿ0¦ z¡“ q¢ž ƒN£-¶ `§+€P `¨Uœ ªR€q ‡f¬D˜ ‰,´9¨ c|€ v¿{œ 1Â€S ÒvÄŽ Žg—° oÈ= @¬2 “e¨fœ ¼a€# R¾wµ ¿r€s §xÂi  PÉš Uß| lì:° lÈ> ©|îG€- ‘‚š>nation_plural_for_player(ownerplayer_index(owner)].type == DS_CEASEFIRE) {
	int turns = ds[player_index(owner)nation_name_for_player(owner),
		     player_index(owner)nation_plural_for_player(owner
		    pcity->name,
		    nation_name_for_player(ownerplayer_index(owner)].type == DS_CEASEFIRE) {
	int turns = ds[player_index(owner)nation_name_for_player(owner
		      pcity->name,
		      nation_name_for_player(owner),
		      diplo_city_adjectives[ds[player_index(owner)game_find_city_by_numbernation_name_for_player(owner),
		    tmpassert(owner != NULL && game.player_ptr != NULL);

      if (ds[player_index(owner)].type == DS_CEASEFIRE) {
	int turns = ds[player_index(owner)nation_name_for_player(ownernation_name_for_player(owner),
		      diplo_city_adjectives[ds[player_index(owner)player_by_numbovernment_name_for_player(game.player_ptr));
  }he title texttype_index(unit_type(punit))utype_index(top[2])] < types_count[utype_index(utype)]) {
	top[2] = utype;

	if (!top[1]
	    || types_count[utype_index(top[1])] < types_count[utype_index(top[2])utype_index(top[0])] < types_count[utype_index(utype)utype_index(top[i])] > 0) {
	if (utype_has_flag(top[i], F_NONMIL)) {
	  nonmil -= types_count[utype_index(top[i])];
	} else {
	  mil -= types_count[utype_index(top[i])];
	}
	astr_add_line(&str, "%d: %s",
		      types_count[utype_index(top[i])overnment_by_number(...)->spriteconst char *get_governmentovernment_name_for_player(game.player_ptr));
  }overnment_name_for_player(game.player_ptr),
		  nation_plural_for_player(game.player_ptr));

    astr_add_line(&str, "%s %s: %s",
		  ruler_title_translation(game.player_ptrENDREP
DELTA 13027 49025 402
SVN  â*â3
 á ˜ á&game_find_city_by_numberENDREP
DELTA 7939 7876 1363
SVN  —x—jR ˆ4  ŠSˆE€R „“ggame_find_city_by_number(punit->homecity);
  pcity_pre = tile_get_city(punit->tileENDREP
DELTA 13024 161350 3433
SVN  ²S²XOw ©# ” ˆ©4ˆ ‡h±=” “-¹6ˆ §sÌkŽ £ôf” …˜” „M8€S S@ 5£%” f¤k‘ U¥m‘ ‹u¦^layer_index(pplayer)class_halayer_index(pplayer)class_haplayer_by_numblayer_index(pplayer)layer_index(pplayer)layer_index(pplayer)];

  return &ai->diplomacy.player_intel[player_index(aplayer)]layer_index(pplayer)overnment_count()overnment_count()ENDREP
DELTA 13046 94252 415
SVN  ƒ­)ƒ¯}‡ Äq €C —}Å"€A ¦HÝN€H ƒA„L€H ƒ?ˆC€G ƒ6Œ7€G „+"€N ƒH•	€Z B• ‚Zš[€O †r€F „
¤E€G …>©˜ Ô`®Q˜ ‘;‚ƒ@˜ ‰‚•
˜ Žuƒž4game_find_unit_by_number(diplomat_id) && 
	game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     (pcity=game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_unit_by_number(diplomat_target_idgame_find_unit_by_number(diplomat_id))
      && (pcity=game_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
    (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     (game_find_city_by_numbergame_find_city_by_numbergame_find_unit_by_numbergame_find_unit_by_numbergame_find_unit_by_numberENDREP
DELTA 13038 821079 1037
SVN  ŠeŠt å ’ „*å½ iéa€I gë# žRìernment_index(gov)nt gi = government_index(gov);
    if (ai->government_want[gii];
      ai->goal.revolution = gov;
    }
    if (ai->government_want[giiENDREP
DELTA 13120 0 60
SVN  ƒÿ?„€i‚ Š ¬v €R I­>€% ‰¯¡ …t¸9¡ ‡G¾F¡ ­Æ&‘ #Ü@ lôrš ƒ>’tž –G  j›~ b˜X  šQ¢ Ô[›~“ GÜ@ F‚‚@ 6ñv” vó=€T RÜ@ …õS” Xó=· Eý? F‚‚@ ƒý€\ X‚€lº Fý> † ‚‚@” ‚ˆq­ ‚µ} [‚‹;“ RÜ@ “‚Œx” 1‚ !” µ ‚¡c• …‚×€ ‚*‚Ý/­ ŠT‚à ” =‚êe R‚ì/­ ¿‚î(˜ Ñ|ƒ­Cfind_terrain_by_identifier(TERRAIN_LAKE_IDENTIFIER);
  struct terrain *sea = find_find_terrain_by_identifier(TERRAIN_COAST_IDENTIFIER);
  struct terrain *shelf = find_terrain_by_identifier(TERRAIN_SHELF_IDENTIFIER);
  struct terrain *floor = find_errain_identifier(tile2->terrain)errain_identifier(tile2->terrain)errain_identifier(tile2->terrain)player_index(themlayer_number(ptile->owner)terrain_number(ptile->terrain)resource_number(ptile->resource)terrain_number(plrtile->terrain)resource_number(plrtile->resource)layer_index(pplayerlayer_index(pplayer)layer_index(pplayer))
	  && BV_ISSET(ptile->tile_seen[vlayer], player_index(pplayer)layer_index(pplayer)map_get_player_tile(ptile, pplayer)->seen_count[vlayer]layer_index(pplayer));
  } else {
    BV_CLR(ptile->tile_seen[vlayer], player_index(pplayer)layer_number(pplayer), change, plrtile->seen_count[vlayer]layer_index(pplayer)layer_index(pplayer));
    }
  } vision_layerlayer_index(pplayerlayer_index(pplayer)layer_index(pplayer)layer_index(pplayer3)layer_index(pplayer)] = pplayer->really_gives_vision;
  } players_iterate_end;

  pfrom->gives_shared_vision |= 1<<player_index(pto)layer_index(pplayer)], player_index(pplayer2)layer_index(pplayer)layer_index(pto)layer_index(pplayer)], player_index(pplayer2)game_find_city_by_numberENDREP
DELTA 13007 69428 1955
SVN  ãã\ˆ{ ¢k Ž ƒk¢sŽ a¢s‚ D ­ @è@ ƒ¨zŽ ¬ž ‘­0µ ‹¾^µ •Ê€L †ißl¢ aæ~€V   „qéH Žrî\ ‚Fýq– G”y ü€L ƒ  Kýq {“r– ”y¥ ¢@—7€A ƒRº0€A ƒ¾;€] /º<ˆ ]Åo‰ ,º? †<Åk€Y .º=‡ i»q #Ï€A ‡1ÐrŽ †OØ+€C ƒRß6player_by_numbplayer_by_numb
}popup the dialog 10% inside the main-window 
player_by_numbplayer_number(game.player_ptr)ayer_number(plr0) << 24) |
					 (player_number(plr1)ayer_number(plr0) << 24) |
					 (player_number(plr1)layer_number(pdialog->treaty.plr1),
					       player_number(pclause->from)layer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1));
    diplomacy_destroy(pdialog);
    break; 
  }
}nation_plural_for_player(plr1nation_plural_for_player(plr0nation_of_player(plr0) weight=\"bold\">%s %s</span>",
	      ruler_title_translation(plr0),
	     nation_plural_for_player(plr1nation_of_player(plr1)ruler_title_translation(plr1),
	     layer_number(pdialog->treaty.plr1),
					   player_number(pgiver)layer_number(pdialog->treaty.plr1),
					   player_number(pgiver)layer_number(pdialog->treaty.plr1),
					   player_number(pdialog->treaty.plr0),
					   typeceasefirCEASEFIRElayer_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_VISION,
					  embassylayer_number(pdialog->treaty.plr1),
					   player_number(pgiver)player_by_numblayer_number(pdialog->treaty.plr1),
					     player_number(pgiver)ENDREP
DELTA 13125 0 1707
SVN  …Ø…ØA!` è$ ˜ ƒ—Yè3˜ šK„€˜ ™"„šu˜ £w„´&game_find_city_by_numbergame_find_city_by_numbergame_find_unit_by_numbergame_find_city_by_numberENDREP
DELTA 11378 13235 1893
SVN  ½g¾$_ ‡_ ‘ ¬‡Z  ³q€ B¶´ G  J  „f¹#include "unitlisplayers_iterate(pplayer) {
    if (!all_cities && player_number(pplayer) != game.info.player_idx) {
      continue;
    }

    city_list_iterate(pplayer-> city_list_iterate_end;
  } players_iterate_end;
}

ENDREP
DELTA 13046 96498 1531
SVN  —j—~$ Ã< ˜ V´  ÅBÄ Œ a…v %ŠEuclass_index(punitclass)uclass_indexENDREP
DELTA 7939 37550 15523
SVN  ƒ€ƒ„q†àU †B €‚ ‡Q˜ vˆe€^ ‚i‹p€c G:š L€b †2’C€$ N™>€Z Lé €l R‚ï  ˆC~ kŒx ‰+§3€R ƒ6± … f´<… lµ( ‚¶ ˆ F¸B‡ ºž „O»3 „#Å&š O™@€; Oè ‚4š_€' R‚ï  7|€I 1’8 †KÊ€j OÑ=€K ‡	ÒC ‡Ùa¤ hÉ- ƒ=ú€v R‚ï  m€)€x R‚ï €j Sé ¥ R‚ï  ‚ˆ€ƒf R‚ñ  „G‹5 “b’ dŒx³ Sé  ƒšR€C o¥$¨ 4‚º<€$ o¥$« 4‚º< ^¤%€C ƒ0¥$€ƒD (™>€V e­7€- Né €5 ƒ-°€ ƒ´€…; cÀ.€‚ 7¿_€‚ 7Ã2ƒ _Äj€L "‚ï  %È3Ž SÉd€! 4ÌD Í€~ ƒÞ|š ‚Uáu€r R‚ï €E Né  „:æ€W Né  „$ë‚ ŒOï4 :üCœ $ýu¹ Né  jÿi€E O‚€L ƒa‚i€} ƒ‚• „r‚˜]„ P‚N¨ ‚m‚ŸL„ {‚¢8‘ n‚¤B„ 7‚¢8 ‚§fŽ Zâ@€ ‚ª+€y g‚­)€ƒ  J‚±=‡ =‚²# ‚‚³`€A '‚ï €O "‚ï €ƒ N‚¿=€c "‚ï  ‚~‚Â€| ‚J‚Æ~ª †f‚Éoª ‚Q‚Ðn™ ‚‚Ó^ˆ i‚Õh„ n‚Ö\€_ #‚Ù„ ™M‚ÚE› R‚ñ  Pê@€Y N™>¿ Lé €s O‚ï ± Lé €* O‚ï ½ Q” ¼ O‚ï €p Mè€. aŒ{² Sé €Jmovement.h"
#include "registry.h"
#include "support.h"
#include "unitlist.h"

#include "civclient.h"
#include "climap.h"
#include "climisc.h"
#include "colors.h"
#include "combat.h"
#include "control.h"
#include "mapctrl_common.h"
#include "overview_common.h"
#include "textcanvas.h"
#include "gui_ct_point overview_pos;
static struct ct_point detaildisplay_pos;
static struct te_screen *screen;
static struct sw_widget *mapview_window = NULL;
static struct sw_widget *overview_window = NULL;
static struct widget_list *2_ITEMS	20
#define MAX_ACTION_DEFS		60
#define MAX_CITY_DESCR_STYLES	MAX_CITY_SIZE

enum tile_list22_item {
  enum tile_list22 {
  int items;
  int selected;
  struct tile_list2_item item[MAX_TILE_LIST2_ITEMS];
} tile_list2} style[MAX_CITY_DESCR_STYLES];
} city_descr_styles;

struct ct_string *text_templates[FONT_COUNT];

static bool all_dirty = FALSE;

struct region_list *region_list**
  Return the dimensions of the area (container widget; maximum size) for
  the overview**/
void get_overview_area_dimensions(int *width, int *height)
{
 /* Hack */
  *width = 120;
  *height = 80;_list *punitliststruct sprite *bulb, struct sprite *sol,
			 struct sprite *flake, struct sprite *DEBUGDEBUGmap_pos_to_tile(xtile, ytile)overviewFALSE, overview_pos.x, overview_pos.y Disabled for now */
#if 0Find the appropriate city description theme style.  This depends on 
  the size of the city, and enables us to have different visual styles
  for city descriptions depending on their sizefreelog(LOG_ERROR, "No matching city description style found for %s "
          "which is of size %d", pcity->name, pcity->size);
  return &city_descr_styles.style[0];widget_list_iterate(city_descr_windows, widget) {
    widget_list_unlink(tileset_tile_width(tileset) / 2, all_rect.width,
          canvas_y, canvas_y+tileset_tile_height(tileset)tileset_tile_width(tileset) / 2;
  canvas_y += tileset_tile_height(tileset)prepend(city_descr_windows, window); "flush_mapcanvas=%s", ct_rect_to_string(&rect));
  be_copy_osda_to_osda(sw_window_get_canvas_background(mapview_window),
		       mapview.store->osda, &size, &pos, &pos);
  sw_window_canvas_background_region_needs_repaint(mapview_window, &rect);if (!all_dirty) {
    struct ct_rect *rect = fc_malloc(sizeof(*rect));
  
    *rect = (struct ct_rect){ canvas_x, canvas_y, pixel_width, pixel_height };
  
    //freelog(LOG_NORMAL, "dirty_rect(...)");
    region_list_append(region_list, rect);
  }Mark the entire screen area as "dirty" so that we can flush it later.
  It is called by client common codedirty_all(void)
{
  all_dirty = TRUE;if (all_dirty) {
    region_list_iterate(region_list, region) {
      free(region);
    } region_list_iterate_end;
    region_list_unlink_all(region_list);
    
    flush_mapcanvas(0, 0, mapview.width, mapview.height);
    all_dirty = FALSE;
  } else {
    region_list_iterate(region_list, region) {
      flush_mapcanvas(region->x, region->y, region->width, region->height);
      free(region);
    } region_list_iterate_end;
    region_list_unlink_all(region_list);
  }
  sw_paint_allstruct tile *ptileThis function is called when the tileset is changedtileset_full_tile_width(tileset), tileset_full_tile_height(tileset)unit(punit, store, 0, 0);

  free(store)static struct osda *terrain_to_osda(struct tile *ptile)
{
  struct osda *result = be_create_osda(tileset_full_tile_width(tileset), tileset_full_tile_height(tileset)terrain(ptile, store, 0, 0);

  free(store)tileset_full_tile_width(tileset), tileset_full_tile_height(tileset)tileset_full_tile_width(tileset), tileset_full_tile_height(tileset));
  struct ct_rect spec={0,0,tileset_full_tile_width(tileset), tileset_full_tile_height(tileset)};
  struct ct_size size={tileset_full_tile_width(tileset), tileset_full_tile_height(tileset)};

  be_copy_osda_to_osda(result, osda, &size, NULL, NULL);

  be_draw_rectangle(result, &spec, 1, be_get_color(255, 0, 0, 255));
  return result;
}

static void tile_list2_select(int new_index)void tile_list2_select_callback(struct sw_widget *widget, void *data)
{
    tile_list2Show the detaildisplay information - the information displayed when
  you click on a tile, city or unit.

  FIXME: The number '35' below should be calculated from tile widthstatic void tile_list2_select(int new_index)
{
  int i;
  tile_list2.selected = new_index;

  for (i = 0; i < tile_list2.items; i++) {
    struct tile_list2_item *item = &tile_list2detaildisplay_pos.x + i * 35,
                           detaildisplay_pos.y);
    sw_button_set_callback(item->button,
			   tile_list22(void)
{
  int i;
  struct tile *ptile;

  set_unit_focus(NULL);

  ptile = get_focus_tile();
  unit_list_iterate(ptile->units, aunit) {
    if (game.info.player_idx == player_number(aunit->owner)) {
      set_unit_focus(aunit);
      break;
    }
  } unit_list_iterate_end;

  for (i = 0; i < tile_list2.items; i++) {
    sw_widget_destroy(tile_list2.item[i].button);
    be_free_osda(tile_list2.item[i].selected);
    be_free_osda(tile_list2.item[i].unselected);
  }

  tile_list2.items = 0;
  tile_list2.selected = -1;

  {
    struct tile_list2_item *item = &tile_list2.item[tile_list2.items];

    tile_list2.items++;

    item->type = TLI_TERRAIN;
    item->unselected = terrain_to_osda(ptiletooltip=mystrdup(mapview_get_terrain_tooltip_text(ptile));
    item->info_text=mystrdup(popup_info_text(ptile));
  }

  if (tile_get_city(ptile)) {
    struct city *pcity=tile_get_city(ptile);
    struct tile_list2_item *item = &tile_list2.item[tile_list2.items];

    tile_list2 = pcity;
    item->tooltip = mystrdup(mapview_get_city_tooltip_text(pcity));
    item->info_text = mystrdup(mapview_get_city_info_text(pcity));
  }

  unit_list_iterate(ptile->units, punit) {
    struct tile_list2_item *item = &tile_list2.item[tile_list2.items];

    tile_list2 =  = mystrdup(mapview_get_unit_info_text(punit));
  } unit_list_iterate_end;

  if (tile_list2.items > 1) {
    /* Take the city or unit */
    tile_list2_select(1);
  } else {
    tile_list2_select(0);
  }struct tile *pptile = canvas_pos_to_tile(pos->x, pos->y);
  if (!ptile) {
    return;
  }

  if (button == BE_MB_LEFT) {
    set_focus_tile(ptile);
    update_focus_tile_list2tileset_tile_width(tileset);
  int factory =
      drag_granularity == 0 ? 1 : drag_granularity * tileset_tile_height(tileset)redraw_selection_rectangle_button_callback(): action '%s' requested", action);  
  
  if (strcmp(action, "unit_fortifying") == 0) {
    key_unit_fortify();
  } else if (strcmp(action, "unit_add_to_city") == 0) {
    key_unit_build_city();
  } else if (strcmp(action, "unit_build_city") == 0) {
    key_unit_build_city();
  } else if (strcmp(action, "unit_auto_explore") == 0) {
    key_unit_auto_explore();
  } else if (strcmp(action, "unit_irrigate") == 0) {
    key_unit_irrigate();
  } else if (strcmp(action, "unit_sentry") == 0) {
    key_unit_sentry();
  } else if (strcmp(action, "unit_return_nearest") == 0) {
/*    key_? */
  } else if (strcmp(action, "unit_disband") == 0) {
    key_unit_disband();
  } else if (strcmp(action, "unit_mine") == 0) {
    key_unit_mine();
  } else if (strcmp(action, "unit_road") == 0) {
    key_unit_road();
  } else if (strcmp(action, "unit_auto_settler") == 0) {
    key_unit_auto_settle();
  } else if (strcmp(action, "unit_connect") == 0) {
/*    key_unit_connect(enum unit_activity activity);*/
  } else if (strcmp(action, "unit_auto_attack") == 0) {
/*    key_? */    
  } else if (strcmp(action, "unit_homecity") == 0) {
    key_unit_homecity();
  } else if (strcmp(action, "unit_fortress") == 0) {
    key_unit_fortress();
  } else if (strcmp(action, "unit_pillage") == 0) {
    key_unit_pillage();
  } else if (strcmp(action, "unit_airbase") == 0) {
    key_unit_airbase();
  } else if (strcmp(action, "unit_transform") == 0) {
    key_unit_transform();
  } else if (strcmp(action, "unit_unload") == 0) {
    key_unit_unload_all();
  } else if (strcmp(action, "unit_goto") == 0) {
    key_unit_goto();
  } else if (strcmp(action, "unit_goto_city") == 0) {
/*    key_? */
  } else if (strcmp(action, "unit_airlift") == 0) {
/*    key_? */
  } else if (strcmp(action, "unit_patrol") == 0) {
    key_unit_patrol();
  } else if (strcmp(action, "unit_wait") == 0) {
    key_unit_wait();
  } else if (strcmp(action, "unit_railroad") == 0) {
/*    key_? */
  } else if (strcmp(action, "unit_done") == 0) {
    key_unit_done();
  } else {
    freelog(LOG_NORMAL,
      "action_button_callback(): action request '%s' not handled", action);    
  }glibc's scanf is localised. As such it will parse "1.345" as 1345 
  with the german locale and not as 1.345.  The theme files should be
  locale independent, and therefore since function is neededHandle keypresses.  This is where we carry out mapview scrolling with
  arrow keys etc.my  redraw_selection_rectangleRead theme files and store their results for quick lookup/* Overview position */
  overview_pos = te_read_point(file, "overview", "position");

  /* Unit, city and tile view position */
  detaildisplay_pos = te_read_point(file, "detaildisplay", "position
      /* HACK */
      if (i == 0) {
	text_templates[FONT_CITY_NAME] = name;
	text_templates[FONT_CITY_PROD] = prod;
      }infonation_plural_for_player(game.player_ptrinfo2.item[tile_list2infoInitialize mappopup_mapcanvas(void)
{
  struct te_screen_env env;
  struct ct_rect rect;
  struct ct_size screen_size;

  region_list = region_list_new();
  city_descr_windows = widget_list_new();

  screen = te_get_screen(root_window, "mapview", &env, SCREEN_DEPTH);

  mapviewFALSE, CANVAS_DEPTH);
  sw_widget_set_position(mapview_window, 0,0);

  sw_window_set_canvas_background(mapview_window, TRUE);
  sw_window_set_mouse_press_notify(mapview_window,
				   canvas_mouse_press_callback, NULL);
  sw_window_set_draggable(mapview_window,FALSE);
  sw_window_set_user_drag(mapview_window, my_drag_start, my_drag_move,
			  NULL);

  sw_widget_get_bounds(mapviewwindow)2region_list_iterate(region_list, region) {
    free(region);
  } region_list_iterate_end;
  region_list_unlink_all(region_list);
  region_list_free(region_list);
  
  te_destroy_screen(screen);draw_selection_rectangle(int canvas_x, int canvas_y, int w, int h)
{
  /* ?? */static void unshow_actions(void)
{
  struct ct_rect rect;
  int i;

  for (i = 0; i < actions_shown.actions; i++) {
    sw_widget_get_bounds(actions_shown.action[i].widget, &rect);    
    be_draw_region(sw_widget_get_osda(screen->window), &rect,
                                       be_get_color(0, 0, 0, MIN_OPACITY));
    sw_window_remove(actions_shown.action[i].widget);
    actions_shown.action[i].widget =  = NULL;
    free(actions_shown.action[i].tooltip);
    actions_shown.action[i].tooltip = NULL;
  } = mystrdup(x);\
  actions_shown.action[actions_shown.actions].enabled = TRUE;\
  actions_shown.actions++;

#define ADD_DIS(x) \
  actions_shown.action[actions_shown.actions].name = mystrdup(x);\
  actions_shown.action[actions_shown.actions].enabled = 2_item *item = &tile_list2.item[tile_list2settlers(punit)) {
      if (unit_has_typetile_get_city(punit->tileoccupanctilehas_type_flag(punit, F_UNDISBANDABLE)) {
      ADD("unit_disband");
    }
    if (unit_has_typetile/* TESTME */
  sw_paint_all
void update_map_canvas_scrollbars_size(void)
{
  /* Nothing */
}

struct tile *focus_tile**
  Set the position of the focus tile, and update the mapview**/
void set_focus_tile(struct tile *ptile)
{
  struct tile *old = focus_tile;

  assert(ptile != NULL);
  focus_tile = ptile;

  if (old) {
      refresh_tile_mapcanvas(old, FALSE, TRUE);
  }
  refresh_tile_mapcanvas(focus_tile, FALSE, TRUE);**
  Clear the focus tile, and update the mapview**/
void clear_focus_tile(void)
{
  struct tile *old = focus_tile;

  focus_tile = NULL;

  if (map_exists() && old) {
      refresh_tile_mapcanvas(old, FALSE, TRUE);
  }**
  Find the focus tile.  Returns FALSE if there is no focus**/
struct tile *get_focus_tile(void)
{
  return focus_tile;**
  Called by the tileset code to set the font size that should be used to
  draw the city names and production**/
void set_city_names_font_sizes(int my_city_names_font_size,
			       int my_city_productions_font_size)
{
  freelog(LOG_ERROR, "Ignore set_city_names_font_sizes call.");This function will change the current mouse cursorupdate_mouse_cursor(enum cursor_type new_cursor_type)
{
  /* PORT ME */
}
ENDREP
DELTA 13120 3166 346
SVN  ƒëGƒìX… µ  ‡µ ­¼6€_ ‘Vê€‚ œ
ýt• ¬KšŽ Ž‚ÆbŽ  ‚ÕŽ ˆ"‚ä)Ž çI‚ìS¯ †ƒÔC€` YƒÛ/’ 0ƒÜname_translationname_translationayer_index(plr2)];
      struct player_diplstate *state2 = &plr2->diplstates[player_index(plr1)ayer_index(plr1)].has_reason_to_cancel = TRUE;
              plr3->diplstates[player_index(plr2)].has_reason_to_cancel = TRUE;
              handle_diplomacy_cancel_pact(plr3, player_number(plr1), CLAUSE_ALLIANCE);
              handle_diplomacy_cancel_pact(plr3, player_number(plr2)layer_number(pplayer)player_by_numbplayer_by_numbplayer_by_numbplayer_by_numbplayer_number(eplayer) < player_number(pplayer)layer_number(pplayer) != player_number(pdest)) {
        pplayer->diplstates[player_index(pdest)layer_index(pdest)ENDREP
DELTA 13038 1268577 6058
SVN  ««  ˜ l#game_find_unit_by_numberENDREP
DELTA 12934 137 26208
SVN  ‚³m‚´j •w ˜ ´%–˜ ò/Ê:º ö\½game_find_unit_by_numbergame_find_unit_by_numberhas_type_flag(punit, F_TRADE_ROUTE)
	     || unit_has_typeENDREP
DELTA 13068 9602 517
SVN  …Ú{…Ü-‚cŠ ”X Ž ‘c”`Ž ”¦K˜ „Aºs˜ ‹¿C€\ Ë€R 6ècŽ -ê! ‡ëPŽ ª>òs ‚W;²  `  KŸ8 ŠH¢<€R 6ècŽ ê! \°Ž Æ"±w˜ ž6ø(˜ 4‚–m˜ •r‚˜0˜ ‡d‚®1˜ ‹s‚¶$˜ „‚Â&˜ “<‚ÆJŽ ŽE‚Ú’ V¨} ‡‚é/‰ ƒ;‚ðD€K ƒS‚ôD€r ‡‚ù“ §|ƒ€%Ž ÆPƒ¨)ž ƒCƒï  ‚VƒògŽ £jƒõEŽ …h„™L ¦R„ŸO‘ w„Æ=° „W„Çbƒ Pƒ³? W…Æ@ „Íe‘ c„Ð}€Z ¬I„ÐKž U¨~ ]…¸@ r„þWŽ Œ\„ÿb Pƒ³? W…Æ@ ’9…i˜ ƒ… 1˜ ‹:…£M˜ «e…¯player_by_numbplayer_by_numbgame_find_city_by_numbergame_find_unit_by_numbergame_find_unit_by_number(attacker_unit_id);
  struct unit *punit1 = game_find_unit_by_numbergame_find_city_by_number(packet->id);

  if (pcity && (player_number(pcity->owner)player_by_numbplayer_by_numbplayers_iterate(pp) {
      unit_list_iterate(pp-> players_iterate_end;
  } else {game_find_city_by_number(packet->id);

  if (pcity && (player_number(pcity->owner)player_by_numbplayer_by_numbgame_find_unit_by_numbergame_find_city_by_numbergame_find_city_by_numbergame_find_city_by_numbergame_find_city_by_numbergame_find_unit_by_numbergame_find_city_by_numberplayer_by_numb_number(governmentby_numberlayer_index(pother)]) {
      BV_SET(pplayer->embassy, player_index(pother)player_index(game.player_ptr)].type
      != DS_ARMISTICE
      && pinfo->diplstates[player_index(game.player_ptr)improvement_count()player_by_numbterrain_number(ptile->terrain)resource_number(ptile->resource)player_by_numbuclass_count()utype_count()overnment_count()government_by_number(p->id);

  gov->item_numbergovovernment_count()government %d.",
            p->gov);
    return;
  }
  gov = government_by_number(p->gov)nation_group_index(group) == ination_count()lgame_find_unit_by_numbergame_find_city_by_numbergame_find_city_by_numberENDREP
DELTA 13046 123 467
SVN  ÆsÇ[†% ›y ¢ ˜rœª ‡kµ+¾ ƒf½L€A ƒÁk€A ŠhÅ4€P #Ázˆ OÃ2 rÏ*€M *Áz ‚Õ?¢ ƒy×k€J ­  ÝA€a ­  ‚,àM€L ‚xã=£ ­   tçkŽ £<ˆgŽ .¬+Ž †S¼aŽ ƒ7Ã<layer_number(pdialog->treaty.plr1)ayer_number(plr0)*32 + player_number(plr1)layer_number(pdialog->treaty.plr1),
					player_number(pgiver)layer_number(pdialog->treaty.plr1),
					   player_number(pgiver)layer_number(pdialog->treaty.plr1),
					   player_number(pgiver)layer_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_SEAMAPgive_maplayer_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_MAPlayer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1),
					   plrno0, CLAUSE_ADVANCE, value)layer_number(pdialog->treaty.plr1),
					   player_number(pdialog->treaty.plr0),
					   type, 0)layer_number(pdialog->treaty.plr1),
					       player_number(pclause->from)layer_number(pdialog->treaty.plr1))player_by_numbplayer_by_numbplayer_by_numbplayer_by_numbENDREP
DELTA 12331 83 192
SVN  ­H­b#s ¦  ¦€ ‚¨3´ G ‰ H¤@ «v˜/­players_iterate(pplayer) {
    if (!show_all_cities && player_number(pplayer) != game.info.player_idx) {
      continue;
    }
    city_list_iterate(pplayer-> city_list_iterate_end;
  } players_iterate_end;
}

****
...
game_find_city_by_numberENDREP
DELTA 13027 199 6243
SVN  ƒõgƒõy0 ‚°; ˜ °!‚°J˜ ”m‚àzgame_find_city_by_numbergame_find_city_by_numberENDREP
DELTA 10865 895 2455
SVN  ‚€&‚–>‚b±O ˆK €  K‰5‡ „XŠ€s Tà: b~€„E ‚–]€ƒ< ƒ›H¿ †nŸ!€ƒ< m¨g „Hªa– ‚b¯)€\ ƒ?²aŽ /¶ Ž „·O€‚4 ¾™ x¿!™ 
À/™ yÁO™ ƒ,Â^™ Æ ™ —%Ç=€p …ß:€	 å(“ Xæ,“ –Iè „þZ˜ R‚t– ƒuƒZ€ ƒs „w‰f cŽx¥ Š;€m „œ)€| N  ‚A¡€ †3¤9¶ N  «8© ƒ¬M¶ N € „±m¶ N  ·8¨ p¸L€~ ‚sÉ^€} …DÌs€‚	 /Ò:Ÿ ¡Ót€…B …û LÈ@€A L €t Pà=€‚B @…@€„vfcintl.h"
#include "log.h"
#include "support.h"

#include "city.h"
#include "diptreaty.h"
#include "game.h"
#include "governmentunitlisplayer_by_number(plrno));
  game_renumber_players(plrno);
  update_conn_list_dialog();
  races_toggles_set_sensitivold_unit = *punit;
  int old = get_num_units_in_focus();
  bool update;

  freelog(LOG_DEBUG, "removing unit %d, %s %s (%d %d) hcity %d",
	  punit->id,
	  nation_rule_name(nation_of_unit(punit)),
	  unit_rule_name(punit),
	  TILE_XY(punit->tile), hc);

  update = (get_focus_unit_on_tile(punit->tile) != NULL);
  control_unit_killed(punit);
  game_remove_unit(punit);
  punit = NULL;
  if (old > 0 && get_num_units_in_focus() == 0) {
    advance_unit_focus();
  } else if (update) {
    update_unit_pix_label(get_units_in_focus());
    update_unit_info_label(get_units_in_focus());
	    pcity->name,
	    nation_rule_name(nation_of_city(pcity)),
	    TILE_XY(pcity->tile));
  }

  /* FIXME: this can cause two refreshes to be done? */
  if (game.player_ptr) {
    pcity = player_find_city_by_id(game.player_ptr, hc);
    if (pcity) {
      refresh_city_dialog(pcity);
      freelog(LOG_DEBUG, "home city %s, %s, (%d %d)",
	      pcity->name,
	      nation_rule_name(nation_of_city(pcity)),
	      TILE_XY(pcity->tile));
    }
	  pcity->name,
	  nation_rule_name(nation_of_city(pcity)),
	 int last_request_id = 0;

  if (!can_client_issue_orders()) {
    return;
  }

  create_event(NULL, E_CITY_PRODUCTION_CHANGED,
	       _("Changing production of every %s into %s."),
	       from.is_unit
	       ? utype_name_translation(utype_by_number(from.value))
	       : improvement_name_translation(from.value),
	       to.is_unit
	       ? utype_name_translation(utype_by_number(to.value))
	       : improvement_name_translation(to.value)utype_by_number!me || !them
      || player_index(them)].contact_turns_left > 0
             || them->diplstates[player_index(me)me && them && me && them && nation_plural_translation(pclause->from->nation),
		advance_name_for_player(game.player_ptr, pclause->value));
    break;
  case CLAUSE_CITY:
    pcity = game_find_city_by_number(pclause->value);
    if (pcity) {
      my_snprintf(buf, bufsiz, _("The %s give %s"),
                  nation_plural_translationnation_plural_translationnation_plural_translationnation_plural_translationnation_plural_translationnation_plural_translationnation_plural_translationplayer_ptr
      && government_count() > 0) {
    struct government *gov = government_of_player(game.player_ptr)get_num_units_in_focus() > 0) {
    center_tile_mapcanvas(unit_list_get(get_units_in_focus(), 0)->tile);
  } else if (game.player_ptr && game.player_ptr && game.player_ptr && utype_by_numbertvtype = utype_by_numberunit_type(punit) == tvtvtype = utype_by_number(target.value);

    unit_list_iterate(pcity->tile->units, punit) {
      if (unit_type(punit) == tvtype)
	return TRUE;
    }
   type_has_flag(utype_by_numberimprovement_has_flag(target.value, IFutype_values_translation(utype_by_number(target.value));
      cost = unit_build_shield_cost(utype_by_number(target.value));
    } else {
      name = get_impr_name_ex(pcity, target.value);
      if (improvement_has_flag(target.value, IF  Return possible production targets for the current player's cities.

  FIXME: this should probably take a pplayer argumentutype_count() + B_LAST
	      : game.control.num_impr_types);
  cid cid;
  int items_used = 0;

  if (!game.player_ptr) {
    return 0;
  }
  FIXME: this should probably take a pplayer argumentif (!game.player_ptr) {
    return 0;
  }
  FIXME: this should probably take a pplayer argumentint collect_buildable_targets(struct city_production *targets)
{
  int cids_used = 0;

  if (!game.player_ptr) {
    return 0;
  }
  FIXME: this should probably take a pplayer argumentf (!game.player_ptr) {
    return 0;
  }can_player_see_city_internals(game.player_ptr, pcity)) {
    /* Other players don't see inside the city (but observers do). */can_player_see_units_in_city(game.player_ptr, pcity)) {
    /* Other players don't see inside the city (but observers do). */
      || get_client_state() != CLIENT_GAME_RUNNING_STATE) {
    /* When the game isn't running, the messages dialog isn't present and
     * we want to send all messages to the chatline.  There shouldn't be
     * any problem with server spam in pregame anyway. */
      && (!game.player_ptr || !pcity->production.is_unit
      && improvement_has_flag(pcity->production.value, IF_GOLD)) {
    create_event(pcity->tile, E_BAD_COMMAND,
		_("You don't buy %s in %s!"),
		improvement_name_translation(pcity->production.value),
		pcity->name);
    return;
  }

  if (pcity->owner->economic.gold >= value) {
    city_buy_production(pcity);
  } else {
    const char *name;

    if (pcity->production.is_unit) {
      name = utype_name_translation(utype_by_number(pcity->production.value));
    } else {
      name = get_impr_name_ex(pcity, pcity->production.value);
    }

    create_event(NULL, E_BAD_COMMAND,
		 _("%s costs %d gold and you only have %d gold."),
		 name, value, pcity->owner->economic.gold**
  Returns TRUE if any of the units can do the connect activity**/
bool can_units_do_connect(struct unit_list *punits,
			  enum unit_activity activity)
{
  unit_list_iterate(punits, punit) {
    if (can_unit_do_connect(punit, activity)) {
      return TRUE;
    }
  } unit_list_iterate_end;

  return FALSE**
  Determines which color type should be used for unit background.
  This is only guesswork based on unit properties. One should not
  take UNIT_BG_FLYING seriously meaning that unit can fly - custom
  ruleset might have units with similar properties but explains these
  properties by some other means than by flying. 
************/
enum unit_bg_color_type unit_color_type(const struct unit_type *punittype)
{
  struct unit_class *pclass = utype_class(punittype);

  if (pclass->hp_loss_pct > 0) {
    return UNIT_BG_HP_LOSS;
  }

  if (pclass->move_type == LAND_MOVING) {
    return UNIT_BG_LAND;
  }
  if (pclass->move_type == SEA_MOVING) {
    return UNIT_BG_SEA;
  }

  assert(pclass->move_type == HELI_MOVING
         || pclass->move_type == AIR_MOVING);

  if (uclass_has_flag(pclass, UCF_TERRAIN_SPEED)) {
    /* Unit moves on both sea and land by speed determined by terrain */
    return UNIT_BG_AMPHIBIOUS;
  }

  return UNIT_BG_FLYING;
}
ENDREP
DELTA 10411 20424 215
SVN    R Šx  ‹¼ Œ\– ’oplayers_iterate(pplayer)
  {
    city_list_iterate(pplayer->  players_iterate_end;ENDREP
DELTA 13038 1286702 2351
SVN  ÙVÚS‚$ £/ Ž ‚#£7Ž Œ}¥bŽ å]²gŽ ‘=˜L€] …<ªn¼ B°_• š7²2Ž zÑs „ ÍkŽ „Ñs¢ § ‚×Kplayer_by_numbplayer_by_numbplayer_by_numbplayer_by_numbplayer_count()];
    gint i;
    GtkTreeIter it, it_next;

    for (i = 0; i < player_count()layer_number(pplayer))) {
	if (!exists[player_index(pplayer)layer_number(pplayer)player_by_numbplayer_by_numbplayer_by_number(plrno));
  }
}   ENDREP
DELTA 13024 37027 1225
SVN  ÔÕW‚j ™J ™ ™X” O¡0• „hœ?” O¡0• ‚M£	£ G“ Eí| ˆ ¦z” …)¯™ ‚~´:” ·A§ ”ÔYœ æyé€X ƒ=ÐJ_name_translation(A_NONE)_name_translation(i)_name_translation(to)_name_translation(i)_name_translation(to)_name_translation(*tech), HELP_TECH_name_translation(i)_name_translation(A_NONE)_name_translation(i)
      	    advance_name_translation(i)improvement_name_translationnation_name_for_player(player_by_number(packet->id[i])),
                 player_by_numbENDREP
DELTA 13038 1289324 312
SVN  —u˜5A…N Œ ‹ ‰~Œ€h nµs …c—D” H8” ‡Yž€T Æ!¦?˜ Žìo€‚  ~ý€' G  ‰Žn.vernacularterrain_index(pterrain) >= T_FIRST 
                       && terrain_index(pterrain) < terrain_count())layer_index(pplayer)layer_index(pplayer)player_count() <= MAX_NUM_PLAYERS + MAX_NUM_BARBARIANS);
  SANITY_CHECK(team_count()game_find_unit_by_numberlayer_index(pplayer2)].type
	     == pplayer2->diplstates[player_index(pplayer)].type);
      if (pplayer->diplstates[player_index(pplayer2)].type == DS_CEASEFIRE) {
	SANITY_CHECK(pplayer->diplstates[player_index(pplayer2)].turns_left
	       == pplayer2->diplstates[player_index(pplayer)team_index(pplayer->team)]++;
    }
  } players_iterate_end;

  for (i = 0; i < MAX_NUM_TEAMS; i++) {
    SANITY_CHECK(team_by_number(i)->players == count[i]);
  }
}

ENDREP
DELTA 13024 38635 442
SVN  ‚õK‚õT ‚ˆ ˜ í'‚ˆ$game_find_unit_by_numberENDREP
DELTA 13046 37847 5645
SVN  ƒ›Jƒœ>:†o –] Ž Y–e¢ uÑ? …[¥Q€@ a«dŽ „m¬M€@ b±rŽ Š`²\¢ uÑ? ƒ5¾O¢ |Ñ? ƒ/Ã¢ |Ñ? „sÇg¢ uÑ? ƒ4Ím¢ ˆÑ?¦ A¦@ …xÚ#¥ {Ñ@ …tá7€C SÙ- ìBè9€@ ¹)Õ3› 2‚Žs€[ ž1‚xŽ ‹z‚¯1€A Eþ? ˆx‚¼-¢ ‚S‚ÅC¢ ‚c‚È4¢ Ð‚Ë5player_by_numblayer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1), player_number(pclause->from)player_by_numblayer_number(pdialog->treaty.plr1), player_number(pclause->from)player_by_numblayer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1)layer_number(pdialog->treaty.plr1),
  layer_number(pdialog->treaty.plr1),  layer_number(pPlayer0);
  pCont->id1 = player_number(pPlayer1);
  
layer_number(pPlayer0);
    pCont->id1 = player_number(pPlayer1)layer_number(pclause->from)layer_number(pclause->from);
    pBuf->data.cont->id1 = player_number(pdialog->treaty.plr1)player_by_numblayer_number(pdialog->treaty.plr1));
  } dialog_list_iterate_end;layer_number(pWidget->data.player)layer_number(pWidget->data.player)layer_number(pWidget->data.player)ENDREP
DELTA 13113 8060 612
SVN  ò#ò5K ‹ €A `‹MŠ är1tem_number @ id;
};

struct Nation_Type {
  const int item_numbertem_numberENDREP
DELTA 13046 44012 584
SVN  _7< Ñ ˜ Ñ)˜ 2ÒN˜ ŽwÔ˜ ˆ)ã” ˜{ëO˜ ƒ_„Y˜ ‚@ˆG˜ „‹game_find_unit_by_numbergame_find_unit_by_numbergame_find_unit_by_numbergame_find_unit_by_numberlayer_index(pplayer)game_find_unit_by_numbergame_find_unit_by_numbergame_find_unit_by_numberENDREP
DELTA 13024 39678 3775
SVN  †  †  t…- ã  …Kã Æ\èn» ]¯w¢ ‚»W°b˜ ·^ƒìH• F„¤:° }„Ï=  „§,• ¤f„¨@• L„Í:• j„Ï• `„Ñ• ¯„Ó€‚! ƒ=†„_˜ …†ˆwµ ‘d†Ž‹unit_type(pUnit)Tunit_type(pUnit);
    pHome_City = game_find_city_by_numberutype_name_translation(pUType),
		game_find_city_by_numberimprovement_by_numberimprovement_by_number(B_COLOSSEUM)->sprite),
			improvement_by_numberimprovement_by_numberimprovement_by_numberimprovement_by_numberimprovement_by_numberType = utype_by_number(pCity->production.value);
    cost = unit_build_shield_cost(pUnitType);
    count = cost / 10;
        
    copy_chars_to_string16(pStr, utype_name_translation(pUnitType));
    pBuf = create_text_surf_from_str16(pStr);
    
    pBuf2 = get_unittype_surface(pUnitType
    if (improvement_hasimprovement_name_translation(pCity->production.value)(6) + (adj_†  ¢6¢4: ¯C• ßI¯b Ž19˜ „=yimprovement_by_numberstyle_of_citygame_find_city_by_numberENDREP
DELTA 13038 1293965 2350
SVN  ØbØde†v ŽK ´ <Žw˜ …6B… ƒ –€ ‚Kš=€l a|€l —X :€ l¹$‰ ‚Dº • `¼}‰ M¾m€D lÀT€C G  ‚%ÒG€S G ® B“@ oÖsplayer_index(player_by_number(MAX_ID - pWidget->ID))game_find_city_by_numbern = 0players_iterate(pPlayer) {
    
    if (!TEST_BIT(all_players, player_index(pPlayer))) {
      continue;
    }

    city_list_iterate(pPlayer->!player_owns_city(owner, pCity)) {
        pLogo = get_nation_flag_surface(nation_of_player(city_owner(pCity!player_owns_city(owner, pCity)) {
        set_wflag(pBuf, WF_FREE_THEME);
        owner = city_owner(pCity)players_iterate(pPlayer) {
    if(player_number(pPlayer) != game.info.player_idx
      && pplayer_get_diplstate(
    		game.player_ptr, pPlayerpPlayer->player_index(pPlayer)pPlayer->player_number(pPlayer), pBuf);
    col++;  
  } players_iterate_end;player_index(game.player_ptr)));
  popup_goto_airlift_dialog();
}

player_index(game.player_ptr)));
  GOTO = FALSE;
  popup_goto_airlift_dialog();
}

****
  Popdown goto/airlift to a city dialog.
ENDREP
DELTA 13038 1290345 2786
SVN  ûû)E„j ªV Ž Áªh¥ èyìŽ HÕ €> Ø€‚ ‚ÛA• „ÝVŽ „#ázŽ ‚Ræ/ ‘iéplayer_count()number(government_of_player(pplayer))player_by_numblayer_index(pplayer)]) == 0) {
      fprintf(fp, "addplayer %d %d %s\n", game.info.turn, player_number(pplayer),
	      pplayer->name);
      mystrlcpy(player_name_ptrs[player_index(pplayer)layer_index(pplayer)], pplayer->name) != 0) {
      fprintf(fp, "delplayer %d %d\n", game.info.turn - 1, player_number(pplayer));
      fprintf(fp, "addplayer %d %d %s\n", game.info.turn, player_number(pplayer),
	      pplayer->name);
      mystrlcpy(player_names[player_index(pplayer)layer_number(pplayer)player_count()player_count()player_number(size[i].player)ENDREP
DELTA 13024 44160 374
SVN  ƒ›[ƒ›>'… ‚Â0 €N 2‚Ä€n ‚M‚ãE€l ‚æy€s ²Z‚éany_cities = FALSE;
    punit = get_unit_in_focus();

    players_iterate(pplayer)
    {
      if (city_list_size(pplayer->cities))
      {
	any_cities = TRUE;
	break;
      }
    }
    players_iterate_end;info = map_get_tile(punit->tile)->terrain;
      if ((tinfo->irrigation_result != T_NONE)
	  && (tinfo->irrigation_result != tinfo)) {
	my_snprintf(irrtext, sizeof(irrtext), chgfmt,
		    terrain_name_translation(tinfo->irrigation_result)info)) {
	my_snprintf(mintext, sizeof(mintext), chgfmt,
		    terrain_name_translation(tinfo->mining_result)info)) {
	my_snprintf(transtext, sizeof(transtext), chgfmt,
		    terrain_name_translation(tinfo->transform_result)ENDREP
DELTA 11435 4052 7382
SVN  †  †  ƒ'žQ “' €ƒ I–~„ I–~ Ø/–x– …ï5  ó µTõS Cÿ ‚^¯B£ ‚²  å ´5§ £2‚›> …}ƒ¾s— ‚SƒÄe BƒÇ;™ Gƒ@ 	ƒÉc€_ Hƒ? @¬ €r Lò  ƒ
ƒÌ ƒcƒÏ ® -ƒÓ'› ˆTƒÔi »4ƒÝ>‘ q„˜~‰ „<„™x „8„ž< ˆf„¢ P…Ò4 ‡}„¬Xœ >„´nœ ‚%„¶E› D‚@ o„¹0 i„»³ £„¼3® „ßV­ 	„á€‚b ‚k„á|˜ ‚„äv¬ „ç&« ƒ\„èIƒ ‹#„ì%€‚k †„÷M€ƒ ‘`„ýiŒ ƒA…I€ ¬8…’|† …¿"€[ k…ÀV† S…¨l …]…Ó¸ $…Øp |…Û€r i…Ý5Ž ]†ƒ@ ƒ:…ß€ƒp *…æ)† …¿"€y ‚…Áu€P i…ëv¹ |…ì]” ¤M…íYvoid show_scenarios(struct connection *caller);
static bool set_ai_level_named(struct connection *caller, char *name,
                               const char *level_name, bool check);
static bool set_ai_level(struct connection *caller, char *name,
                         enum ai_level level, bool check);
static bool set_away(struct connection *caller, char *name, bool check);

static bool observetake__format__ (__printf____format__ (__printf__, 4, 5)));
                        | H_DANGER /* cheating */     ai_level_cmd(game.info.skill_level)enum ai_level8 : return CMD_CHEATINGenum ai_levelai_level_name(level));
  _named(struct connection *caller, char *name,
                               const char *level_name, bool check)
{
  enum ai_level level = find_ai_level_by_name(level_name);
  return set_ai_level(caller, name, level, check)
  Set AI level***/
static bool set_ai_level(struct connection *caller, char *name, 
                         enum ai_level levelai_level_name                  pplayer->name, ai_level_name              ai_level_nameAI_LEVEL_AWAYfind_team_by_ruleby_numbername_translationplayer_index(caller->player)player_index(caller->player)Turn on selective debugging  | "
			"ferries >.");

  if (game.info.is_new_game
                  unit_name_translation(punit
                 unit_name_translation(punitstrcmp(arg[0], "ferries") == 0) {
    if (game.debug[DEBUG_FERRIES]) {
      game.debug[DEBUG_FERRIES] = FALSE;
      cmd_reply(CMD_DEBUG, caller, C_OK, _("Ferry system is no longer "
                "in debug mode."));
    } else {
      game.debug[DEBUG_FERRIES] = TRUE;
      cmd_reply(CMD_DEBUG, caller, C_OK, _("Ferry system in debug mode."));
    }game_find_unit_by_number
                unit_name_translation(punit
               unit_name_translation(punit, i
    /* make sure the input string only contains digits */
    for (i = 0;; i++) {
      if (arg[i] == '\0' ) {
        break;
      }
      if (arg[i] < '0' || arg[i] > '1') {
        cmd_reply(CMD_SET, caller, C_SYNTAX,
                  _("The parameter %s should only contain digits 0-1."),
                  op->name);
        return FALSE;
      }
    }
   
	/* make sure the input string only contains digits */
    for (i = 0;; i++) {
      if (arg[i] == '\0' ) {
        break;
      }
      if ((arg[i] < '0' || arg[i] > '9')
	  && (i != 0 || (arg[i] != '-' && arg[i] != '+'))) {
        cmd_reply(CMD_SET, caller, C_SYNTAX,
                  _("The parameter %s should only contain +- and 0-9."),
                  op->name);
        return FALSE;
      }
    }
    && will_obs!pplayer && !will_obs) {
    /* Auto-taking a new player */
    return game.info.is_new_game && server_state == PRE_GAME_STATE;, usermy_snprintf(username, sizeof(username), "'%s'", pconn->username);
    detach_command(NULL, callerstrcmp(arg[i], "-") == 0) {
    pplayer = NULL;
  } else(pplayer && !pconn->observer && pconn->player == pplayer)
      || (!pplayer && !pconn->observer && pconn->player)conn->player->if (pplayer) {
    conn_list_iterate(pplayer->connections, aconn) {
      if (!aconn->observer) {
	if (server_state == RUN_GAME_STATE) {
	  send_game_state(aconn->self, CLIENT_PRE_GAME_STATE);
	  send_rulesets(aconn->self);
	  send_server_settings(aconn->self);
	}
	notify_conn(aconn->self, NULL, E_CONNECTION,
		    _("being detached from %s."), pplayer->name);
	unattach_connection_from_player(aconn);
	send_conn_info(aconn->self, game.est_connections);
      }
    } conn_list_iterate_end;
  }, usermy_snprintf(username, sizeof(username), "'%s'", pconn->username);
    detach_command(NULL, username, FALSE);

    if (pplayer) {
      /* find pplayer again; the pointer might have been changed */
      pplayer = find_player_by_name(name);
    }
  }now attach to new player */
  pconn->observer = FALSE; /* do this before attach! pplayer = pconn->player; /* In case pplayer was NULL. */ && !pplayer->nation†  ‚êzƒƒ'A™q€ ^‚»w€B U‚™€‡1 SÇ@‚ N‚™€| ÁH €
 yÁgœ wÂy –UÄq€ ¢eÝyŽ …€f ‰†~« ¹ ˆ wÉ0‰ ˆ3Ê#œ ŒrÒ.¢ ß:€{ Š0á8 ‚ì˜ ‚hîy° ƒ]ñ{€_ xö¥ é4 †qø+ G÷ €J T‚š €‡Y ˜rþbŽ  ‚—\ˆ ³"‚·X
      sz_strlcpy(pplayer->username, ANON_USER_NAME);
    }
  }

  end:;
  /* free our args */
  for (i = 0; i < ntokens; i++) {
    free(arg[i]);
  }  After a /load is completed, a reply is sent to all connections to tell
  them about the load.  This information is used by the conndlg to
  set up the graphical interface for starting the gamevoid send_load_game_info(bool load_successful)
{
  struct packet_game_load packet;

  /* Clear everything to be safe. */
  memset(&packet, 0, sizeof(packet));

  sz_strlcpy(packet.load_filename, srvarg.load_filename);
  packet.load_successful = load_successful;

  if (load_successful) {
    int i = 0;

    players_iterate(pplayer) {
      if (nation_count() > 0 && is_barbarian(pplayer)) {
	continue;
      }

      sz_strlcpy(packet.name[i], pplayer->name);
      sz_strlcpy(packet.username[i], pplayer->username);
      if (pplayer->nation != NO_NATION_SELECTED) {
	packet.nations[i] = nation_number(pplayer->nation);
      } else { /* No nations picked */
	packet.nations[i] = -1;
      }
      packet.is_alive[i] = pplayer->is_alive;
      packet.is_ai[i] = pplayer->ai.control;
      i++;
    } players_iterate_end;

    packet.nplayers = i;
  } else {
    packet.nplayers = 0;
  }

  lsend_packet_game_load(game.est_connections, &packet)..bool load_command(struct connection *caller, char *filename, bool check)
{
  struct timer *loadtimer, *uloadtimer;  
  strucserver_state != PRE_GAME_STATE
      && caller
      && caller->player
      && !caller->observer /* don't allow observers to ask votes */player_index(caller->player)case CMD_EASY:
  case CMD_NORMAL:
  case CMD_HARD:
  case CMD_CHEATING:
  case CMD_EXPERIMENTAL:
    return set_ai_level_named(caller, arg, commands[cmd].nameplayer_by_numbplayer_number(caller->player)!ptarget->observer ? ptarget->player : NULLSCENARIO"scenarioSCENARIOS:
    show_scenario                     ai_level_namenation_name_for_player(pplayer));
      }
      cat_snprintf(buf2, sizeof(buf2), _(", team %s"),
		   team_name_translation
  team_iterate(pteam) {index(pteam),
		team_name_translation(pteam),
		index(pteam),
		team_name_translation(pteam),
		teamplayer->name);
    }
  } team_iterate_end;
name_translation(find_empty_team()));/***
  List scenarios. We look both in the DATA_PATH and DATA_PATH/scenariovoid show_scenarios(struct connection *caller)
{
  char buf[MAX_LEN_CONSOLE_LINE];
  struct datafile_list *files;

  cmd_reply(CMD_LIST, caller, C_COMMENT, _("List of scenarios available:"));
  cmd_reply(CMD_LIST, caller, C_COMMENT, horiz_line);

  files = datafilelist_infix("scenario", ".sav", TRUE);
  
  datafile_list_iterate(files, pfile) {
    my_snprintf(buf, sizeof(buf), "%s", pfile->name);
    cmd_reply(CMD_LIST, caller, C_COMMENT, "%s", buf);

    free(pfile->name);
    free(pfile->fullname);
    free(pfile);
  } datafile_list_iterate_end;

  datafile_list_unlink_all(files);
  datafile_list_free(files);

  files = datafilelist_infix(NULL, ".sav", TRUE);

  datafile_list_iterate(files, pfile) {
    my_snprintf(buf, sizeof(buf), "%s", pfile->name);
    cmd_reply(CMD_LIST, caller, C_COMMENT, "%s", buf);

    free(pfile->name);
    free(pfile->fullname);
    free(pfile); 
  } datafile_list_iterate_end;

  datafile_list_unlink_all(files);
  datafile_list_free(files);
player_by_numbCHEATINGENDREP
DELTA 13027 13887 323
SVN  ù4‚H/ l  —Zx• ƒP¨d‘ c¬@¥ Eª €m ^Ðt¤ Eª € ^Ðt¡ Eª €A PÛ?€  Eª €p PÛ?œ Eª €m PÛ?€J Eª €‚1 PÛ?€ Eª €‚ QÛ? #½$¶ DÛ@ ŽdÎ;” –Ý0§ JÐ} †{ô/‘ ¿Fû6• Pó@ ›T»^’ QÛ> ¡"Ølayer_index(p2)layer_index(pplayer2)city_owner(pcity)
  Return the first item of players.
*****/
struct player *player_array_first(void)
{
  if (game.info.nplayers > 0) {
    return game.players;
  }
  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 the number of players.
*****/
const 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.
*****/
const int player_index(const struct player *pplayer)
{
  assert(pplayer);
  return pplayer - game.players
  Return the player index.
*****/
const 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_id]
  Return pointer 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_id]player_by_number(ind);
  } else {
    return NULL;
  }layer_index(pplayer)city_owner(pcity) == pplayer) ? pcity :city_owner(pcity)layer_index(pplayer2)player_index(them)ENDREP
DELTA 13038 1297272 759
SVN  ß$ß-? ŸA Ž cŸIŽ ª^°4£ ƒlÛ8player_by_numbplayer_by_numb
    for (i = 0; i < player_count()ENDREP
DELTA 10459 0 1470
SVN  –{Æ(Wµm …{ €Œ- G  mŽ€’1 G ¿ H@€ƒ& G  $’/€†j G » H@€' G  •*€p G €ƒ G@€ƒ G € H@€‚+hash.h"
#include "log.h"
#include "shared.h"

#include "player.h"

#include "colors_g.h"

#include "colors_common.h"
#include "tilespec.h"

/* An RGBcolor contains the R,G,B bitvalues for a color.  The color itself
 * holds the color structure for this color but may be NULL (it's allocated
 * on demand at runtime). */
struct rgbcolor {
  int r, g, b;
  struct color *color;
};

struct color_system {
  struct rgbcolor colors[COLOR_LAST];

  int num_player_colors;
  struct rgbcolor *player_colors;

  /* Terrain colors: we have one color per terrain.  These are stored in a
   * larger-than-necessary array.  There's also a hash that is used to store
   * all colors; this is created when the tileset toplevel is read and later
   * used when the rulesets are received. */
  struct hash_table *terrain_hash;
  struct rgbcolor terrain_colors[MAX_NUM_TERRAINS];
};

char *color_names[] = {
  /* Mapview */
  "mapview_unknown",
  "mapview_citytext",
  "mapview_cityblocked",
  "mapview_goto",
  "mapview_selection",

  /* Spaceship */
  "spaceship_background",

  /* Overview */
  "overview_unknown",
  "overview_mycity",
  "overview_alliedcity",
  "overview_enemycity",
  "overview_myunit",
  "overview_alliedunit",
  "overview_enemyunit",
  "overview_ocean",
  "overview_ground",
  "overview_viewrect",

  /* Reqtree */
  "reqtree_researching",
  "reqtree_known",
  "reqtree_reachablegoal",
  "reqtree_unreachablegoal",
  "reqtree_reachable",
  "reqtree_unreachable",
  "reqtree_background",
  "reqtree_text",
  "reqtree_edge",

  /* Player dialog */
  "playerdlg_background"
};

struct color_system *color_system_read(struct section_file *file)
{
  int i;
  struct color_system *colors = fc_malloc(sizeof(*colors));

  assert(ARRAY_SIZE(color_names) == COLOR_LAST);
  for (i = 0; i < COLOR_LAST; i++) {
    colors->colors[i].r
      = secfile_lookup_int(file, "colors.%s0.r", color_names[i]);
    colors->colors[i].g
      = secfile_lookup_int(file, "colors.%s0.g", color_names[i]);
    colors->colors[i].b
      = secfile_lookup_int(file, "colors.%s0.b", color_names[i]);
    colors->colors[i].color = NULL;
  }

  for (i = 0; i < MAX_NUM_PLAYERS + MAX_NUM_BARBARIANS; i++) {
    if (!section_file_lookup(file, "colors.player%d.r", i)) {
      break;
    }
  }
  colors->num_player_colors = MAX(i, 1);
  colors->player_colors = fc_malloc(colors->num_player_colors
				    * sizeof(*colors->player_colors));
  if (i == 0) {
    /* Use a simple fallback. */
    freelog(LOG_ERROR,
	    "Missing colors.player.  See misc/colors.tilespec.");
    colors->player_colors[0].r = 128;
    colors->player_colors[0].g = 0;
    colors->player_colors[0].b = 0;
    colors->player_colors[0].color = NULL;
  } else {
    for (i = 0; i < colors->num_player_colors; i++) {
      struct rgbcolor *rgb = &colors->player_colors[i];

      rgb->r = secfile_lookup_int(file, "colors.player%d.r", i);
      rgb->g = secfile_lookup_int(file, "colors.player%d.g", i);
      rgb->b = secfile_lookup_int(file, "colors.player%d.b", i);
      rgb->color = NULL;
    }
  }

  for (i = 0; i < ARRAY_SIZE(colors->terrain_colors); i++) {
    struct rgbcolor *rgb = &colors->terrain_colors[i];

    rgb->r = rgb->g = rgb->b = 0;
    rgb->color = NULL;
  }
  colors->terrain_hash = hash_new(hash_fval_string, hash_fcmp_string);
  for (i = 0; ; i++) {
    struct rgbcolor *rgb;
    char *key;

    if (!section_file_lookup(file, "colors.terrains%d.r", i)) {
      break;
    }
    rgb = fc_malloc(sizeof(*rgb));
    rgb->r = secfile_lookup_int(file, "colors.terrains%d.r", i);
    rgb->g = secfile_lookup_int(file, "colors.terrains%d.g", i);
    rgb->b = secfile_lookup_int(file, "colors.terrains%d.b", i);
    rgb->color = NULL;
    key = secfile_lookup_str(file, "colors.terrains%d.terrain", i);

    if (!hash_insert(colors->terrain_hash, mystrdup(key), rgb)) {
      freelog(LOG_ERROR, "warning: already have a color for %s", key);
    }
  }

  return colors;
}

******
  Called when terrain info is received from the server.
****/
void color_system_setup_terrain(struct color_system *colors,
				const struct terrain *pterrain)
{
  struct rgbcolor *rgb
    = hash_lookup_data(colors->terrain_hash, terrain_rule_name(pterrain));

  if (rgb) {
    colors->terrain_colors[terrain_index(pterrain)] = *rgb;
  } else {
    freelog(LOG_ERROR, "No color for terrain '%s'", terrain_rule_name(pterrain));
    /* Fallback: the color remains black. */
  }
}

system_free(struct color_system *colors)
{
  int i;

  for (i = 0; i < COLOR_LAST; i++) {
    if (colors->colors[i].color) {
      color_free(colors->colors[i].color);
    }
  }
  for (i = 0; i < colors->num_player_colors; i++) {
    if (colors->player_colors[i].color) {
      color_free(colors->player_colors[i].color);
    }
  }
  free(colors->player_colors);
  for (i = 0; i < ARRAY_SIZE(colors->terrain_colors); i++) {
    if (colors->terrain_colors[i].color) {
      color_free(colors->terrain_colors[i].color);
    }
  }
  while (hash_num_entries(colors->terrain_hash) > 0) {
    const char *key = hash_key_by_number(colors->terrain_hash, 0);
    const void *rgb = hash_value_by_number(colors->terrain_hash, 0);

    hash_delete_entry(colors->terrain_hash, key);
    free((void *)key);
    free((void *)rgb);
  }
  hash_free(colors->terrain_hash);
  free(colors);
}

******
  Return the RGB color, allocating it if necessary.
****/
static struct color *ensure_color(struct rgbcolor *rgb)
{
  if (!rgb->color) {
    rgb->color = color_alloc(rgb->r, rgb->g, rgb->b);
  }
  return rgb->color;
}

const struct tileset *t, enum color_std color)
{
  return ensure_color(&get_color_system(t)->colors[color]);
}


  Not sure which module to put this in...
  It used to be that each nation had a color, when there was
  fixed number of nations.  Now base on player number instead,
  since still limited to less than 14.  Could possibly improve
  to allow players to choose their preferred color etc.
  A hack added to avoid returning more that COLOR_STD_RACE13.
  But really there should be more colors available -- jk.
/
struct color *get_player_color(const struct tileset *t,
			       const struct player *pplayer)
{
  if (pplayer) {
    struct color_system *colors = get_color_system(t);
    int index = player_index(pplayer);

    assert(index >= 0 && colors->num_player_colors > 0);
    index %= colors->num_player_colors;
    return ensure_color(&colors->player_colors[index]);
  } else {
    assert(0);
    return NULL;
  }
}

******
  Return a pointer to the given "terrain" color.

  Each terrain has a color associated.  This is usually used to draw the
  overview.
****/
struct color *get_terrain_color(const struct tileset *t,
				const struct terrain *pterrain)
{
  if (pterrain) {
    struct color_system *colors = get_color_system(t);

    return ensure_color(&colors->terrain_colors[terrain_index(pterrain)]);
  } else {
    assert(0);
    return NULL;
  }
}
ENDREP
DELTA 9976 113 1014
SVN  Á_Â"v ™F €A ™x® „m©}† ‹(®j ‡Lº (game.info.spacerace
     && player_number(pplayer) == game.info,
                               gpointer data, NULL_ENDREP
DELTA 13068 10649 1832
SVN  ×h×|†L …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. */
const int player_count(void);
const int player_index(const struct player *pplayer);
const 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 13000 47393 11581
SVN  ‚Û$‚ÜQ‰f ¤~ ¨ O×@ §%¥vª —Í@¦ ‚Jäk¦  äk •è|˜ ‚Fþ˜ A€q˜ ‘z‚Bˆ X”; •%€& V—?µ  ˜>€‚ ŒW›P— M¨8€v ¸u£ ;º6€O “X¼C€r Ñ ’ à4€A gòg¢ çHó\at %s. Thank you."), BUG_URL);
    }
  }overnment_name_for_player(game.player_ptr)nation_name_for_player(game.player_ptrnation_name_for_player(game.player_ptrspecial_name_translationspecial_name_translationspecial_name_translationhas_typeutype_index(unit_type(punit))utype_index(top[2])] < types_count[utype_index(utype)]) {
  top[2] = utype;

  if (!top[1]
      || types_count[utype_index(top[1])] < types_count[utype_index(top[2])utype_index(top[0])] < types_count[utype_index(utype)utype_index(top[i])] > 0) {
  if (utype_has_flag(top[i], F_NONMIL)) {
    nonmil -= types_count[utype_index(top[i])];
  } else {
    mil -= types_count[utype_index(top[i])];
  }
  astr_add_line(&str, "%d: %s",
          types_count[utype_index(top[i])], utype_name_translation(top[i])name_translation(pUnit)layer_index(pTile->owner)].type==DS_CEASEFIRE){
		  int turns = game.player_ptr->diplstates[player_index(pTile->owner)nation_name_for_player(pTile->ownerlayer_index(pTile->owner)].type],
		    		nation_plural_for_player(pTile->ownernation_name_for_player(pOwner),
		  diplo_city_adjectives[game.player_ptr->
				   diplstates[player_index(pOwner)unit_type(pUnit)unit_type(aunit);
          pHome_City = game_find_city_by_numberutype_name_translation(pUType),
		ENDREP
DELTA 13024 55658 23782
SVN  …¬)…®f3‚A À ˜ ‚2À˜ ‹XÂ[€I ‰zÎj˜ ‚Òm‚Øs€I R…— ’ W„Ï €Ugame_find_unit_by_numbergame_find_city_by_numbergame_find_city_by_number(victim_id);
    punit = game_find_unit_by_numbergame_find_unit_by_numberulate_borders(void)
{
  send_packet_edit_recalculate_borders(&aconnection  Regenerate watereditor_regenerate_water(void)
{
  send_packet_edit_regenerate_water(&aconnection);
}
ENDREP
DELTA 11590 0 5436
SVN  ûM«kaÊ ˆr €h ƒ$ˆp€‚ +Œf G  †fŽY¼ ’}•o‘ ¨w€ƒ
 G ˆ K¹y o¬0€Y J¯€ P±8¼ G ˜ B¤@€I G ™ B¤@€K G ™ B¤@€E G ª B¤@€ Yæ  …¹z€ƒk wÁ3€ƒ' ˆPÄ@‘ ‚yÍ€˜. 4ãm NÙuƒ G  .Û€Š^ G  yæQ G ¦ uæw€ŠC bzž aÈ5€ ? €l G  ‹né€F …aõlenum unit_param {
  UPARAM_ACTIVITY,
  UPARAM_ACTIVITY_TARGET,
  UPARAM_ACTIVITY_COUNT,
  UPARAM_LAST
};paint_item *resources;

static paint_item vision_items[] = {
  { N_("Known"),   EVISION_ADD },
  { N_("Unknown"), EVISION_REMOVE },
  { N_("Toggle"),  EVISION_TOGGLE }
};

static char *tool_names[ETOOL_LAST] = {
  N_("Paint"), N_("Unit"), N_("City"), N_("Player"), N_("Visionstatic GList *vision_group;

GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button), "sigid")terrain_by_numberRESOURCE:
    if (id == 0) {
      editor_set_selected_resource(NULL);
    } else {
      editor_set_selected_resource(resource_by_number(resources[id - 1].paint));
    }
    break;   
  case EPAINT_LAST:
    break;
  }
}

static void set_selected_vision_paint(GtkWidget *w, gpointer data)
{
  enum editor_vision_mode edit_type = GPOINTER_TO_INT(data);

  editor_set_vision_mode(edit_type);
}

******
 enum unit_param param = GPOINTER_TO_INT(data);

  switch (param) {
  case UPARAM_ACTIVITYreturn;
  case UPARAM_ACTIVITY_TARGET:
    punit->activity_target = gtk_spin_button_get_value_as_int(spinbutton);
    return;
  case UPARAM_ACTIVITY_COUNTreturn;
  case UPARAM_LAST:
    break;
  }

  assert(0);
}

******
  Set unit type.
**********/
static void unit_type_callback(GtkWidget *button, gpointer data)
{
  size_t to = (size_t) data;
  struct unit *punit = editor_get_selected_unit();

  punit->utype = utype_by_number(to);
}

******
  Set unit owner.
**********/
static void unit_owner_callback(GtkWidget *button, gpointer data)
{
  size_t to = (size_t) data;
  struct unit *punit = editor_get_selected_unit();

  punit->owner = player_by_number(to);
}

******
  Set city owner.
**********/
static void city_callback(GtkWidget *button, gpointer data)
{
  size_t to = (size_t) data;
  struct city *pcity = editor_get_selected_city();

  pcity->owner = player_by_number(to);
}

******
  Set whose vision we are editing.
**********/
static void vision_callback(GtkWidget *button, gpointer data)
{
  size_t to = (size_t) data;

  editor_set_selected_player(player_by_number(to));4] = { 0, 5, 10, 16 }; /* magic numbers to make the table look good */
  int types_num[] = { terrain_count(), SPECIALS_NUM,
                      resource_count() + 1 };
  paint_item *ptype[EPAINT_LAST] = { NULL, specials, NULL };
  
  terrains = fc_realloc(terrains,
			terrain_count() * sizeof(*terrains));
  ptype[EPAINT_TERRAIN] = terrains;

  resources = fc_realloc(resources,
                         (resource_count() + 1) * sizeof(*resources));
  ptype[EPAINT_RESOURCE] = resources;
terrain_name_translation(terrain_by_number(item->paint));
        break;
      case EPAINT_SPECIAL:
        if (!item->name) {
	  item->name = special_name_translation(item->paint);
	}
        break;
      case EPAINT_RESOURCE:
        item->paint = j;
        if (j == 0) {
          item->name = _("None");
        } else {
          item->name = resource_name_translation(resource_by_number(item->paint - 1));
        } terrain_by_number  GtkWidget *hbox, *vbox, *label, *sb;
  GtkSizeGroup *label_group, *sb_group;
  GtkAdjustment *adj;
  int i;
  struct unit *punit = editor_get_selected_unit();

  const char *names[UPARAM_LAST] = { _("Activity"),
				     _("Activity Target"),
				     _("Activity Count") };
  int inits[UPARAM_LAST][3] = {
    {punit->activity, 0, ACTIVITY_LAST},
    {punit->activity_target, 0, S_LAST},
    {punit->activity_count, 0, 200}
  };
  GtkWidget *unitmenu, *ownermenu;
  GtkWidget *popupmenu, *playermenu;

  vbox = gtk_vbox_new(FALSE, 5);

  label_group = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
  sb_group = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);

  unitmenu = gtk_option_menu_new();
  hbox = gtk_hbox_new(FALSE, 5);
  label = gtk_label_new(_("Type"));
  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
  gtk_size_group_add_widget(label_group, label);
  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
  gtk_box_pack_start(GTK_BOX(hbox), unitmenu, TRUE, TRUE, 0);
  popupmenu = gtk_menu_new();
  gtk_option_menu_set_menu(GTK_OPTION_MENU(unitmenu), popupmenu);
  unit_type_iterate(ptype) {
    const gchar *data = utype_values_translation(ptype);
    GtkWidget *item = gtk_menu_item_new_with_label(data);

    g_signal_connect(item, "activate",
                     G_CALLBACK(unit_type_callback),
                     GINT_TO_POINTER(ptype->index));
    gtk_menu_shell_append(GTK_MENU_SHELL(popupmenu), item);
  } unit_type_iterate_end;
  gtk_widget_show_all(popupmenu);

  ownermenu = gtk_option_menu_new();
  hbox = gtk_hbox_new(FALSE, 5);
  label = gtk_label_new(_("Owner"));
  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
  gtk_size_group_add_widget(label_group, label);
  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
  gtk_box_pack_start(GTK_BOX(hbox), ownermenu, TRUE, TRUE, 0);
  playermenu = gtk_menu_new();
  gtk_option_menu_set_menu(GTK_OPTION_MENU(ownermenu), playermenu);
  players_iterate(pplayer) {
    char data[1024];
    GtkWidget *item;

    if (pplayer->nation) {
      my_snprintf(data, sizeof(data), "%s (%s)",
		  pplayer->name,
		  nation_name_for_player(pplayer));
    } else {
      my_snprintf(data, sizeof(data), "%s", pplayer->name);

    }
    item = gtk_menu_item_new_with_label(data);

    g_signal_connect(item, "activate",
                     G_CALLBACK(unit_owner_callback),
                     GINT_TO_POINTER(player_number(pplayer)));
    gtk_menu_shell_append(GTK_MENU_SHELL(playermenu), item);
  } players_iterate_end;
  gtk_widget_show_all(playermenu);

  for (i = 0; i < UPARAM_LAST; i++) {
    adj = GTK_ADJUSTMENT(gtk_adjustment_new(inits[i][0], inits[i][1], 
					    inits[i][2], 1.0, 5.0, 5.0));
    hbox = gtk_hbox_new(FALSE, 5);
    sb = gtk_spin_button_new(adj, 1, 0);
    gtk_size_group_add_widget(label_group, sb);
    label = gtk_label_new(names[i]);
    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
    gtk_size_group_add_widget(label_group, label);
    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALS}

  GtkWidget *hbox, *vbox, *label;
  GtkWidget *citymenu;
  GtkWidget *popupmenu;
  GtkSizeGroup *label_group, *sb_group;

  vbox = gtk_vbox_new(FALSE, 5);

  label_group = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
  sb_group = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);

  citymenu = gtk_option_menu_new();
  hbox = gtk_hbox_new(FALSE, 5);
  label = gtk_label_new(_("Owner"));
  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
  gtk_size_group_add_widget(label_group, label);
  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
  gtk_box_pack_start(GTK_BOX(hbox), citymenu, TRUE, TRUE, 0);
  popupmenu = gtk_menu_new();
  gtk_option_menu_set_menu(GTK_OPTION_MENU(citymenu), popupmenu);
  players_iterate(pplayer) {
    char data[1024];
    GtkWidget *item;

    if (pplayer->nation) {
      my_snprintf(data, sizeof(data), "%s (%s)",
		  pplayer->name,
		  nation_name_for_player(pplayer));
    } else {
      my_snprintf(data, sizeof(data), "%s", pplayer->name);

    }
    item = gtk_menu_item_new_with_label(data);

    g_signal_connect(item, "activate",
                     G_CALLBACK(city_callback),
                     GINT_TO_POINTER(player_number(pplayer)));
    gtk_menu_shell_append(GTK_MENU_SHELL(popupmenu), item);
  } players_iterate_end;
  gtk_widget_show_all(popupmenu);

  return vbox;
}


******
  Create the tab for the visionvision_palette(void)
{
  GtkWidget *vbox, *hbox, *bbox, *label, *button;
  GtkWidget *playermenu, *popupmenu;
  int i, sig;

  vbox = gtk_vbox_new(FALSE, 5);
  hbox = gtk_hbox_new(FALSE, 5);
  bbox = gtk_hbox_new(FALSE, 5);

  label = gtk_label_new(_("Player"));
  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
  gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);

  playermenu = gtk_option_menu_new();
  popupmenu = gtk_menu_new();
  gtk_option_menu_set_menu(GTK_OPTION_MENU(playermenu), popupmenu);
  players_iterate(pplayer) {
    char data[1024];
    GtkWidget *item;

    if (pplayer->nation) {
      my_snprintf(data, sizeof(data), "%s (%s)",
		  pplayer->name,
		  nation_name_for_player(pplayer));
    } else {
      my_snprintf(data, sizeof(data), "%s", pplayer->name);

    }
    item = gtk_menu_item_new_with_label(data);

    g_signal_connect(item, "activate",
                     G_CALLBACK(vision_callback),
                     GINT_TO_POINTER(player_number(pplayer)));
    gtk_menu_shell_append(GTK_MENU_SHELL(popupmenu), item);
  } players_iterate_end;
  gtk_box_pack_start(GTK_BOX(hbox), playermenu, TRUE, TRUE, 0);

  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);

  for(i = 0; i < EVISION_LAST; i++) {
    paint_item *item = &vision_items[i];

    button = gtk_toggle_button_new_with_label(item->name);
EVISION_ADD) ? TRUE : FALSE);
vision_paint),
                           GINT_TO_POINTER(i));

    /* add this button to a group */
    vision_group = g_list_append(visionvision_group);
    g_object_set_data(G_OBJECT(button), "sigid", GINT_TO_POINTER(sig));

    gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
  }

  gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);

  return vbox;
}

  gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
			   create_player_palette(), NULL);
  gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
                           create_vision_palette(), NULL);ENDREP
DELTA 13046 48066 1683
SVN  ƒösƒøE‚G; Œp €Z ‹!Ž^€L „j›?• „F ;• Q¥€r „}¶O± qì~ ·J¼j yô@€t „_ö— mû ½ S®  Lþ€N v‚Œb€C …0‚Ž– )‚“X§ b‚Žv ~‚–– ‚˜– ™5‚¨*• ‚r‚Áp• T­• C‚­  x‚Æ¹ 8‚ÇH€‚& Œq‚Ù€_ a‚æpŽ h‚çcŽ ‚è]€r _‚êd T­ ]‚ì(» Z‚î>€I T­ ‚C‚ð5Ž 0‚ó
€ Žv‚õI¸ …/ƒ…€: Lƒ‹Z€c fƒŽm€‚( ƒ!ƒ’^€R ˆ'ƒ–CŽ †mƒž|Ž }ƒ¥{€…> ®4ƒ¬Ž ‚ƒÚ^Ž ™sƒÝ enum dipl_reason diplcheck;
  bool repeat = FALSE;
  struct player *pplayer2 = valid_player_by_number(other_player_id);

  if (NULL == pplayer2) {
    return;
  }

  old_type = pplayer->diplstates[other_player_id].typelayer_index(pplayer2)].type =
    pplayer2->diplstates[player_index(pplayer)].type =
    new_type;
  pplayer->diplstates[player_index(pplayer2)].turns_left =
    pplayer2->diplstates[player_index(pplayer)layer_index(pplayer2)layer_index(pplayer2)layer_index(pplayer)].has_reason_to_cancel = 1;
        handle_diplomacy_cancel_pact(other, player_number(pplayer)layer_number(pplayer2), CLAUSE_ALLIANCE);
      }ayer_number(plr)nation_number(plr->nation) : -1;
  packet->is_male=plr->is_male;
  packet->team = plr->team ? team_number(plr->team)/*improvement_count()*/number(government_of_player(plr))
                       : -1ayer_index(plr)].contact_turns_left > 0)) {
    packet->target_government = plr->target_government
                                ? government_number(plr->target_government)
                               layer_index(pother)]
	= BV_ISSET(plr->embassy, player_index(pother)player_index(receiver)player_index(receiver);
    }

    for player_index(receiver)player_index(receiver)layer_number(pplayer)layer_number(pplayer)Update contact info.
layer_number(pplayer1), player2 = player_number(pplayer2)layer_index(pplayer1)].has_reason_to_cancel = TRUE;
        pplayer3->diplstates[player_index(pplayer2)].has_reason_to_cancel = TRUE;
        handle_diplomacy_cancel_pact(pplayer3, player_number(pplayer1), CLAUSE_ALLIANCE);
        handle_diplomacy_cancel_pact(pplayer3, player_number(pplayer2)player_count());

  /* Initialize array in unshuffled order: */
  for(i = 0; i < player_count()player_count()player_count()player_count(); i++) {
    freelog(LOG_DEBUG, "Shuffling player %d as %d.",
	    i, player_number(shuffled_plr[i])player_count(player_count(); i++) {
    shuffled_plr[i] = player_by_numbplayer_number(shuffled_plr[i]));
  }

  shuffled_nplayers = player_count(player_count()player_count() < shuffled_nplayers) {
    freelog(LOG_ERROR, "number of players shrunk between shuffles (%d < %d)",
	    player_count()nation_count()], looking_for;
  int match[nation_count()nation_index(pnation)] = UNAVAILABLE;
      match[nation_index(pnation)] = 0;
      continue;
    }

    nations_used[nation_index(pnation)] = AVAILABLE;

    match[nation_index(pnation)nation_index(pnation)] = UNWANTED;
	  match[nation_index(pnation)] = 1;
	  break;
	} else {
	  match[nation_index(pnation)] += x * 100;
	}
      }
    } players_iterate_end;

    num_nations_avail += match[nation_index(pnation)nation_index(*choices)] == AVAILABLE) {
      pref_nations_avail += match[nation_index(*choices)];
      nations_used[nation_index(*choices)] = PREFERRED;
    }
  }
  
  nations_iterate(pnation) {
    if (nations_used[nation_index(pnation)] == UNWANTED) {
      nations_used[nation_index(pnation)nation_index(pnation)] == looking_for) {
      pick -= match[nation_index(pnation)player_count()player_count()player_index(other_player)].type = DS_WAR;
      other_player->diplstates[player_index(cplayer)].type = DS_WAR;
    } else {
      cplayer->diplstates[player_index(other_player)].type = DS_NO_CONTACT;
      other_player->diplstates[player_index(cplayer)].type = DS_NO_CONTACT;
    }

    cplayer->diplstates[player_index(other_player)].has_reason_to_cancel = 0;
    cplayer->diplstates[player_index(other_player)].turns_left = 0;
    cplayer->diplstates[player_index(other_player)].contact_turns_left = 0;
    other_player->diplstates[player_index(cplayer)].has_reason_to_cancel = 0;
    other_player->diplstates[player_index(cplayer)].turns_left = 0;
    other_player->diplstates[player_index(cplayer)player_count()player_count()ENDREP
DELTA 12826 157 327
SVN  ¾¾'  ¯ ˆ ‰|¯ ˜ …
¹has_typegame_find_unit_by_numberENDREP
DELTA 11941 3055 1659
SVN  òBò=ƒ{ ÉZ ‘ Ée² ‚7Ë*® Î
± †:ÏP€@ ‰	Ö6€d ƒjà? †ä4š kêZ€~ …í)terrain_by_numberterrain_name_translation(tinfo->irrigation_result)terrain_name_translation(tinfo->mining_result)terrain_name_translation(tinfo->transform_result)utype_name_translation(utype_by_number(pcity->production.value))INIT;

  add_line(_("City: %s (%s)"), pcity->name,
	   nation_name_translation(nation_of_city(pcity)utype_name_translation(ptype)layer_number(punit->owner)utype_name_translation(ptype),
	     nation_name_translation(nation_of_unit(punit)), tmp);
    if (player_number(punit->owner)ENDREP
DELTA 13091 0 706
SVN  ‚ÃG‚ÃL; ÃX ˜ á%Ãg– Š¥Œ Ñ<¯9Œ „‚Œ Ša‚…6Œ ¡\‚(› %‚²› p‚³Wgame_find_unit_by_numbernation_number(pnation)nation_groupnation_groupnation_groupnation_groupplayer_number(races_player)player_number(races_player)ENDREP
DELTA 13038 1711174 1094
SVN  ¹I¸y5‚} Í( €8 VÎvš ˆ{à• œé• ƒl…4™ ‡‰V€S •7‘Y• ’9§SDL_Rect area;
  
  if (pPlayers_Dlg) {
    return;
  }
  
  n = 0;
  players_iterate(pPlayer) {
    if(is_barbarian(pPlayer)) {
      continue;
    }
    n++;
  } players_iterate_end;players_iterate(pPlayer) { players_iterate_end;layer_number(pPlayer)n = 0, w = 0, units_h = 0players_iterate(pPlayer) {
    if(player_number(pPlayer) != game.info.player_idx) { players_iterate_end;ENDREP
DELTA 11391 21689 1347
SVN  ”E–(i Œ £ „,Œ9€F ƒuPgame_find_unit_by_number(_ids[_i]);base(const struct unit_list *punits,
                       enum base_type_id base);
bool can_units_do_base_gui(const struct unit_list *punits,
                           enum base_gui_type base_guiENDREP
DELTA 10427 577 2964
SVN  ¾0¾4
 —U • ¦J—flayer_number(pplayer)ENDREP
DELTA 11391 23367 48
SVN  ¤ ¤0 Žd ˜ ‚zŽs˜ ’‘|game_find_unit_by_numbergame_find_unit_by_numberENDREP
DELTA 11088 290 6483
SVN  ÄÆ5m‹@ †6 €[ ˆE†`€A ‚`T½ Š’i€G ‚z3€H …I c€H ‚o¦b€G ‚eª€G ƒD­ €J ™I±— ‰$Êr€J ˜ÔN• ‡bìq˜ †5ôb€G †iûL€A ’3‚d€O ‰v•T€i „* #… z®h… w¥S© P±© Q²y© O³t… N©>… „Pª… z®h… p¯h… w°^… t±[… u²U… s³P€` ƒµ%€N ‚u¸x… »s… [¼z… †A½[#include "unitlist.h"

#include "dialogs_g.h"
#include "chatline.h"
#include "choice_dialoggame_find_unit_by_number(diplomat_id) && game_find_unit_by_numberhas_type_flag(punit, F_UNBRIBABLE)) {
    shell = popup_choicgame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
        game_find_city_by_numberadvance_name_for_playergame_find_unit_by_number(diplomat_id) && 
        game_find_city_by_numberimprovement_by_numbergame_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && game_find_city_by_numbergame_find_unit_by_number(diplomat_id))
      && (pcity=game_find_city_by_number_translation(punit),
		pcity->name);

    if (!unit_has_type_flag(punit, F_SPY)){
      shl = popup_choicchoicchoicchoice_dialog_button_set_sensitive(shl, 2choice_dialog_button_set_sensitive(shl, 3choice_dialog_button_set_sensitive(shl, 4choicchoicchoicchoicchoicchoicchoicchoicchoice_dialog_button_set_sensitive(shl, 6, FALSE);
     }

    diplomat_dialog = shl;

    choicchoice_dialog(GTK_WINDOW(toplevel),
	_("Subvert Enemy Unit"),
	(!unit_has_typechoicchoicchoicENDREP
DELTA 12045 702 575
SVN  †X“K • Ž § Aå € „•… j™ €U Fš<’ Qð€X Aå €… „m#” =›€ 	,€! Pñ  ˆ3Ÿg ƒe¨š P«w€~ ƒ.­.€k ±1” ‚³A€x u¶&” O·,€‚ ¹v€r Q¼€! ‚¾€‚ †XÀ*€R È› ±7Õ!Get unit_type for given role character
***********/
struct unit_type *crole_to_unit_type(char crole,struct player *pplayer)
{
  struct unit_type *utype = NULL;
  enum unit_flag_id role NULLif (pplayer != NULL) {
      utype = first_role_unit_for_player(pplayer, role);
    }  }

  return utyp**
  Place a starting unit for the player. Returns tile where unit was really
  placed.
***********/
static struct tile *place_starting_unit(struct tile *starttile,
                                        struct player *pplayer,
                                        char crole)
{
  struct tile *ptile = NULL;
  struct unit_type *utype = crole_to_unit_type(crole, pplayer);

  if (utype != NULL) {
    iterate_outward(starttile, map.xsize + map.ysize, itertile) {
      if (!is_non_allied_unit_tile(itertile, pplayer)
          && is_native_tile(utype, itertile)) {
        ptile = itertile;
        break;
      }
    } iterate_outward_end;
  }

  if (ptile == NULL) {
    /* No place where unit may exist. */
    return NULL;
  }if (utype != NULL) {"Sea moving start units are not yet supported, "
                           "%s not created.",
                         utype_rule_name(utype)
		    utype_name_translation(utype));
      return NULL;
    }

    (void) create_unit(pplayer, ptile, utype, FALSE, 0, 0);
    return ptile;
  }

  return NULLint placed_unit\"%s\" (%d)",
	    i,
	   ation_rule_name(n) : "",
	    n ? nation_number(n) : -1);
  }
  players_iterate(pplayer) {
    start_pos[player_index(pplayer)
		player_number(pplayer),
		nation_rule_name(nation_of_player(pplayer)));
	start_pos[player_index(pplayer)layer_index(pplayer)layer_number(pplayer),
		    nation_rule_name(nation_of_player(pplayer)),
		    i);
	    start_pos[player_index(pplayer)layer_index(pplayer)layer_index(pplayer)]];

    /* Place the first unit. */
    if (place_starting_unit(pos.tile, pplayer,
                            game.info.start_units[0]) != NULL) {
      placed_units[player_index(pplayer)] = 1;
    } else {
      placed_units[player_index(pplayer)] = 0;
    }nation_of_player(pplayer);
    struct start_position p
      = map.start_positions[start_pos[player_index(pplayer)if (place_starting_unit(ptile, pplayer,
                              game.info.start_units[i]) != NULL) {
        placed_units[player_index(pplayer)]++;
      }placed_units[player_index(pplayer)]++;
      i++;
    }
  } players_iterate_end;

  players_iterate(pplayer) {
    if (placed_units[player_index(pplayer)] == 0) {
      /* No units at all for some player! */
      die(_("No units placed for %s!"), pplayer->name)
  players_iterate(pplayer) {
    pplayer->nturns_idle++;
  } players_iterate_end;layer_number(pconn->player)ENDREP
DELTA 13046 51235 641
SVN  ‚”O‚•?ƒ ™R €F •šƒ 4¯§ 9¼f€J w¿Q¦ ±?Àc˜ Ü~ò1ƒ «7Ï/ dú}ƒ ‹n‚ˆaern = find_government_by_rule_name(value);
    if (source.value.governerngovernment_number(source->value.govern)terrain_number(source->value.terrain);
    return;
  case REQ_NATION:
    *value = nation_number(source->value.nation);
    return;
  case REQ_UNITTYPE:
    *value = utype_number(source->value.unittype)uclass_number(source->value.unitclass)game_find_city_by_numberernern == psource2->value.governernENDREP
DELTA 13027 21089 486
SVN  ¼W¼` Ž? ˜ ®	ŽNgame_find_unit_by_numberENDREP
DELTA 13038 1713002 484
SVN  ‚î‚ï]†J ») ™ ƒ»7­ \½x¦ ~¿m” “%Át” „vÕ"” ‹hÚ!• ƒYæ• ŽBév™ T»7 -¼( &úT€% ^¿m @ýg” „ ÿ0© TÕ6 …„B© qÚ5 é$Še€H Gô+€> –‚†4€A Ñ‚_name_translation(A_NONE)_name_translation(A_NONE),
		  0);
    } else_name_translation(research->tech_goal)_name_translation(i)_name_translation(i)_name_translation(i)_name_translation(to)_name_translation(to)_name_translation(A_NONE)text, sizeof(_name_translation(A_NONE),
		  0);
    } else {
      my_snprintf(text, sizeof(text),
		  _("Goal: %s (%d steps)"),
		  advance_name_translation(research->tech_goal)_name_translation(i)_name_translation(i), smeBSBObjectClass, _name_translation(i), smeBSBObjectClass, utype_name_translation(punittype1),
		utype_name_translation(punittype2)Unit_type_id uti = utype_index(unit_type(punit));
      (unitarray[uti].active_count)++;
      if (punit->homecity) {
	unitarray[uti].upkeep_shield += punit->upkeep[O_SHIELD];
	unitarray[utiplayer_by_number(packet->id[i])),
                 player_by_numbENDREP
DELTA 12717 97 318
SVN  ª(«M} ˆ} €5 ƒp‰W„ …^K€D —“#     /* Minimum size: at city range means city size */
  REQ_AI,           /* AI level of the player */
  REQ_TERRAINCLASS, /* More generic terrain type, currently "Land" or "Ocean"ern;  enum terrain_class terrainclass;    /* source generic terrain typeENDREP
DELTA 13046 53008 522
SVN  ƒ¶*ƒ·ˆC ÃY Ž Ãr› £ÑŒ Úiô8Ž pÏ:€u ¡ÒV€G ƒ!ô'€F ƒ#÷|€F ‚mûS€G …[þu€G ˆ‚…› A  CŒ …t‚Ž2€H „‚”\˜ .‚˜n€G ‡G‚¦Q€G ˜‚®M€H ”0‚Ç€A ¶‚Ûn˜ ¤'ƒ’nation_count()player_number(races_player)nation_groupnation_count()nations_iterate(nation) {

    if (!nation->is_available || nation->player) {
      continue;
    }

    EnableWindow(GetDlgItem(races_dlg, ID_RACESDLG_NATION_BASE + nation_index(nation)),
		 FALSE);

    changed = TRUE;
  } nations_iterate_end;game_find_unit_by_number(diplomat_id) &&
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     (game_find_city_by_number}

#define ID_SPY_LIST 100
game_find_unit_by_number(diplomat_id) && 
	     game_find_city_by_numbergame_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id)
      && game_find_unit_by_numbergame_find_unit_by_number(diplomat_id) && 
	     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && game_find_city_by_numbergame_find_unit_by_numberENDREP
DELTA 12957 1396 18578
SVN  ‚†‚† ˆS ˜ ý+ˆbgame_find_unit_by_numberENDREP
DELTA 13024 90043 1408
SVN  ¹-¹G ßJ ® RÌ? ÒKàB€k …G³fimprovement_name_translation(clipboard.value))game_find_unit_by_number(punit1->transported_by);
    const struct unit *ptrans2 = game_find_unit_by_numberENDREP
DELTA 13038 1716942 1095
SVN  º-º1
 —l • ¢0—}layer_number(pPlayer)ENDREP
DELTA 10731 715 485
SVN  °}°s ¡b €m ‚@¢n™ G  ‹¥yGtkTreeIter it;

  gtk_list_store_clear(store);

  players_iterate(pplayer) {
    city_list_iterate(pplayer-> players_iterate_end;
}

ENDREP
DELTA 13046 56060 2545
SVN  ýýK ò ¨ aõv£ qð{ ˆlô*game_find_city_by_number(game.info.greatGet the player city with this smallENDREP
DELTA 11187 357 78
SVN  Î\Ð5P‰d ˆ3 € Ž5‰(€u –#˜[… =¯€ ±:€ y³S° †µk€ƒ ƒ.½x€ …Â#€{ GÂ#† NŽ5 „-Ê/mem.h"
#include "support.h"

#include "game.h"
#include "map.h"
#include "packets.h"
#include "player.h"
#include "unit.h"
#include "unitlis || get_num_units_in_focus() == 0) {
    return;
  }

  no_player_cities = !(city_list_size(game.player_ptr->cities))j = 0ncities_total = 0;
    players_iterate(pplayer) {
      ncities_total += city_list_size(pplayer->cities);
    } players_iterate_end;players_iterate(pplayer) {
    if (!all_cities && player_number(pplayer) != game.info.player_idx) {
      continue;
    }
    city_list_iterate(pplayer-> city_list_iterate_end;
  } players_iterate_end; (ret->list_index != XAW_LIST_NONE) {
    struct city *pdestcity;
    if ((pdestcity = get_selected_city())) {
      bool can_airlift = FALSE;
      unit_list_iterate(get_units_in_focus(), punit) {
        if (unit_can_airlift_to(punit, pdestcity)) {
	  can_airlift = TRUE;
	  break;
	}
      } unit_list_iterate_end;

      center_tile_mapcanvas(pdestcity->tile);
      if (can_airlift (pdestcity) {
    unit_list_iterate(get_units_in_focus(), punit) {
      request_unit_airlift(punit, pdestcity);
    } unit_list_iterate_end;unit_list_iterate(get_units_in_focus(), punit) {
      send_goto_tile(punit, pdestcity->tile);
    } unit_list_iterate_end;cancelENDREP
DELTA 13027 29252 1405
SVN  „çf„è
"` ‚²4 ˜ ›q‚²C˜ ¨U‚ÎC˜ àZ‚÷'˜ V„Øgame_find_unit_by_numbergame_find_city_by_numbergame_find_city_by_numbergame_find_city_by_numberENDREP
DELTA 13027 30906 491
SVN  ƒ—ƒ–B?„O ´d ž ø8´~¸ R‚­4€b ƒ*‚¯€h Y‚³€D ‚/‚¶vƒ O‚¹5€Z œQ‚º{Ž ¿3‚×Tplayer_number(game.player_ptr)        Unit_type_id uti = utype_index(unit_type(punit))ti].active_count)++;
        if (punit->homecity) {
	  output_type_iterate(o) {
	    unitarray[utiUnit_type_id uti = utype_index(punittype);
      if (unitarray[uti].active_count > 0
	  || unitarray[utiuti].building_count,
		3, unitarray[uti].active_count,
		4, unitarray[uti].upkeep[O_SHIELD],
		5, unitarray[uti].upkeep[O_FOOD],
		6, unitarray[uti].upkeep[O_GOLD],
		7, TRUE,
		8, ((unitarray[utiutiuti].upkeep[o];	  
	} output_type_iterate_end;
	unittotals.building_count += unitarray[utiplayer_by_numbENDREP
DELTA 13046 60826 3380
SVN  ‚Õo‚Ö@Oƒ_ ¡P • E¡b• M£9• Œ¤˜ ±Y°;€  ‡mã€ šRëp˜ w‚†Q¾ Lš  7‚‰I˜ ”a‚™“ §x‚­wplayer_index(aplayer)player_index(aplayer)player_index(aplayer)game_find_unit_by_numbergame_find_unit_by_number(punit->ai.target);

    if (target) {
      target->ai.hunted &= ~(1 << player_index(unit_owner(punit))game_find_unit_by_number(punit->ai.target);

    assert(target != NULL);
    target->ai.hunted |= (1 << player_index(unit_owner(punit))game_find_unit_by_numbergame_find_unit_by_number(sanity) != NULL);
  }

  return alivegame_find_unit_by_numberernment_number(gov)ENDREP
DELTA 12771 1134 1504
SVN  ÝLÝx.j  Ž ~ ›D'£ [¬
˜ †6­x£ ƒ\´Mž r¸C€Q ”YÈsplayer_by_numbutype_by_numberplayer_number(selected_unit->owner)unit_type(selected_unit)player_number(selected_city->owner)player_number(selected_player)errain_number(tile.terrain),
			   tile.resource ? resource_number(tile.resource)ENDREP
DELTA 13131 0 3567
SVN  …ûh…ûA%‚6 ƒÕ{ ƒ „>ƒÖ#€ ƒƒÜW€U ¸ƒà¿ ãA„˜'intgovernment_interate(pGov) {

    if (pGov == game.government_when_anarchy) {
      continue;
    }

    if (can_change_to_government(game.player_ptr, pGov)) {
government_number(pGov)), pGov_Button);
      j++;

    }
  } government_iterate_end;player_number(races_player),
                                  ENDREP
DELTA 10537 184 7771
SVN  É	É`qƒ_ ; ˆ :ˆ µ;£ }ÅL† ‚"ÇP˜ "Ê† UË*† ƒoÍ• ŒGÐy½ Ý}€) bà?˜ Œþ0˜ ŠŠ@˜ ”A”U˜ „}©% M®  ˆ?°˜ '¸bhas_typehas_type
				  const struct player *pplayerplayergame_find_city_by_numberplayerplayerconst struct player *production.is_unit
      || !is_wonder(dest->production.valueproduction.value,
      shields_at_arrival);
  costwith = impr_buy_gold_cost(dest->production.value,
      shields_at_arrival + unit_build_shield_cost(unit_type(caravan)game_find_city_by_numbergame_find_city_by_numbergame_find_city_by_numbergame_find_city_by_number = caravan->owngame_find_city_by_numberENDREP
DELTA 12859 24690 737
SVN  ƒƒ’‚ˆ2 ™ ˆ ƒP™ˆ ƒ]œ^ˆ Žw :ˆ ˆ5¯0ˆ ^·d˜ ˆN¸Q [Å} ‚Â  [Å} ‚;Åˆ ‡kÇGˆ ƒÏ1€
 AÓ>½ ƒdä*€Q èU “÷eˆ ¥L‹ ˆ †>°Kˆ ™· XÐ@ˆ sÒˆ Ó	ˆ ƒÔˆ ‡×$ˆ ‡Þ4€l …æ)ˆ 7ë*ˆ Ìú`¿ ]‚Ç6 ‚-‚Ø ›#‚Û ‚öF ‰‚÷f€j ‚ƒG€L ƒ„¥ Yƒ…*€L ‚7ƒ‡)¥ …hƒ‰s…)ƒchas_typehas_typehas_typehas_typehas_typegame_find_city_by_numberhas_type_flag(punit, F_NONMILhas_type_flag(punit, F_DIPLOMAT)has_typehas_typegame_find_unit_by_number(punit->transported_by);

  return (unit_has_type_flag(punit, F_PARTIAL_INVIS)
	  || (transporter && unit_has_typehas_type_flag(punit, F_CITIES);
  bool is_add = unit_has_typeunit_type(punit)) > 0);
  new_pop = pcity->size + unit_pop_value(unit_type(punit)unit_type(punit)has_typehas_typehas_typeunit_class(punithas_typehas_typehas_typehas_typehas_typeclass_has_flag(pclass, UCF_CAN_FORTIFY)
	    && punit->activity != ACTIVITY_FORTIFIED
	    && !unit_has_typehas_typehas_typeclass_has_flag(utype_class(punittype), UCF_ZOC)
	  || utype_hasuunit_type(punit)unit_type(punit)unit_type(punit);
  struct unit_type *to_unittype = can_upgrade_unittype(pplayer,
						  unit_type(punit)utype_name_translation(from_unittype),
		utype_name_translation(to_unittype)utype_name_translation(from_unittype)utype_name_translation(from_unittype),
		utype_name_translation(to_unittype)utype_name_translation(from_unittype)utypeENDREP
DELTA 11495 6287 36
SVN  ŸŸ(? ‰T €? ”‹unit_type(punit) != NULL),						    \
   assert(punit->owner != NULL),					    \
   assert(&game.players[player_index(punit->owner)] == punit->owner),	    \
   assert(game_find_unit_by_numberENDREP
DELTA 13038 1858426 7488
SVN  ÝCý;‚— “F ž E—@€v l¿z E—@€ l¿zš E—@€R Zà €w E—@€ Zà • E—@€z Zà  8“Fˆ œx£ I¿€& Zà  „QÂ6Ÿ Zà  ‹Çu¨ ¾$€‚7 Zà ® ¾$€X Rà  œÕa€x #ò8½ }ì>€a a¿~ @÷.¡ ƒqù› ƒ,ý	½ Y–> -J› Ð5ƒ	ª E—@€| l¿zŸ E—@€% l¿z“ O© €O Zà €z E—@€{ Zà – E—@€z Pà  )Ó> †Ôj ‚>ÚxŠÝ7the first item of unit_types.
*****/
struct unit_type *unit_type_array_first(void)
{
  if (game.control.num_unit_types > 0) {
    return unit_types;the last item of unit_types.
*****/
const struct unit_type *unit_type_array_last(void)
{
  if (game.control.num_unit_types > 0) {
    return &unit_types[game.control.num_unit_types - 1];the number of unit types.
*****/
const Unit_type_id utype_count(void)
{
  return game.control.num_unit_typesthe unit type index.

  Currently same as utype_number(), paired with utype_count()
  indicates use as an array index.
*****/
const Unit_type_id utype_index(const struct unit_type *punittype)
{
  assert(punittype);
  return punittype - unit_typesthe unit type index.
*****/
const Unit_type_id utype_number(const struct unit_type *punittype)
{
  assert(punittype);
  return punittype->indexclass_ha..translated = ('\0' == punittype->name.vernacular[0])
				 ? punittype->name.vernacular
				 : Q_(punittype->name.vernacular);
  }
  return punittype->name.translatedQn_(punittype->name.vernacular) the (translated) name of the unit classclass_name_translation(struct unit_class *pclass)
{
  if (NULL == pclass->name.translated) {
    /* delayed (unified) translation */
    pclass->name.translated = ('\0' == pclass->name.vernacular[0])
			      ? pclass->name.vernacular
			      : Q_(pclass->name.vernacular);
  }
  return pclass->name.translatedthe (untranslated) rule name of the unit classclass_rule_name(const struct unit_class *pclass)
{
  return Qn_(pclass->name.vernacular)const char *qname = Qn_(name);

  unit_type_iterate(punittype) {
    if (0 == mystrcasecmp(utype_rule_name(punittype), qReturns the unit class that has the given (untranslated) ruleclass *find_unit_class_by_rule_name(const char *s)
{
  const char *qs = Qn_(s);

  unit_class_iterate(pclass) {
    if (0 == mystrcasecmp(uclass_rule_name(pclass), qs)) {
      return pclass;
    }
  } unit_class_iterate_end;find_unit_class_flag_by_rule_namefind_unit_flag_by_rule_nameunit_flag_rule_name(enum unit_flag_id id)
{
  return flag_namfind_unit_role_by_rule_name
  Return the first item of unit_classes.
*****/
struct unit_class *unit_class_array_first(void)
{
  if (game.control.num_unit_classes > 0) {
    return unit_classes;the last item of unit_classes.
*****/
const struct unit_class *unit_class_array_last(void)
{
  if (game.control.num_unit_classes > 0) {
    return &unit_classes[game.control.num_unit_classes - 1];the unit_class counconst Unit_Class_id uclass_count(void)
{
  return game.control.num_unit_classesthe unit_class index.

  Currently same as uclass_number(), paired with uclass_count()
  indicates use as an array index.
*****/
const Unit_Class_id uclass_index(const struct unit_class *pclass)
{
  assert(pclass);
  return pclass - unit_classesthe unit_class index.
*****/
const Unit_Class_id uclass_number(const struct unit_class *pclass)
{
  assert(pclass);
  return pclass->item_numberUnit_Class_idtialize unit_tem_numberENDREP
DELTA 8388 500 59
SVN  žž#‚* Š € L‹?€ –  ŽListBox_ResetContent(GetDlgItem(finddialog,ID_FINDCITY_LIST));

  players_iterate(pplayer) {
    city_list_iterate(pplayer->cities, pcity) {
      int id =   ListBox_SetItemData(GetDlgItem(finddialog,ID_FINDCITY_LIST),id,player_number(pplayer));
    } city_list_iterate_end;
  } players_iterate_endENDREP
DELTA 13125 1736 3509
SVN  ƒØ!ƒØD0d ‚èV Ž “?‚èh ‡o‚ü/€| „'ƒ…š ’|ƒ‰N˜ ‚ƒœY˜ ¹ƒŸplayer_count()name_translationlayer_index(pplayer)], NULL);
      gtk_tree_store_set(conn_model, &it[player_index(pplayer)],
			 0, player_number(pplayer)layer_index(pconn->player)game_find_unit_by_numbergame_find_unit_by_numberENDREP
DELTA 13046 66135 73
SVN  ‚×B‚Ù5ˆ} ’S €W Pãy ƒ<“h€W Pãy ƒ6˜9€W Gãy ƒlœ{€U „¡*€W Qãy‡ v“o …§>€W ãy  ®1˜ ”bÎR€W „Aãy€W „sè€` „Qî@€W ÊióV€G ·>¾t€U ·öu€U ©‚®@game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_numbergame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_numbergame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_numbergame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
     && game_find_city_by_numbergame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_numberABOTAGEgame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_numbergame_find_unit_by_numbergame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_numbergame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_numbergame_find_unit_by_number(pDiplomat_Dlg->diplomat_id))
        && (pcity=game_find_city_by_numbergame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_unit_by_numbergame_find_unit_by_number(diplomat_id)
      && game_find_city_by_numbergame_find_unit_by_number(pIncite_Dlg->diplomat_id)
       && game_find_city_by_numbergame_find_unit_by_number(pIncite_Dlg->diplomat_id)
       && game_find_city_by_numberENDREP
DELTA 11212 0 2319
SVN  ¨¨\ ’] €\ ”Z“'game_find_city_by_number(caravan_city_id);
  struct unit* caravan = game_find_unit_by_numberENDREP
DELTA 12629 3302 438
SVN  Ù(ãFZŸ Š[ €‚\ LŒ,€ BŽˆ †|R¼ ‰;–`¸ ’ ³ ƒ ³€{ N·@ ƒg¸ w»t€‹< ‚xÏ€†% ƒ@Æ	 ‚Y¿K£ ‚/Ìe€‡CAN_FORTIFY,        /* Can fortify on land squares */
  UCF_LAST
};

BV_DEFINE(bv_unit_classes, UCL_LAST);
BV_DEFINE(bv_unit_class_flags, UCF_LAST);

enum hut_behavior { HUT_NORMAL, HUT_NOTHING, HUT_FRIGHTEN };

enum move_level { MOVE_NONE, MOVE_PARTIAL, MOVE_FULL };

struct unit_class {
  Unit_Class_id item_number;
  struct name_translation nameenum hut_behavior hut_behavior;
  bv_unit_class_flags flags;

  struct {
    enum move_level land_move;
    enum move_level sea_move;
  } aihas_typeNo hardcoded behavior, rulesets use for UnitFlag requirementBARBARIAN_ONLY,   /* Only barbarians can build this unitUnit_type_id index;
  struct name_translation name;
  Tech_type_id tech_requirement;
  Impr_type_id impr_requirement;
  struct government *gov_requirement; /* may be NULL */
u     && (utype_by_number((ut)->index) == (ut))))

/* General unit and unit type (matched) routines */
const Unit_type_id utype_count(void);
const Unit_type_id utype_index(const struct unit_type *punittype);
const Unit_type_id utype_number(const struct unit_type *punittype);

struct unit_type *unit_type(const struct unit *punit);
struct unit_type *utype_by_number(const Unit_type_id id);

struct unit_type *find_unit_type_by_rule_name(const char *name);
struct unit_type *find_unit_type_by_translated_name(const char *name);

const char *unit_rule_name(const struct unit *punit);
const char *utype_rule_name(const struct unit_type *punittype);

const char *unit_name_translation(struct unit *punit);
const char *utype_name_translation(struct unit_type *punittype);

const char *utype_values_string(const struct unit_type *punittype);
const char *utype_values_translation(struct unit_type *punittype);

/* General unit type flag and role routines */
bool unit_has_type_flag(const struct unit *punit, enum unit_flag_id flag);
bool utype_has_flag(const struct unit_type *punittype, int flag);

bool unit_has_type_role(const struct unit *punit, enum unit_role_id role);
bool utype_has_role(const struct unit_type *punittype, int role);

enum unit_flag_id find_unit_flag_by_rule_name(const char *s);
enum unit_role_id find_unit_role_by_rule_name(const char *s);

const char *unit_flag_rule_name(enum unit_flag_id id);

/* Functions to operate on various flag and roles. */const char *role_units_translations(int flag);

/* General unit class routines */
const Unit_Class_id uclass_count(void);
const Unit_Class_id uclass_index(const struct unit_class *pclass);
const Unit_Class_id uclass_number(const struct unit_class *pclass);

struct unit_class *unit_class(const struct unit *punit);
struct unit_class *utype_class(const struct unit_type *punittype);
struct unit_class *uclass_by_number(const Unit_Class_id id);

struct unit_class *find_unit_class_by_rule_name(const char *s);

const char *uclass_rule_name(const struct unit_class *pclass);
const char *uclass_name_translation(struct unit_class *pclass);

bool uclass_has_flag(const struct unit_class *punitclass, int flag);
enum unit_class_flag_id find_unit_class_flag_by_rule_name(const char *s);

/* Ancillary routines *//* player related unit functions *//* Initialization and iteration */
void unit_types_init(void);
void unit_types_free(void);

struct unit_type *unit_type_array_first(void);
const struct unit_type *unit_type_array_last(void);

#define unit_type_iterate(_p)						\
{									\
  struct unit_type *_p = unit_type_array_first();			\
  if (NULL != _p) {							\
    for (; _p <= unit_type_array_last(); _p++) {

#define unit_type_iterate_end						\
    }									\
  }									\
}

/* Initialization and iteration */
void unit_classes_init(void);

struct unit_class *unit_class_array_first(void);
const struct unit_class *unit_class_array_last(void);

#define unit_class_iterate(_p)						\
{									\
  struct unit_class *_p = unit_class_array_first();			\
  if (NULL != _p) {							\
    for (; _p <= unit_class_array_last(); _p++) {

#define unit_class_iterate_end						\
    }									\
  }									\
}

#endif  /* FC__UNITTYPE_H */
ENDREP
DELTA 10866 2330 272
SVN  ¬¶v? ‡ ¬ G £ OŠ  zªJ€b G ¥ L‰€q G €D KŠ €
 G ¡ L‰€@ G €~ P‰€f G ž P‰€l G ´ aŠ €} G  ‚y€ ˆ”D€n ‚@d€M G  ¡:‰ m¢Y— G €Y ]‰€‚r 9 ‚¤0€ K§E
static struct team teams[MAX_NUM_TEAMS];


******
  Initializes team structuretem_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/
const 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 indexconst Team_type_id team_index(const struct team *pteam)
{
  assert(pteam);
  return pteam - teams;
}

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

******
  Return the team pointer for the given indexby_number(const Team_type_id id)
{
  if (id < 0 || id >= game.info.num_teams) {
    return NULL;
  }
  return &teams[id];
}

);

  freelog(LOG_DEBUG, "Adding player %d/%s to team %s.",
	  player_number(pplayer), pplayer->username,
	  team_rule_name(pteam)layer_number(pplayer),
	    pplayer->username,
	    team_rule_name(pplayer->team),
	    pplayer->team->playersname_translation(struct team *pteam)
{
  return _(team_rule_name(pteam));
}

rule_nameteam_index(pteam)];
}

******
 Does a linear search of game.info.team_names_orig[]
 Returns NULL when none matchfind_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)_iterate here since it skips empty teams. */
  for (i = 0; i < game.info.num_teams; i++) {
    struct team *pteam = team_by_numberENDREP
DELTA 13038 1867831 517
SVN  ðrñ‚" ·i • Ù`·s€L ¥:“#€A ·`¹_name_translation(to)Unit_type_id uti = utype_index(unit_type(punit));
      (unitarray[uti].active_count)++;
      if (punit->homecity) {
        unitarray[uti].upkeep_shield += punit->upkeep[O_SHIELD];
        unitarray[utiplayer_by_number(packet->id[i])),
                 player_by_numbENDREP
DELTA 10502 3306 1045
SVN  JF
Š? …j €Š?-include "tech.h"

#define MAX_NUM_TEAMS (MAX_NUM_PLAYERS + MAX_NUM_BARBARIANS)

struct team {
  Team_type_id item_number;
  int players; /* # of players on the team */
  
  struct player_research research;
};

/* General team accessor functions. */
const Team_type_id team_count(void);
const Team_type_id team_index(const struct team *pteam);
const Team_type_id team_number(const struct team *pteam);

struct team *team_by_number(const Team_type_id id);
struct team *find_team_by_rule_name(const char *team_name);

const char *team_rule_name(const struct team *pteam);
const char *team_name_translation(struct team *pteam);

/* Ancillary routines */
void team_add_player(struct player *pplayer, struct team *pteam);
void team_remove_player(struct player *pplayer);

struct team *find_empty_team(void);

/* Initialization and iteration */
void teams_init(void);

struct team *team_array_first(void);
const struct team *team_array_last(void);

/* This is different than other iterators.  It always does the entire
 * list, but skips unused entries.
 */
#define team_iterate(_p)						\
{									\
  struct team *_p = team_array_first();					\
  if (NULL != _p) {							\
    for (; _p <= team_array_last(); _p++) {				\
      if (_p->players == 0) {						\
	continue;							\
      }

#define team_iterate_end						\
    }									\
  }									ENDREP
DELTA 13038 1868761 1708
SVN  ÿnt +  @…@ –w€[ ¦f™ Ù¨player_index(barbarians)].type = DS_WAR;
      barbarians->diplstates[player_index(pplayer)player_number(barbarians)ENDREP
DELTA 13038 1874768 1489
SVN  ¾½q+ƒ ˜) š g˜O€P ˆS›º a¤8€l R§€l „A©<• 	­} = 0, h = 0, n = 0, w = 0,while(!h && i < player_count()) {
    h = city_list_size(player_by_number(i++)->players_iterate(pPlayer) {
    city_list_iterate(pPlayer->!player_owns_city(owner, pCity)) {
        pLogo = get_nation_flag_surface(nation_of_player(city_owner(pCity!player_owns_city(owner, pCity)) {
        set_wflag(pBuf, WF_FREE_THEME);
        owner = city_owner(pCity) players_iterate_end;ENDREP
DELTA 13095 27452 27606
SVN  †  †  ‚CŒI ‡  ‡ ë7†r˜ W÷~ Ždó ‡‚y ‹‚‰ „?‚• ‚™_ ƒi‚©{ T‚­k —t‚¯F“ „I‚ÇC ‡‚Ì ÀA‚Ó6€0 )ƒ“V— zƒ•˜ Kƒâ:€Q ƒ—P™ ƒ˜n ˜ƒši€A ¬|ƒ´)“ ƒá.– Nƒâ5€Q ŠƒãJ’ ‹<ƒíQ“ aƒù¾ …F„‰€ N‚ø6 „i„€@ –„• Oƒ‘< „«r¹ „­. …„®m• ]ù5 Ž„´` ŒL„Â{— ŠI„ÏV …v„Ú9€i À6„á3• o…¡iŽ ‘…¢qª …O…³{ Ôh…¹] …H†ŽJŽ ƒ†”œ ‚H†—=effectsuclass_index(punitclass)type_index(u)type_index(u)type_index(u)class_index(ut)type_index(u)type_index(u)type_index(u)uclass_index(class)type_index(u)type_index(u)if (nval > MAX_NUM_TERRAINS) {
    freelog(LOG_FATAL, "\"%s\": ruleset has too many terrains (%d, max %d)",
            filename,
            nval,
            MAX_NUM_TERRAINSterrain_index(pterrain)/* resource names */

  if (nval > MAX_NUM_RESOURCES) {
    freelog(LOG_FATAL, "\"%s\": ruleset has too many resources (%d, max %d)",
            filename,
            nval,
            MAX_NUM_RESOURCES);
    exit(EXIT_FAILURE);
  }resource_index(presource)/* base names *//* terrain details */

  tsec = secfile_get_secnames_prefix(file, TERRAIN_SECTION_PREFIX, &nval);

  terrain_type_iterate(pterrain) {
    char **slist;
    const int i = terrain_index(pterrain)uclass_index(class)/* resource details */
  resource_type_iterate(presource) {
    const int i = resource_index(presource)/* base details */uclass_index(class)
                                    sec[government_index(gov)overnment_number(game.government_when_anarchy);

  /* easy ones: */
  government_iterate(g) {
    const int i = government_index(g);struct ruler_title *title;
    const int i = government_index(g)jnations_iterate(pl) {
    const int i = nation_index(pl); nations_iterate_end;terrain_count()terrain_index(pterrain)nations_iterate(pl) {
    const int i = nation_index(pl);
    char tmp[200] = "\0";
    char *barb_type;
 nations_iterate_end;nation_count()  game.control.num_specialist_types = nvaluclass_number(c)type_number(u)class_number(utype_class(u))†   ‡{W‹}€† Ÿp ¾ „3 :“ 0¤x° ?¦K® =¨(´ ‡Eª¦ Ž\±}– …8Às€n …Ç€ uÍ*µ †wÏ{¥ @×€e hœ  §+Ùuv_requirement = u->gov_requirement
                             ? government_number(u->gov_requirement) : -1;
    packet.vision_radius_sq = u->vision_radius_sq;
    packet.transport_capacity = u->transport_capacity;
    packet.hp = u->hp;
    packet.firepower = u->firepower;
    packet.obsoleted_by = u->obsoleted_by ? u->obsoleted_by->index : -1;
    packet.fuel = u->fuel;
    packet.flags = u->flags;
    packet.roles = u->roles;
    packet.happy_cost = u->happy_cost;
    output_type_iterate(o) {
      packet.upkeep[o] = u->upkeep[o];
    } output_type_iterate_end;
    packet.paratroopers_range = u->paratroopers_range;
    packet.paratroopers_mr_req = u->paratroopers_mr_req;
    packet.paratroopers_mr_sub = u->paratroopers_mr_sub;
    packet.bombard_rate = u->bombard_rate;
    packet.carstruct resource **r;

    packet.id = terrain_number(pterrain)resource_number(*r)terrain_number(pterrain->irrigation_result)
				terrain_number(pterrain->mining_result)
			   terrain_number(pterrain->transform_result)
			      packet.id = resource_number(presource)= government_number(g)overnment_number(g);
      title.id = j;
      title.nation = p_title->nation ? nation_number(p_title->nation);

  groups_packet.ngroups = nation_group_count();
  nation_groups_iterate(pgroup) {
    sz_strlcpy(groups_packet.groups[nation_group_index(pgroup)nations_iterate(n) {
    packet.id = nation_number(n)government_number(n->init_government)ation_group_number(n->groups[i]);
     }

    lsend_packet_ruleset_nation(dest, &packet);
  } nationsENDREP
DELTA 11249 15162 1530
SVN  ³>²Ro ‘9 € G  ‚w“y€h ›l—Rplayer_index(aplayer)].contact_turns_left > 0
              || aplayer->diplstates[player_index(pplayer)].contact_turns_left > 0));
}

player_index(aplayer)].contact_turns_left > 0
              || aplayer->diplstates[player_index(pplayer)ENDREP
DELTA 10534 381 834
SVN  …É…É{Uƒ š €G ‡,š?€g _~ ²£€s ‚‘$Õ~’ ‘c‚ç.ˆ !‚ùˆ ƒ‚ú0ˆ ‚†)‚ý@’ …ƒu ”=…‘” O…§  ¢d…¦'
		    pcity->name,
		    nation_name_translation(nation_of_city(pcity)
		    utype_name_translation(ptype),
		    nation_name_translation(nation_of_unit(punit)),
		    cn);
game_find_unit_by_number((packed >> 8)-1)):NULL)
#define UNPACK_CITY(packed) ((packed>>8)?(game_find_city_by_number_translation(punithas_typehas_typehas_type_translation(punitunit_type(punit)_translation(punit))ENDREP
DELTA 13046 92584 1060
SVN  †  †  #q ”6 €B ”V˜ S•~‚ n—g‚ f˜k‚ ††™g‘Unit_type_id uti = utype_index(unit_type(pUnit));
    (entries[utigame_find_city_by_numbertititi*********
  Popup†  ®®A ª€A ƒ=ªZplayer_by_number(packet->id[i])),
                 player_by_numbENDREP
DELTA 13024 140008 230
SVN  ‚³P‚´ ÑB “ š7ÑO€j ¦Vì<˜  /‚“!overnment_by_numberovernment_number(g),
		   government_name_translation(g));
	my_enable_menu(menu, id + government_number(g)game_find_unit_by_numberENDREP
DELTA 12881 2524 602
SVN  ƒõ`ƒø?‡D ÷
 €J Ä÷$• ”/»M Ð‹ †UÑ€E ·×}˜ Œ&‚‹ Ž‚›E‹ 3‚©\• }‚«#« „‚¹9˜ ¶i‚½J€" ‚`‚õP  ƒ1‚øV¯ Žo‚ü7 ‚/ƒ‹1 ƒkˆ `ƒŽm€O ‡ƒp >ƒ˜ Ž1ƒ™\ ˆVƒ¨( …"ƒ±€| ‚rƒ·ž  ƒº¦ ”RƒÚ0 †Sƒïimprovement_rule_name(pimpr->index),
	       bulbs,
	       turns,
	      improvement_by_numberovernment_of_ovement_hasimprovement_rule_name(pimpr->index),
               v,
              game_find_city_by_numberovement_hasovement_hasimprovement_by_numberimprovement_rule_name(id),
                game_find_city_by_numberis_unit_choice_type(pcity->ai.choice.type)
	     ? utype_rule_name(utype_by_number(pcity->ai.choice.choice))
	     : improvement_rule_name(pcity->ai.choice.choicenation_plural_for_player(pplayernation_plural_translation(nation_of_city(pcity)unit_type(punit)unit_type(punit)has_typerule_name(punit),
                 utype_rule_name(punittype),
                type_role(punitrule_name(punittype_has_flag(utype_by_numberutype_by_numbertype_rule_name(utype_by_number(bestchoice.choice))
               : improvement_rule_name(bestchoice.choice),
              type_rule_name(utype_by_number
		       improvement_name_translationunit_type(punit)ENDREP
DELTA 13046 94774 1102
SVN  ññ
 ñ ž ÿlñ!terrain_number(ptile->terrain)ENDREP
DELTA 13046 95901 568
SVN  ‚éD‚è‡Y ¯X Ž Ð¯q˜ àS€Ž \àqŽ ±JáfŽ …‚“I€ ‚šŽ ‡‚›2Ž ‚¢j¸ ‚?‚¥€h 
‚¨,… y‚©8€ C¾  P  „%‚¬6£ ‚	‚±« ƒP‚³*€H †:‚·6€ 0‚¿€j ‰,‚ÍE› ’<‚×nation_count()game_find_unit_by_numbernation_count()nation_count()nation_count()nation_count(), sizeof(int));
  for (i = 0; i < nation_count(); i++) {
    nation_idx_to_race_toggle[i] = -1;
  }
  for (i = 0; i < nation_count()nation_count()nation_count()nations_iterate(nation) {
    int selected_nation = -1;

	    selected_nation,
	    nation_number(nation),
	    nation_rule_name(nation));

    if (nation_indexindexindex]], FALSE);
    }
  } nations_iterate_end;
}

/* We store this value locally in case it changes globally. */
static int local_nation_count;local_nation_count = nation_count()local_nation_count * j + nation_index(race)local_nation_count;
  int race = XTPOINTER_TO_INT(client_data) - (local_nation_count() == 1) {
    return 0;
  }

  if(!(dp=XawToggleGetCurrent(races_toggles[0])))
    return -1;

  for(i = 0; i < nation_count()struct nation_type *first_nation = *(struct nation_type **)first;
  struct nation_type *second_nation = *(player_number(races_player)ENDREP
DELTA 12525 7801 2818
SVN  €pš+&–( …{ † —H…p¨ G‰@€v Uˆ?€ G‰@€ƒQ Y¹|¥ G‰@€ Uˆ? I8€M Uˆ?¶ G‰@€ƒ( Uˆ?¬ G‰@€‚X Uˆ? ˆ¡ "©%€x ‚s¹9€A ‚{¼) *¿z :Áx ºU€‚	 Uˆ? ±Ã2“ †WôD¨ Wû/€ Fü}˜ @þS˜ M€#log.h"Returns base at tile or NULL if no base
*****/
struct base_type *tile_get_base(const struct tile *ptile)
{
  return base_type_get_from_special(ptile->special)Adds base to tile.
  FIXME: Currently this asserts that tile contains no old base.
         Instead should remove old base and return bool indicating that.
*****/
void tile_add_base(struct tile *ptile, const struct base_type *pbase)
{
  assert(pbase != NULL);

  if (pbase->id == BASE_FORTRESS) {
    assert(!tile_has_special(ptile, S_AIRBASE));
    tile_set_special(ptile, S_FORTRESS);
  } else if (pbase->id == BASE_AIRBASE) {
    assert(!tile_has_special(ptile, S_FORTRESS));
    tile_set_special(ptile, S_AIRBASE);
  } else {
    freelog(LOG_ERROR, "Impossible base type %d in tile_set_base()",
            pbase->id)Removes base from tile if such exist
*****/
void tile_remove_base(struct tile *ptile)
{
  tile_clear_special(ptile, S_FORTRESS);
  tile_clear_special(ptile, S_AIRBASE)struct base_type *pbase;

  pbase = tile_get_base(ptile);

  if (pbase != NULL) {
    /* Some base at tile, check its flags */
    return base_flag(pbase, flag);
  }

  /* No base at tile */
  return FALSECheck if tile contains base providing effect for unit
*****/
bool tile_has_base_flag_for_unit(const struct tile *ptile,
                                 const struct unit_type *punittype,
                                 enum base_flag_id flag)
{
  struct base_type *pbase;

  pbase = tile_get_base(ptile);

  if (pbase != NULL) {
    /* Some base at tile, check its flags */
    return base_flag_affects_unit(punittype, pbase, flag);
  }

  /* No base at tile */
  return FALSECheck if tile contains base native for unit
*****/
bool tile_has_native_base(const struct tile *ptile,
                          const struct unit_type *punittype)
{
  struct base_type *pbase;

  pbase = tile_get_base(ptile);

  if (pbase != NULL) {
    /* Some base at tile, check if it's native */
    return is_native_base(punittype, pbase);
  }

  /* No base at tile */
  return FALSElayer_index(pplayer))) {
    return TILE_UNKNOWN;
  } else if (!BV_ISSET(ptile->tile_seen[V_MAIN], player_index(pplayer)/* Make sure nobody uses old activities */
  assert(activity != ACTIVITY_FORTRESS && activity != ACTIVITY_AIRBASE);

  /* ACTIVITY_BASE not handled here */
  assert(activity != ACTIVITY_BASE);
base_time(const struct tile *ptile,
                            enum base_type_id base)
{
  if (base == BASE_AIRBASE) {
    return ptile->terrain->fortress_time * ACTIVITY_FACTOR;
  } else {
    return ptile->terrain->airbase_time * ACTIVITY_FACTOR;
  }

  return 0case ACTIVITY_BASE:terrain_name_translation(ptile->terrain)special_name_translation(S_RIVER));
  }

  if (ptile->resource) {
    cat_snprintf(s, sizeof(s), " (%s)", resource_name_translation(ptile->resource)special_name_translationspecial_name_translationENDREP
DELTA 13046 98426 549
SVN  ‚½g‚½p ú< ˜ ÃúKgame_find_city_by_numberENDREP
DELTA 13046 99491 70
SVN  ÏZÑ)d†& –+ €A Œ–Z€G pÏ1‚ N² ¥c€H ƒQ§*€H †4«1€H ƒ?²€G “M¶€G „kÊ€G ­Ï1˜ Šü_€G a‡€A ŽM—'€O ©)¦1game_find_unit_by_number(diplomat_id) && game_find_unit_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_number-1game_find_unit_by_number(diplomat_id) && 
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numbergame_find_city_by_numbergame_find_unit_by_number(diplomat_id) &&
     (game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && game_find_city_by_numbergame_find_unit_by_number(diplomat_id))
      && (pcity=game_find_city_by_numberENDREP
DELTA 12058 0 1230
SVN  ÙqÚ% e ˜ „tˆ ‚” †l–(€G ¼6;game_find_city_by_numberhas_typetype_has_flag(utype_by_numbertype_rule_name(unit_type),
             wonder_city->name,
            ENDREP
DELTA 13120 4966 42
SVN  £)¿rI‘* Š@ € G ³ Pí@ 8€q T—  ‚i¬|¤ Lí@€r ^¶:£ Lí@€ ^¶:  Lí@€Q P–  Lí@€s P–€ Lí@€| P–› Lí@€{ U– -… „‘;† ‹e•J ‹&¡Q¥ Lí@€v ^¶:¤ Lí@€ ^¶:œ Lí@€T P–€ Lí@€ P–œ Lí@€ U– $¯j† ò±\
  assert((pterrain)->item_number >= 0					\
	 && (pterrain)->item_number < terrain_count()			\
	 && &civ_terrains[terrain_index(pterrain)] == (pterrain))

******
  Initialize terrain and resource structurestem_number = i;
  }
  for (i = 0; i < ARRAY_SIZE(civ_resources); i++) {
    civ_resources[i].item_number = i;
  }
  Return the first item of terrains/
struct terrain *terrain_array_first(void)
{
  if (game.control.terrain_count > 0) {
    return civ_terrains;
  }
  Return the last item of terrains/
const struct terrain *terrain_array_last(void)
{
  if (game.control.terrain_count > 0) {
    return &civ_terrains[game.control.terrain_count - 1];
  }
  Return the number of terrains/
const Terrain_type_id terrain_count(void)
{
  return game.control.terrain_count
  Return the terrain identifier/
const 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/
const Terrain_type_id terrain_index(const struct terrain *pterrain)
{
  assert(pterrain);
  return pterrain - civ_terrains
  Return the terrain index/
const Terrain_type_id terrain_number(const struct terrain *pterrain)
{
  assert(pterrain);
  return pterrain->item_numberfind_const 
  Return the first item of resources/
struct resource *resource_array_first(void)
{
  if (game.control.resource_count > 0) {
    return civ_resources;
  }
  Return the last item of resources/
const struct resource *resource_array_last(void)
{
  if (game.control.resource_count > 0) {
    return &civ_resources[game.control.resource_count - 1];
  }
  Return the resource count/
const Resource_type_id resource_count(void)
{
  return game.control.resource_count
  Return the resource index.

  Currently same as resource_number(), paired with resource_count()
  indicates use as an array index/
const Resource_type_id resource_index(const struct resource *presource)
{
  assert(presource);
  return presource - civ_resources
  Return the resource index/
const Resource_type_id resource_number(const struct resource *presource)
{
  assert(presource);
  return presource->item_numberconst ENDREP
id: 10.0.r13133/207538
type: file
pred: 10.0.r13027/75123
count: 159
text: 13133 92305 45 12595 2d76e17336875dbee5256a16d563e432
props: 10915 6829 112 0 b6ae571f94553e8ceec7deccc8b56fc9
cpath: /trunk/server/cityhand.c
copyroot: 0 /

id: 2mg.0.r13133/207771
type: file
pred: 2mg.0.r13120/5281
count: 39
text: 13133 65027 415 67539 bac9eb53a67e52b3e64368b1eb995b80
props: 10829 1266 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/server/generator/mapgen.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 21
file 2mf.0.r8249/8781
K 12
height_map.c
V 22
file 2mj.0.r11178/5179
K 12
height_map.h
V 22
file 2mk.0.r8546/16917
K 8
mapgen.c
V 24
file 2mg.0.r13133/207771
K 8
mapgen.h
V 22
file 2mh.0.r12456/2830
K 17
mapgen_topology.c
V 21
file 2ml.0.r9904/3398
K 17
mapgen_topology.h
V 22
file 2mm.0.r10181/3103
K 10
startpos.c
V 22
file 2mt.0.r13120/5039
K 10
startpos.h
V 22
file 2mu.0.r12456/2354
K 17
temperature_map.c
V 22
file 2mn.0.r9051/10474
K 17
temperature_map.h
V 22
file 2mo.0.r10181/2372
K 11
utilities.c
V 23
file 2mp.0.r10724/13581
K 11
utilities.h
V 23
file 2mq.0.r10304/29953
END
ENDREP
id: 2me.0.r13133/208633
type: dir
pred: 2me.0.r13120/6142
count: 62
text: 13133 208013 607 607 f8ae97525c8f21320eb384f8d42f932b
props: 11108 4081 68 0 445aae39c72ff2e5199436fb06040160
cpath: /trunk/server/generator
copyroot: 0 /

id: 2eg.0.r13133/208863
type: file
pred: 2eg.0.r11432/48
count: 34
text: 13133 21414 1152 17869 5a71cdc19354ab21dccc3b8812c0cecc
props: 11057 11773 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/server/score.c
copyroot: 0 /

id: vg.0.r13133/209094
type: file
pred: vg.0.r13120/6371
count: 343
text: 13133 110965 750 62995 cef65e04b4fb976551c9bcd5b77f2d83
props: 11057 12128 112 0 85dbe778568e34751643d476c23a0d7c
cpath: /trunk/server/srv_main.c
copyroot: 0 /

id: 320.0.r13133/209329
type: file
pred: 320.0.r13113/14678
count: 31
text: 13133 124922 103 14645 e3196f47f6d211683531077604851adc
props: 11091 295 111 0 4b4193808cb95e702a5e5065e4345324
cpath: /trunk/server/scripting/api.pkg
copyroot: 0 /

id: 321.0.r13133/209571
type: file
pred: 321.0.r13046/108284
count: 17
text: 13133 79561 48 5995 afc54a0d3d1208fbaf36c4e525fa1325
props: 10755 32341 110 0 a3ee73c7ed0bd397f9f2fedc7793a5b7
cpath: /trunk/server/scripting/api_find.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 24
file 31z.0.r13002/337245
K 7
api.pkg
V 24
file 320.0.r13133/209329
K 13
api_actions.c
V 23
file 32c.0.r13113/14916
K 13
api_actions.h
V 23
file 32d.0.r13113/14192
K 10
api_find.c
V 24
file 321.0.r13133/209571
K 10
api_find.h
V 22
file 322.0.r10477/3226
K 10
api_intl.c
V 23
file 323.0.r10369/19380
K 10
api_intl.h
V 23
file 324.0.r10369/20751
K 13
api_methods.c
V 23
file 33d.0.r13113/15160
K 13
api_methods.h
V 23
file 33e.0.r13113/14434
K 12
api_notify.c
V 22
file 325.0.r10928/4233
K 12
api_notify.h
V 22
file 326.0.r10928/4596
K 11
api_types.h
V 23
file 327.0.r10702/16760
K 15
api_utilities.c
V 22
file 32e.0.r10404/2599
K 15
api_utilities.h
V 22
file 32f.0.r10404/3322
K 8
script.c
V 22
file 328.0.r13088/4286
K 8
script.h
V 22
file 329.0.r10460/1603
K 15
script_signal.c
V 21
file 32a.0.r12805/145
K 15
script_signal.h
V 21
file 32b.0.r12805/385
END
ENDREP
id: 31x.0.r13133/210708
type: dir
pred: 31x.0.r13113/16295
count: 64
text: 13133 209816 879 879 57f3472b3279c5ec6759e512fce9ac54
props: 11108 4390 88 0 1e9d0e3735a93cd0fae3d0e1df53b911
cpath: /trunk/server/scripting
copyroot: 0 /

id: 2dw.0.r13133/210939
type: file
pred: 2dw.0.r11847/298
count: 64
text: 13133 51449 9519 17150 f4131d0c6d380030b3c38d809f2b8611
props: 11086 310 111 0 e5ad8d36ef6bfd356bb06d6f3ece066f
cpath: /trunk/server/connecthand.c
copyroot: 0 /

id: 4g.0.r13133/211175
type: file
pred: 4g.0.r13093/1843
count: 376
text: 13133 61403 2593 74241 57945d4988cb0318aeebf2e0498115ac
props: 10971 452 112 0 14688860b403b675ea6c3d1b6f5d2330
cpath: /trunk/server/citytools.c
copyroot: 0 /

id: 2m0.0.r13133/211409
type: file
pred: 2m0.0.r12506/8548
count: 41
text: 13133 3530 38 44751 cb518799d6144940854fa3b365c5f3f4
props: 11041 15094 111 0 1c266b4433d829481714f1852322e965
cpath: /trunk/server/settings.c
copyroot: 0 /

id: 7s.0.r13133/211642
type: file
pred: 7s.0.r13024/177137
count: 255
text: 13133 123734 49 47828 fe75eb24b1f1ea0e363fbe79d5235ed4
props: 10755 35320 112 0 af1f871c1c0b4609250c3dc553658fcc
cpath: /trunk/server/settlers.c
copyroot: 0 /

id: vi.0.r13133/211878
type: file
pred: vi.0.r13038/2016706
count: 81
text: 13133 127308 701 32169 bc4868f487b01f8d2d1133f36c7502f8
props: 11057 12485 111 0 28afbdca13063c4ab06acfd332f60a0d
cpath: /trunk/server/report.c
copyroot: 0 /

id: 4i.0.r13133/212113
type: file
pred: 4i.0.r13046/109901
count: 356
text: 13133 9855 1347 56791 e36673c1f3164c5683eeaa49ebba3470
props: 10955 1971 112 0 e17e3e5087e98ab1d6f041bdc6ae85ee
cpath: /trunk/server/cityturn.c
copyroot: 0 /

id: lw.0.r13133/212348
type: file
pred: lw.0.r13113/16523
count: 114
text: 13133 192737 154 16366 b3e3a37f6391852996754bba7e78d1b2
props: 11004 1858 112 0 0ba48eb7b1f123775dc0e292f9b3ab64
cpath: /trunk/server/barbarian.c
copyroot: 0 /

id: 8w.0.r13133/212584
type: file
pred: 8w.0.r13095/55156
count: 337
text: 13133 193411 3579 119803 33fda238a4cdd18005de7753abfaaea8
props: 11085 367 112 0 7f6d12fc80ead5cc285da723cb8caa9d
cpath: /trunk/server/ruleset.c
copyroot: 0 /

id: 9a.0.r13133/212819
type: file
pred: 9a.0.r13038/2017656
count: 47
text: 13133 85502 42 11943 1fb3ba5daba66165687b7e62c856e800
props: 10956 4203 111 0 e9cbe3af5d5934f88ab895fd46902062
cpath: /trunk/server/spacerace.c
copyroot: 0 /

id: 4o.0.r13133/213054
type: file
pred: 4o.0.r13038/2017891
count: 180
text: 13133 166508 2884 18891 5bebac8a0619f9032796af819288a3af
props: 11057 13195 112 0 0c4c829d27ee6fd81512219fee75ff65
cpath: /trunk/server/gamehand.c
copyroot: 0 /

id: 13.0.r13133/213293
type: file
pred: 13.0.r13120/6602
count: 203
text: 13133 94182 1563 65641 63c845d2d5c3a04c0fcbf9c4f92b57ba
props: 10990 3093 112 0 0e7b2145f04ad4ce4f4fdbad497f598c
cpath: /trunk/server/maphand.c
copyroot: 0 /

id: 3bk.0.r13133/213526
type: file
pred: 3bk.0.r13095/55849
count: 19
text: 13133 31282 405 17214 58931fc8b5d249417bbf44110ec94179
props: 12670 12724 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/server/edithand.c
copyroot: 0 /

id: 4m.0.r13133/213761
type: file
pred: 4m.0.r13038/2018369
count: 117
text: 13133 34214 2692 25695 a99c0f1728216007091fb92e34cd74f1
props: 10928 6706 112 0 b2683e5213f79af73eb9759948ba224b
cpath: /trunk/server/diplhand.c
copyroot: 0 /

id: vz.0.r13133/213998
type: file
pred: vz.0.r13038/2018837
count: 106
text: 13133 2309 646 46835 9e55a6c6aceb0bd9d41440617384e41a
props: 10915 10832 111 0 8ab1a522471ad7dd5014b23b42c49491
cpath: /trunk/server/diplomats.c
copyroot: 0 /

id: 1a.0.r13133/214235
type: file
pred: 1a.0.r13114/6617
count: 453
text: 13133 3596 996 111584 ac342568aafad08c97c3d123ab9f840f
props: 11095 1637 112 0 c5bfe3670c093a84ebf28b66298044e4
cpath: /trunk/server/unittools.c
copyroot: 0 /

id: 33n.0.r13133/214469
type: file
pred: 33n.0.r13046/110847
count: 41
text: 13133 6158 248 27266 88b43518d24d566796f84aa8709a1f86
props: 11004 2210 111 0 05a46e497021c8716b647ee1425e21a2
cpath: /trunk/server/techtools.c
copyroot: 0 /

id: wi.0.r13133/214705
type: file
pred: wi.0.r13046/111086
count: 94
text: 13133 122906 797 19509 0bfe4546a954a5ee38bed5cc7b0b5c7b
props: 10956 5973 111 0 f29fdd85bcdac27e7106c1e33b0399d1
cpath: /trunk/server/sanitycheck.c
copyroot: 0 /

id: 18.0.r13133/214943
type: file
pred: 18.0.r13114/7078
count: 381
text: 13133 79087 446 60648 ee8e2628a2ef5030f64be8dc14608dfe
props: 11060 7742 112 0 090627d3849ce880ce4f29c1c260669f
cpath: /trunk/server/unithand.c
copyroot: 0 /

id: 4z.0.r13133/215176
type: file
pred: 4z.0.r13038/2019785
count: 464
text: 13133 128790 7878 151975 5f4088cf4a509fad49d11f198588a459
props: 11087 3718 112 0 d0e5ada95c1c714385b6751e38a4f15d
cpath: /trunk/server/stdinhand.c
copyroot: 0 /

id: vl.0.r13133/215416
type: file
pred: vl.0.r13095/56084
count: 329
text: 13133 86526 3439 162392 c579c0fb3ce9dcc0244bbda401f25a30
props: 11092 74 112 0 de3988801a325e2d7d51fcbc7209a255
cpath: /trunk/server/savegame.c
copyroot: 0 /

id: 4u.0.r13133/215650
type: file
pred: 4u.0.r13046/111792
count: 451
text: 13133 158726 4113 64581 8eebaba98be50f46e1428dcee78035ba
props: 11057 14272 112 0 ab87823e529bcaae2ff952f918d53839
cpath: /trunk/server/plrhand.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 23
file 5q.0.r13002/340340
K 9
airgoto.c
V 22
file 160.0.r12750/6124
K 9
airgoto.h
V 22
file 161.0.r12750/6355
K 6
auth.c
V 21
file 39c.0.r12962/814
K 6
auth.h
V 23
file 39d.0.r12670/12220
K 11
barbarian.c
V 23
file lw.0.r13133/212348
K 11
barbarian.h
V 21
file lx.0.r12768/1011
K 10
cityhand.c
V 23
file 10.0.r13133/207538
K 10
cityhand.h
V 22
file 4f.0.r10360/45679
K 11
citytools.c
V 23
file 4g.0.r13133/211175
K 11
citytools.h
V 21
file 4h.0.r11131/8041
K 10
cityturn.c
V 23
file 4i.0.r13133/212113
K 10
cityturn.h
V 22
file 4j.0.r11590/32928
K 11
civserver.c
V 22
file 4k.0.r12957/26449
K 11
civserver.h
V 21
file 4l.0.r2805/33121
K 10
commands.c
V 22
file 2ly.0.r12738/3170
K 10
commands.h
V 22
file 2lz.0.r12738/3399
K 13
connecthand.c
V 24
file 2dw.0.r13133/210939
K 13
connecthand.h
V 23
file 2dx.0.r11356/12433
K 9
console.c
V 21
file dd.0.r11144/6041
K 9
console.h
V 21
file de.0.r11697/6876
K 10
diplhand.c
V 23
file 4m.0.r13133/213761
K 10
diplhand.h
V 20
file 4n.0.r11201/644
K 11
diplomats.c
V 23
file vz.0.r13133/213998
K 11
diplomats.h
V 22
file w0.0.r10755/37952
K 10
edithand.c
V 24
file 3bk.0.r13133/213526
K 10
gamehand.c
V 23
file 4o.0.r13133/213054
K 10
gamehand.h
V 21
file 4p.0.r12456/4365
K 9
generator
V 23
dir 2me.0.r13133/208633
K 11
ggzserver.c
V 23
file 39a.0.r12670/12494
K 11
ggzserver.h
V 23
file 39b.0.r12670/13043
K 10
gotohand.c
V 23
file 11.0.r13046/107569
K 10
gotohand.h
V 21
file 7r.0.r12559/1558
K 10
handchat.c
V 21
file 4q.0.r10956/2557
K 10
handchat.h
V 22
file dj.0.r7100/189089
K 9
maphand.c
V 23
file 13.0.r13133/213293
K 9
maphand.h
V 22
file 14.0.r13095/55620
K 6
meta.c
V 24
file 4s.0.r13038/2018606
K 6
meta.h
V 21
file 4t.0.r11087/3496
K 9
plrhand.c
V 23
file 4u.0.r13133/215650
K 9
plrhand.h
V 21
file 4v.0.r12730/2365
K 8
report.c
V 23
file vi.0.r13133/211878
K 8
report.h
V 21
file vj.0.r10414/9434
K 9
ruleset.c
V 23
file 8w.0.r13133/212584
K 9
ruleset.h
V 21
file 8x.0.r10951/8136
K 13
sanitycheck.c
V 23
file wi.0.r13133/214705
K 13
sanitycheck.h
V 21
file wj.0.r8119/11096
K 10
savegame.c
V 23
file vl.0.r13133/215416
K 10
savegame.h
V 21
file vm.0.r10073/2584
K 7
score.c
V 24
file 2eg.0.r13133/208863
K 7
score.h
V 22
file 2eh.0.r11430/3487
K 9
scripting
V 23
dir 31x.0.r13133/210708
K 8
sernet.c
V 20
file 15.0.r11425/989
K 8
sernet.h
V 21
file 4y.0.r12484/7852
K 10
settings.c
V 24
file 2m0.0.r13133/211409
K 10
settings.h
V 22
file 2m1.0.r10846/4216
K 10
settlers.c
V 23
file 7s.0.r13133/211642
K 10
settlers.h
V 21
file 7t.0.r12559/2012
K 11
spacerace.c
V 23
file 9a.0.r13133/212819
K 11
spacerace.h
V 21
file 9b.0.r11338/1129
K 10
srv_main.c
V 23
file vg.0.r13133/209094
K 10
srv_main.h
V 19
file vh.0.r12496/49
K 11
stdinhand.c
V 23
file 4z.0.r13133/215176
K 11
stdinhand.h
V 21
file 50.0.r12637/7365
K 11
techtools.c
V 24
file 33n.0.r13133/214469
K 11
techtools.h
V 22
file 33o.0.r11130/1173
K 10
unithand.c
V 23
file 18.0.r13133/214943
K 10
unithand.h
V 21
file 19.0.r10368/4183
K 11
unittools.c
V 23
file 1a.0.r13133/214235
K 11
unittools.h
V 21
file 1b.0.r13114/6848
END
ENDREP
id: z.0.r13133/218962
type: dir
pred: z.0.r13120/9881
count: 3303
text: 13133 215887 3062 3062 589803c7b2bd0b8223212290e3cfdd6a
props: 12883 0 100 0 7e2420dfebc3935e1315279621b1103c
cpath: /trunk/server
copyroot: 0 /

id: vb.0.r13133/219180
type: file
pred: vb.0.r13046/115323
count: 73
text: 13133 173196 105 16031 8bcca781b010fbdd62d03d89fb5f997f
props: 11067 578 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /trunk/common/improvement.c
copyroot: 0 /

id: 3jw.0.r13133/219417
type: file
pred: 3jw.0.r13024/183689
count: 11
text: 13133 64575 52 6717 953600d8c4e02d04eb6470574dbe7d5a
props: 12670 90710 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/common/base.c
copyroot: 0 /

id: v.0.r13133/219647
type: file
pred: v.0.r13046/115797
count: 284
text: 13133 177515 1350 51485 777028e88dfc1801da9f28b10f79b811
props: 11030 219 112 0 04d6f3553e14be31b9e437b066651140
cpath: /trunk/common/unit.c
copyroot: 0 /

id: v9.0.r13133/219877
type: file
pred: v9.0.r13046/116024
count: 98
text: 13133 179136 3247 32443 cea382496feaf199d092fe36687a75b3
props: 10932 10175 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /trunk/common/unittype.c
copyroot: 0 /

id: va.0.r13133/220114
type: file
pred: va.0.r13046/116724
count: 88
text: 13133 184555 4095 12742 aaacb7363601dbf7ed2d507b630647fe
props: 10932 10530 111 0 c621529c87aa3e4513ceb9a8b717aa47
cpath: /trunk/common/unittype.h
copyroot: 0 /

id: 33i.0.r13133/220351
type: file
pred: 33i.0.r10866/15671
count: 7
text: 13133 188678 2275 7030 594bdb19ccfda16e678cf154c8c376c5
props: 10866 15548 110 0 705660468cdcbf270377dea86b274451
cpath: /trunk/common/team.c
copyroot: 0 /

id: u.0.r13133/220583
type: file
pred: u.0.r13046/116960
count: 68
text: 13133 78020 1036 7515 73265beb5073ea957edb97b22f2c43fc
props: 11069 12096 111 0 7f9b5cf6c8fffd7438ed66579e7ad166
cpath: /trunk/common/tech.h
copyroot: 0 /

id: 33j.0.r13133/220812
type: file
pred: 33j.0.r10866/16021
count: 4
text: 13133 191343 1365 2118 eb81d1e9694066ae3c5654617731eeec
props: 10866 15898 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/common/team.h
copyroot: 0 /

id: 3r.0.r13133/221044
type: file
pred: 3r.0.r11847/4073
count: 34
text: 13133 197021 273 6482 247d6d28a6f38b5599fe62682a3c4edf
props: 10411 121637 111 0 b4233197920770c602c29330b7f7c623
cpath: /trunk/common/diptreaty.c
copyroot: 0 /

id: q.0.r13133/221279
type: file
pred: q.0.r13046/117424
count: 395
text: 13133 90063 116 83871 15e098f795bc23265cd2741d25842946
props: 11069 12442 112 0 7c45f13e78520e4754bc476682276743
cpath: /trunk/common/city.c
copyroot: 0 /

id: 2du.0.r13133/221509
type: file
pred: 2du.0.r13046/117886
count: 55
text: 13133 199529 53 30870 8cc593c56d76a8647c2b1d69d4a4c879
props: 10728 522 111 0 7a0697bf766451f41e947e71ce1310bc
cpath: /trunk/common/aicore/pf_tools.c
copyroot: 0 /

id: 33l.0.r13133/221751
type: file
pred: 33l.0.r13024/186507
count: 4
text: 13133 176881 606 25824 59eeee36b99cd2860e6cf1254a7f3b18
props: 10779 44053 110 0 fd27c383f48a4fbbd90a59fbcfc8b3be
cpath: /trunk/common/aicore/caravan.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 23
file 18u.0.r10537/11159
K 11
aisupport.c
V 24
file 2em.0.r13024/186025
K 11
aisupport.h
V 22
file 2en.0.r8119/19806
K 9
caravan.c
V 24
file 33l.0.r13133/221751
K 9
caravan.h
V 23
file 33m.0.r10537/10822
K 9
citymap.c
V 24
file 2gj.0.r13024/186268
K 9
citymap.h
V 22
file 2gk.0.r10181/7464
K 4
cm.c
V 23
file 18x.0.r12881/10067
K 4
cm.h
V 22
file 18y.0.r9180/54619
K 14
path_finding.c
V 21
file 2ds.0.r12511/520
K 14
path_finding.h
V 24
file 2dt.0.r13024/185539
K 10
pf_tools.c
V 24
file 2du.0.r13133/221509
K 10
pf_tools.h
V 22
file 2dv.0.r10171/4076
END
ENDREP
id: 18t.0.r13133/222584
type: dir
pred: 18t.0.r13046/118719
count: 176
text: 13133 221994 577 577 26c292973d57ad90ed6e6abbf5cf8c0b
props: 11108 8037 65 0 8b44e87f657ecca3b8458ca1746fb7c6
cpath: /trunk/common/aicore
copyroot: 0 /

id: 2xv.0.r13133/222814
type: file
pred: 2xv.0.r13046/118949
count: 45
text: 13133 97650 75 19454 b4bc449f376c44e4932fc6dceda78eca
props: 10755 46938 111 0 28e613ef70fc8e4efe7ed7b15f74e6e7
cpath: /trunk/common/movement.c
copyroot: 0 /

id: 2ys.0.r13133/223050
type: file
pred: 2ys.0.r13046/119187
count: 24
text: 13133 200786 3037 19755 40ded2ce55d3e031d7b522c382987870
props: 10854 444 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/common/tile.c
copyroot: 0 /

id: 2fp.0.r13133/223283
type: file
pred: 2fp.0.r13120/17427
count: 43
text: 13133 205077 2434 24562 3bbfa068f6db97bc6c58d94cddfa9941
props: 10805 60404 111 0 eaeaff8c6ba56cfe19b921c33649c016
cpath: /trunk/common/terrain.c
copyroot: 0 /

id: qs.0.r13133/223520
type: file
pred: qs.0.r13120/17659
count: 55
text: 13133 0 2282 10151 7e0ced7e39d68e6d02c91b688e18b7e1
props: 10805 60759 111 0 14533b38c2d22fb145a05b253c8fb2e8
cpath: /trunk/common/terrain.h
copyroot: 0 /

id: 2eo.0.r13133/223750
type: file
pred: 2eo.0.r13027/83259
count: 66
text: 13133 4618 142 34245 6f0be9e25f2216dd601807bcff449de1
props: 11071 1400 111 0 efbf1421a4b2405f7925bee6ef319aa7
cpath: /trunk/common/effects.c
copyroot: 0 /

id: 2ll.0.r13133/223983
type: file
pred: 2ll.0.r13046/119888
count: 44
text: 13133 4790 1222 6495 dffb7397eaff018844bdb4588ad1c263
props: 10836 12026 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/common/fc_types.h
copyroot: 0 /

id: he.0.r13133/224219
type: file
pred: he.0.r13046/120124
count: 65
text: 13133 6436 1562 9616 1fad19c5846066f9d6c072cb47677ba9
props: 11057 31287 111 0 a3a3251698e05efa35962766e5c7e5c1
cpath: /trunk/common/government.c
copyroot: 0 /

id: hf.0.r13133/224455
type: file
pred: hf.0.r13046/120362
count: 52
text: 13133 8028 1580 3156 31e41c93d85bc37990ce7aadc28017bd
props: 10865 23625 111 0 8a31d593ba19cf3c77978cca3b416828
cpath: /trunk/common/government.h
copyroot: 0 /

id: 45.0.r13133/224691
type: file
pred: 45.0.r13027/83493
count: 207
text: 13133 136697 2141 34760 58cb8b0e71ba7deeb67dc1ef2423c096
props: 11057 32005 112 0 5a3876431ad0faf061b096a2484d7aad
cpath: /trunk/common/player.c
copyroot: 0 /

id: 46.0.r13133/224926
type: file
pred: 46.0.r13068/16252
count: 177
text: 13133 146197 884 11260 40e6b6dd7cac56e2969deec4fb37714d
props: 11057 32360 112 0 008c1f4aede3063a105ee5510d8fc5d7
cpath: /trunk/common/player.h
copyroot: 0 /

id: 3u.0.r13133/225160
type: file
pred: 3u.0.r13068/16484
count: 268
text: 13133 12711 567 20983 2c5bff694fe3e5aee18d0fd724409118
props: 11041 20516 112 0 779057fa36f350a13e5c75663a7074d1
cpath: /trunk/common/game.c
copyroot: 0 /

id: 39m.0.r13133/225391
type: file
pred: 39m.0.r13024/188734
count: 6
text: 13133 162869 59 7975 53fa40710e94ec86111fae1bb6667a3f
props: 12670 91258 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/common/unitlist.c
copyroot: 0 /

id: 3v.0.r13133/225625
type: file
pred: 3v.0.r13046/121060
count: 211
text: 13133 18393 117 11159 0af9a2cf25c49dcf5291ab1d336b5ea8
props: 11057 32714 112 0 2cf57fb6d11b8ba51814c6d419f0189e
cpath: /trunk/common/game.h
copyroot: 0 /

id: 39n.0.r13133/225857
type: file
pred: 39n.0.r12826/969
count: 4
text: 13133 164290 263 2856 8841f8ae1e6c6b19091a9c60915c92a7
props: 12670 91533 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/common/unitlist.h
copyroot: 0 /

id: 2wq.0.r13133/226089
type: file
pred: 2wq.0.r13046/121290
count: 47
text: 13133 169419 488 35487 476e753be2abd9e9974335a3dea6defc
props: 10865 25397 111 0 1c266b4433d829481714f1852322e965
cpath: /trunk/common/requirements.c
copyroot: 0 /

id: 2wr.0.r13133/226331
type: file
pred: 2wr.0.r12731/11012
count: 26
text: 13133 171034 290 5581 fb8ae49d7c1f057e619021d52f20214f
props: 10865 25760 111 0 1912998302effd94f7d1c131050552ad
cpath: /trunk/common/requirements.h
copyroot: 0 /

id: il.0.r13133/226571
type: file
pred: il.0.r13046/121532
count: 66
text: 13133 18748 2634 19902 74ed0d141fac0902d75f6799f2b26a1e
props: 11057 33068 111 0 b67b0fa27168318cbcd02c748356f132
cpath: /trunk/common/nation.c
copyroot: 0 /

id: im.0.r13133/226805
type: file
pred: im.0.r13046/121766
count: 64
text: 13133 23418 6082 6908 89a1de900384e9740ad417c7258272fb
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 23
file he.0.r13133/224219
K 12
government.h
V 23
file hf.0.r13133/224455
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 23
file il.0.r13133/226571
K 8
nation.h
V 23
file im.0.r13133/226805
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 23
file 45.0.r13133/224691
K 8
player.h
V 23
file 46.0.r13133/224926
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 24
file 33i.0.r13133/220351
K 6
team.h
V 24
file 33j.0.r13133/220812
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 24
file 2fp.0.r13133/223283
K 9
terrain.h
V 23
file qs.0.r13133/223520
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 23
file v9.0.r13133/219877
K 10
unittype.h
V 23
file va.0.r13133/220114
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.r13133/229836
type: dir
pred: p.0.r13120/20673
count: 2324
text: 13133 227038 2785 2785 30d7454d519ea4db3ff151eca1d84067
props: 12883 2571 96 0 2763e13ff5d021346ae24ff6c9ced232
cpath: /trunk/common
copyroot: 0 /

id: c.0.r13133/230057
type: file
pred: c.0.r12753/25246
count: 65
text: 13133 85387 85 4857 ed4b86675b4a588b0dceff237fad72a0
props: 10819 16731 111 0 4431d79514046f1aa5f62b22420cfa99
cpath: /trunk/ai/aiunit.h
copyroot: 0 /

id: 2iw.0.r13133/230281
type: file
pred: 2iw.0.r13024/192639
count: 32
text: 13133 36937 14483 37209 031029e4c79b112edb117f2075d8c504
props: 10806 16634 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/ai/aiferry.c
copyroot: 0 /

id: 1m.0.r13133/230515
type: file
pred: 1m.0.r13024/192868
count: 142
text: 13133 204878 173 11557 2e149625748b02eea02af01c4db42d0b
props: 10779 49627 112 0 61465523e3c60d371baa05b44953aea9
cpath: /trunk/ai/advdomestic.c
copyroot: 0 /

id: 9.0.r13133/230751
type: file
pred: 9.0.r13046/125000
count: 177
text: 13133 175571 572 43840 7f0277d72005adbc8528b996611d30e7
props: 11015 549 112 0 bb22896f97f507ab8508e233583a40b4
cpath: /trunk/ai/aitools.c
copyroot: 0 /

id: 2ek.0.r13133/230979
type: file
pred: 2ek.0.r13024/193559
count: 111
text: 13133 13620 3299 62311 b9ff916849119a000a3489e62db72c7d
props: 11095 5259 111 0 09fa8b389220258550f0df17fa730769
cpath: /trunk/ai/advdiplomacy.c
copyroot: 0 /

id: a.0.r13133/231217
type: file
pred: a.0.r13024/193795
count: 62
text: 13133 178894 215 4008 0c6c627c975b378b337a11a56b823891
props: 10865 30111 111 0 7f9b5cf6c8fffd7438ed66579e7ad166
cpath: /trunk/ai/aitools.h
copyroot: 0 /

id: 20.0.r13133/231445
type: file
pred: 20.0.r13038/2038689
count: 268
text: 13133 198331 1170 64519 03d11fd950cd49fc54e5b58166308615
props: 11069 16784 112 0 24b501182e64f7bbc4aaaa8b3f1d9020
cpath: /trunk/ai/aicity.c
copyroot: 0 /

id: 15o.0.r13133/231678
type: file
pred: 15o.0.r13046/125229
count: 90
text: 13133 92516 340 22872 2cc76f6e61e6f7006ef9b1c3e0223865
props: 11074 729 111 0 995497afc7013c9f20b8d3ebef449f37
cpath: /trunk/ai/aidata.c
copyroot: 0 /

id: 16r.0.r13133/231907
type: file
pred: 16r.0.r13027/87625
count: 59
text: 13133 169936 49 24160 b1db57f806ca933a01c226e0c88523f8
props: 10756 119 111 0 93121dcfd7714818c8d46f9c51a886fa
cpath: /trunk/ai/aidiplomat.c
copyroot: 0 /

id: 22.0.r13133/232139
type: file
pred: 22.0.r13038/2038921
count: 125
text: 13133 93957 194 17780 41330b8e43b3216511592121a306f3e9
props: 10865 30805 112 0 8869376353a720fe76c0d512d1b8c326
cpath: /trunk/ai/aihand.c
copyroot: 0 /

id: 1u.0.r13133/232370
type: file
pred: 1u.0.r13046/125457
count: 220
text: 13133 68761 2557 52176 159f546d01c15d5068f7ca673b890817
props: 10765 17515 112 0 ecd9c25ffd2014c732acffc1b3aab533
cpath: /trunk/ai/advmilitary.c
copyroot: 0 /

id: 15y.0.r13133/232606
type: file
pred: 15y.0.r13046/125690
count: 44
text: 13133 71344 1025 14796 1a27f2a1283988967d67ed90678d8000
props: 10755 56241 111 0 1c266b4433d829481714f1852322e965
cpath: /trunk/ai/aiair.c
copyroot: 0 /

id: 15t.0.r13133/232837
type: file
pred: 15t.0.r13024/195175
count: 36
text: 13133 85023 258 10852 ac120894022c9a4512baad1963af63da
props: 11074 1421 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/ai/ailog.c
copyroot: 0 /

id: 36o.0.r13133/233066
type: file
pred: 36o.0.r13024/195404
count: 10
text: 13133 13487 104 11410 1703ff07f1b8f1a5ee42f6b83b94b323
props: 12670 94874 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/ai/aiparatrooper.c
copyroot: 0 /

id: 335.0.r13133/233303
type: file
pred: 335.0.r11074/2238
count: 4
text: 13133 16948 1417 10575 d96caf83849d4811fbf9be7d4c4e3381
props: 11074 2115 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/ai/aiguard.c
copyroot: 0 /

id: 2gc.0.r13133/233532
type: file
pred: 2gc.0.r13046/125919
count: 31
text: 13133 125053 257 18399 e279fa17a5b8c9559975f3e64243711a
props: 10843 995 111 0 5515c59917848b493fbf45ffb42836b3
cpath: /trunk/ai/aihunt.c
copyroot: 0 /

id: b.0.r13133/233762
type: file
pred: b.0.r13046/126148
count: 392
text: 13133 79639 5355 89885 382cf5872100f835b4cfe38f6d700a36
props: 10755 57649 112 0 77fd11a7d1954721a87806f6d511a224
cpath: /trunk/ai/aiunit.c
copyroot: 0 /

id: 2lh.0.r13133/233991
type: file
pred: 2lh.0.r13038/2039153
count: 33
text: 13133 111743 49 21912 9b0a24c4866a2652f3ab7d7cddc0d740
props: 10865 31505 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/ai/aisettler.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 21
file 5d.0.r11157/7524
K 14
advdiplomacy.c
V 24
file 2ek.0.r13133/230979
K 14
advdiplomacy.h
V 23
file 2el.0.r11249/25602
K 13
advdomestic.c
V 23
file 1m.0.r13133/230515
K 13
advdomestic.h
V 20
file 1n.0.r9681/4085
K 13
advmilitary.c
V 23
file 1u.0.r13133/232370
K 13
advmilitary.h
V 21
file 1v.0.r12944/5093
K 10
advspace.c
V 21
file f2.0.r7995/10885
K 10
advspace.h
V 21
file f3.0.r8119/28225
K 7
aiair.c
V 24
file 15y.0.r13133/232606
K 7
aiair.h
V 23
file 15z.0.r8387/115007
K 8
aicity.c
V 23
file 20.0.r13133/231445
K 8
aicity.h
V 22
file 21.0.r10755/56718
K 8
aidata.c
V 24
file 15o.0.r13133/231678
K 8
aidata.h
V 22
file 15p.0.r12764/1125
K 12
aidiplomat.c
V 24
file 16r.0.r13133/231907
K 12
aidiplomat.h
V 22
file 16s.0.r8119/26506
K 12
aiexplorer.c
V 24
file 2lj.0.r13024/193102
K 12
aiexplorer.h
V 22
file 2lk.0.r8119/25129
K 9
aiferry.c
V 24
file 2iw.0.r13133/230281
K 9
aiferry.h
V 22
file 2ix.0.r12571/4674
K 9
aiguard.c
V 24
file 335.0.r13133/233303
K 9
aiguard.h
V 22
file 336.0.r10445/8032
K 8
aihand.c
V 23
file 22.0.r13133/232139
K 8
aihand.h
V 21
file 23.0.r8119/27197
K 8
aihunt.c
V 24
file 2gc.0.r13133/233532
K 8
aihunt.h
V 23
file 2gd.0.r10184/16994
K 7
ailog.c
V 24
file 15t.0.r13133/232837
K 7
ailog.h
V 23
file 15u.0.r11697/14103
K 15
aiparatrooper.c
V 24
file 36o.0.r13133/233066
K 15
aiparatrooper.h
V 23
file 36p.0.r12670/95202
K 11
aisettler.c
V 24
file 2lh.0.r13133/233991
K 11
aisettler.h
V 23
file 2li.0.r10181/11195
K 8
aitech.c
V 22
file 24.0.r13027/88092
K 8
aitech.h
V 22
file 25.0.r10755/53545
K 9
aitools.c
V 22
file 9.0.r13133/230751
K 9
aitools.h
V 22
file a.0.r13133/231217
K 8
aiunit.c
V 22
file b.0.r13133/233762
K 8
aiunit.h
V 22
file c.0.r13133/230057
END
ENDREP
id: 8.0.r13133/235961
type: dir
pred: 8.0.r13046/128109
count: 1117
text: 13133 234226 1722 1722 e01a3d26af8eda24d4a5aa33ee54936b
props: 11108 11315 64 0 abac628483ea4fdfa3bea3a3a56e0532
cpath: /trunk/ai
copyroot: 0 /

id: zj.0.r13133/236180
type: file
pred: zj.0.r12957/35828
count: 78
text: 13133 18539 184 19729 55a94233aeeb6f319fc7041ad0b4561b
props: 11025 295 111 0 995497afc7013c9f20b8d3ebef449f37
cpath: /trunk/client/agents/cma_core.c
copyroot: 0 /

id: 2fy.0.r13133/236419
type: file
pred: 2fy.0.r11391/47424
count: 7
text: 13133 164653 75 4626 5c76de51ad15b5832c71f089b0543550
props: 10694 29485 110 0 fdfdab56f53d2388a66f6a5ce0985f95
cpath: /trunk/client/agents/sha.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file zg.0.r12315/58224
K 8
agents.c
V 23
file zh.0.r13024/198499
K 8
agents.h
V 22
file zi.0.r8387/119237
K 10
cma_core.c
V 23
file zj.0.r13133/236180
K 10
cma_core.h
V 20
file zk.0.r8132/2370
K 9
cma_fec.c
V 22
file zl.0.r13027/90823
K 9
cma_fec.h
V 20
file zm.0.r8132/1669
K 5
sha.c
V 24
file 2fy.0.r13133/236419
K 5
sha.h
V 23
file 2fz.0.r9577/101433
END
ENDREP
id: zf.0.r13133/237048
type: dir
pred: zf.0.r13027/91453
count: 129
text: 13133 236655 380 380 c20af1bf009ee005eeb73f424e8dab01
props: 11108 11608 65 0 c67827893bff2f279fa7f0439c4cba47
cpath: /trunk/client/agents
copyroot: 0 /

id: z4.0.r13133/237276
type: file
pred: z4.0.r13027/91914
count: 93
text: 13133 85310 47 29660 97a57e98107b294edda4540fa6ce0f6b
props: 11067 4204 111 0 32cf26490c5995022c752556481ff094
cpath: /trunk/client/citydlg_common.c
copyroot: 0 /

id: 33a.0.r13133/237514
type: file
pred: 33a.0.r13038/2041916
count: 16
text: 13133 138994 6992 9000 37916e687371849bfe9397a052b69b64
props: 11081 99 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/colors_common.c
copyroot: 0 /

id: gz.0.r13133/237755
type: file
pred: gz.0.r13095/66303
count: 210
text: 13133 148564 386 87910 5a4ba6839cc14c6c1ebd5fa3763328ff
props: 11088 7720 112 0 89a05fc93c37a832d4b63085dac12c4b
cpath: /trunk/client/control.c
copyroot: 0 /

id: zy.0.r13133/237989
type: file
pred: zy.0.r13125/7450
count: 153
text: 13133 97181 142 93249 1fe01e92c464098e2187bca65ae48119
props: 11072 618 112 0 0564c5503f2d15442a967c72794b21e8
cpath: /trunk/client/gui-gtk-2.0/citydlg.c
copyroot: 0 /

id: 10e.0.r13133/238232
type: file
pred: 10e.0.r11391/49213
count: 18
text: 13133 97349 271 7938 be44bc93658100712f2b5b23eb56c404
props: 10534 1625 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/client/gui-gtk-2.0/gotodlg.c
copyroot: 0 /

id: 118.0.r13133/238477
type: file
pred: 118.0.r13027/92634
count: 109
text: 13133 174874 668 52034 b0aa647f59b0887c69f8c512d3554e91
props: 11057 38502 111 0 89e24921275908e1dbda216a065c4859
cpath: /trunk/client/gui-gtk-2.0/repodlgs.c
copyroot: 0 /

id: 10k.0.r13133/238727
type: file
pred: 10k.0.r13125/7935
count: 167
text: 13133 182774 290 60484 ad2b65e01245b595e507342c6257df58
props: 11057 38870 112 0 ec3aa248409009be6c82cab2c7e95ef5
cpath: /trunk/client/gui-gtk-2.0/gui_main.c
copyroot: 0 /

id: 376.0.r13133/238976
type: file
pred: 376.0.r12670/98200
count: 2
text: 13133 184415 114 5139 e1a51948650ae268d2e44a93af74c911
props: 12670 98153 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-gtk-2.0/caravan_dialog.c
copyroot: 0 /

id: 2pi.0.r13133/239228
type: file
pred: 2pi.0.r13038/2042659
count: 61
text: 13133 9636 190 81936 fe8782cea242b1534030d0e9b11c2025
props: 11100 16432 111 0 622f1432038f91cce287c1d90e4f7964
cpath: /trunk/client/gui-gtk-2.0/pages.c
copyroot: 0 /

id: 3bi.0.r13133/239474
type: file
pred: 3bi.0.r13046/128329
count: 16
text: 13133 148981 9719 21995 6379419a4b1611b2603f950babbe6018
props: 12670 98446 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-gtk-2.0/editdlg.c
copyroot: 0 /

id: 100.0.r13133/239723
type: file
pred: 100.0.r13076/6423
count: 83
text: 13133 13307 156 51989 25d4407fdf761b98f7938fcf26f38e5e
props: 11057 40343 111 0 9323cb943074f1605bbe84192873bd2e
cpath: /trunk/client/gui-gtk-2.0/cityrep.c
copyroot: 0 /

id: 108.0.r13133/239969
type: file
pred: 108.0.r13091/737
count: 133
text: 13133 163564 221 41420 590befefdeec489b08d68a8d2cc0a19a
props: 11088 8070 112 0 858133ad234580a5fc7c24a791c3b702
cpath: /trunk/client/gui-gtk-2.0/dialogs.c
copyroot: 0 /

id: 36n.0.r13133/240215
type: file
pred: 36n.0.r13027/92883
count: 8
text: 13133 164756 1724 25397 aa3479b0e939e5d0f82d115d7422d590
props: 11088 8800 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/client/gui-gtk-2.0/diplomat_dialog.c
copyroot: 0 /

id: 10a.0.r13133/240470
type: file
pred: 10a.0.r13038/2043652
count: 42
text: 13133 95769 1382 29085 33bac13470c972a8afb429b5fed67dd4
props: 11093 473 111 0 7a0697bf766451f41e947e71ce1310bc
cpath: /trunk/client/gui-gtk-2.0/diplodlg.c
copyroot: 0 /

id: 10c.0.r13133/240719
type: file
pred: 10c.0.r10731/5364
count: 21
text: 13133 173003 166 6259 b4b082eb4222f4fb85a82b0b9b98804a
props: 10731 5240 111 0 5515c59917848b493fbf45ffb42836b3
cpath: /trunk/client/gui-gtk-2.0/finddlg.c
copyroot: 0 /

id: 115.0.r13133/240964
type: file
pred: 115.0.r13038/2044397
count: 77
text: 13133 121992 389 27907 ea25ceef274f8f05338bc6d58eb3cfe8
props: 11057 41078 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /trunk/client/gui-gtk-2.0/plrdlg.c
copyroot: 0 /

id: 11c.0.r13133/241213
type: file
pred: 11c.0.r11771/10436
count: 20
text: 13133 146012 158 8482 3e91b6155c3e5360294619a05b40f1b5
props: 10731 5970 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /trunk/client/gui-gtk-2.0/spaceshipdlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file zu.0.r12315/59072
K 8
canvas.c
V 23
file 2y6.0.r10518/13194
K 8
canvas.h
V 23
file 2y7.0.r10096/14437
K 16
caravan_dialog.c
V 24
file 376.0.r13133/238976
K 10
chatline.c
V 22
file zw.0.r9577/108991
K 10
chatline.h
V 22
file zx.0.r9577/109355
K 15
choice_dialog.c
V 23
file 377.0.r12670/99065
K 15
choice_dialog.h
V 23
file 378.0.r12670/99360
K 9
citydlg.c
V 23
file zy.0.r13133/237989
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 24
file 100.0.r13133/239723
K 9
cityrep.h
V 22
file 101.0.r9098/11480
K 8
cma_fe.c
V 22
file 102.0.r11771/9226
K 8
cma_fe.h
V 23
file 103.0.r10181/13675
K 8
colors.c
V 22
file 104.0.r10458/4290
K 8
colors.h
V 22
file 105.0.r10458/4652
K 12
connectdlg.c
V 22
file 106.0.r10804/2737
K 12
connectdlg.h
V 21
file 107.0.r7580/6878
K 9
dialogs.c
V 24
file 108.0.r13133/239969
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 24
file 10a.0.r13133/240470
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 24
file 36n.0.r13133/240215
K 9
editdlg.c
V 24
file 3bi.0.r13133/239474
K 9
editdlg.h
V 23
file 3bj.0.r12670/98777
K 9
finddlg.c
V 24
file 10c.0.r13133/240719
K 9
finddlg.h
V 22
file 2d0.0.r5989/22356
K 10
gamedlgs.c
V 25
file 10d.0.r13038/2044647
K 9
gotodlg.c
V 24
file 10e.0.r13133/238232
K 9
gotodlg.h
V 23
file 10f.0.r4313/263426
K 10
graphics.c
V 23
file 10g.0.r11337/79662
K 10
graphics.h
V 23
file 10h.0.r11337/80150
K 12
gtkpixcomm.c
V 22
file 10i.0.r10800/1239
K 12
gtkpixcomm.h
V 22
file 10j.0.r10800/1606
K 10
gui_main.c
V 24
file 10k.0.r13133/238727
K 10
gui_main.h
V 21
file 10l.0.r12791/593
K 11
gui_stuff.c
V 22
file 10m.0.r11771/8499
K 11
gui_stuff.h
V 22
file 10n.0.r11771/8983
K 11
happiness.c
V 23
file 10o.0.r11546/32145
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 24
file 10q.0.r13046/128825
K 9
helpdlg.h
V 23
file 10r.0.r4313/267882
K 10
inputdlg.c
V 20
file 10s.0.r8860/225
K 10
inputdlg.h
V 21
file 10t.0.r7580/3991
K 10
inteldlg.c
V 25
file 10u.0.r13038/2043901
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 9
mapctrl.c
V 22
file 10v.0.r12952/2748
K 9
mapctrl.h
V 23
file 10w.0.r11337/80395
K 9
mapview.c
V 22
file 10x.0.r13125/7689
K 9
mapview.h
V 23
file 10y.0.r12881/17128
K 6
menu.c
V 21
file 10z.0.r13103/569
K 6
menu.h
V 22
file 110.0.r4315/16581
K 12
messagedlg.c
V 23
file 111.0.r11771/10924
K 12
messagedlg.h
V 22
file 2d2.0.r5989/22693
K 12
messagewin.c
V 22
file 112.0.r10731/3899
K 12
messagewin.h
V 23
file 113.0.r10108/19424
K 11
optiondlg.h
V 23
file 114.0.r4313/264106
K 7
pages.c
V 24
file 2pi.0.r13133/239228
K 7
pages.h
V 22
file 2pj.0.r11863/8922
K 8
plrdlg.c
V 24
file 115.0.r13133/240964
K 8
plrdlg.h
V 22
file 116.0.r10803/7069
K 10
ratesdlg.h
V 22
file 2d3.0.r5989/22018
K 4
rc2c
V 23
file 117.0.r4313/274431
K 10
repodlgs.c
V 24
file 118.0.r13133/238477
K 10
repodlgs.h
V 21
file 119.0.r9098/9312
K 11
resources.c
V 23
file 11a.0.r5390/112550
K 11
resources.h
V 23
file 11b.0.r4313/267539
K 14
spaceshipdlg.c
V 24
file 11c.0.r13133/241213
K 14
spaceshipdlg.h
V 23
file 11d.0.r9577/110090
K 8
sprite.c
V 23
file 2y8.0.r10141/28169
K 8
sprite.h
V 23
file 2y9.0.r10141/29270
K 8
themes.c
V 21
file 34x.0.r11331/491
K 7
wldlg.c
V 23
file 11e.0.r13027/93382
K 7
wldlg.h
V 21
file 11f.0.r7682/2202
END
ENDREP
id: zs.0.r13133/244740
type: dir
pred: zs.0.r13125/11444
count: 993
text: 13133 241464 3263 3263 b7e28872709b7fdfdf0cab0c63d0d1a1
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-2.0
copyroot: 0 /

id: 2g3.0.r13133/244975
type: file
pred: 2g3.0.r13038/2048418
count: 70
text: 13133 90445 1831 38393 8b4c9a3022390c7d3e40231d11756340
props: 11057 45424 111 0 93646be3752db5a3cd8e77177837d494
cpath: /trunk/client/text.c
copyroot: 0 /

id: 9w.0.r13133/245210
type: file
pred: 9w.0.r13027/97597
count: 149
text: 13133 174701 143 78858 bc87f70d7e950d9435481f465c0bb556
props: 10820 1319 112 0 e0e21d00fa120c81b59fd1c92d742949
cpath: /trunk/client/gui-xaw/citydlg.c
copyroot: 0 /

id: ab.0.r13133/245452
type: file
pred: ab.0.r11408/9036
count: 30
text: 13133 173331 1344 10293 c579f3d16454a1b84490232a98da3cf2
props: 10536 6353 111 0 eaeaff8c6ba56cfe19b921c33649c016
cpath: /trunk/client/gui-xaw/gotodlg.c
copyroot: 0 /

id: ay.0.r13133/245693
type: file
pred: ay.0.r13046/132591
count: 86
text: 13133 170014 989 47069 9aebe4b7f14a7770f5851b7f37931e9b
props: 10957 5571 111 0 04c7a6fe9bf3a5db3539a62041388438
cpath: /trunk/client/gui-xaw/repodlgs.c
copyroot: 0 /

id: bm.0.r13133/245936
type: file
pred: bm.0.r12957/40401
count: 129
text: 13133 172631 49 33558 ae89c5ac19cb589146c4d4ca84264e9e
props: 10925 3549 112 0 177404f64081975a31585790400154e7
cpath: /trunk/client/gui-xaw/gui_main.c
copyroot: 0 /

id: 2qm.0.r13133/246178
type: file
pred: 2qm.0.r13038/2049141
count: 7
text: 13133 11232 42 8691 544a75d34849d096a9ca13997f9ecf12
props: 10598 2663 110 0 fdfdab56f53d2388a66f6a5ce0985f95
cpath: /trunk/client/gui-xaw/pages.c
copyroot: 0 /

id: an.0.r13133/246417
type: file
pred: an.0.r13046/132834
count: 91
text: 13133 64837 161 38496 0fd45e9eabc7ae01502d9f239c73d45b
props: 10882 2348 111 0 014f4f31d8fa52a1c17e04bfb7ac7579
cpath: /trunk/client/gui-xaw/menu.c
copyroot: 0 /

id: a6.0.r13133/246655
type: file
pred: a6.0.r13046/133073
count: 131
text: 13133 199612 1145 46108 3dc8d01d4652b109aebc14f3b2f56698
props: 10957 6289 112 0 ac8a0c5808e41faff6290e5ee8a4284e
cpath: /trunk/client/gui-xaw/dialogs.c
copyroot: 0 /

id: 37p.0.r13133/246899
type: file
pred: 37p.0.r13046/133316
count: 7
text: 13133 203930 920 26793 cce2ff5ae3d68a18e5446256a3b2eebf
props: 12670 103088 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-xaw/diplomat_dialog.c
copyroot: 0 /

id: a8.0.r13133/247151
type: file
pred: a8.0.r13046/133565
count: 45
text: 13133 85573 924 30944 d0fb9447ce1271dd977fad36a56d89cf
props: 10442 1972 111 0 8ba011ca1ef4e408ab91a853a48e15eb
cpath: /trunk/client/gui-xaw/diplodlg.c
copyroot: 0 /

id: ad.0.r13133/247393
type: file
pred: ad.0.r13038/2050103
count: 73
text: 13133 89994 38 17849 70318930b91a2f28a579f25f0d06a21f
props: 10789 5855 111 0 3d8b904835b9008e2a0a4d4db6ee628d
cpath: /trunk/client/gui-xaw/graphics.c
copyroot: 0 /

id: ai.0.r13133/247635
type: file
pred: ai.0.r13046/133808
count: 34
text: 13133 90306 107 16265 e2ef0d6d1004ca832c322c8dab03f770
props: 10696 129 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/client/gui-xaw/inteldlg.c
copyroot: 0 /

id: aa.0.r13133/247876
type: file
pred: aa.0.r10411/149811
count: 13
text: 13133 3098 403 6598 0e5208b4137ffc93f68a00207fee762d
props: 10411 149687 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/gui-xaw/finddlg.c
copyroot: 0 /

id: aw.0.r13133/248117
type: file
pred: aw.0.r13038/2051075
count: 47
text: 13133 22592 796 13215 dc25d9193d2fbc660589de89a65e3a17
props: 10442 2694 111 0 77af0ec85c332e0d4fd7e7ef86a518fd
cpath: /trunk/client/gui-xaw/plrdlg.c
copyroot: 0 /

id: b2.0.r13133/248358
type: file
pred: b2.0.r10442/3177
count: 26
text: 13133 2984 87 9624 ca706eaa31caa574d7ce489fbbdf496e
props: 10442 3053 111 0 7c94b769c2c0998a2747d858cb1e860f
cpath: /trunk/client/gui-xaw/spaceshipdlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file bq.0.r12315/62787
K 9
actions.c
V 21
file nt.0.r11408/9272
K 9
actions.h
V 21
file nu.0.r1888/21779
K 4
ad2c
V 22
file 9q.0.r1186/243967
K 8
canvas.c
V 21
file 9r.0.r3959/87925
K 8
canvas.h
V 20
file 9s.0.r4034/9073
K 9
canvasp.h
V 20
file 9t.0.r4034/8365
K 10
chatline.c
V 20
file 9u.0.r9160/4848
K 10
chatline.h
V 21
file 9v.0.r2187/10435
K 9
citydlg.c
V 23
file 9w.0.r13133/245210
K 9
citydlg.h
V 20
file 9x.0.r2187/8309
K 9
cityrep.c
V 24
file 9y.0.r12988/4288618
K 9
cityrep.h
V 20
file g1.0.r5489/4916
K 8
cma_fe.c
V 21
file 2ei.0.r12090/100
K 8
cma_fe.h
V 21
file 2ej.0.r6908/4433
K 8
colors.c
V 21
file a2.0.r10532/8601
K 8
colors.h
V 21
file a3.0.r10532/9312
K 12
connectdlg.c
V 21
file a4.0.r11187/6858
K 12
connectdlg.h
V 21
file a5.0.r2187/12228
K 9
dialogs.c
V 23
file a6.0.r13133/246655
K 9
dialogs.h
V 21
file a7.0.r10882/3191
K 10
diplodlg.c
V 23
file a8.0.r13133/247151
K 10
diplodlg.h
V 20
file a9.0.r2187/7955
K 17
diplomat_dialog.c
V 24
file 37p.0.r13133/246899
K 9
finddlg.c
V 23
file aa.0.r13133/247876
K 9
finddlg.h
V 22
file 2dk.0.r5989/31562
K 9
gotodlg.c
V 23
file ab.0.r13133/245452
K 9
gotodlg.h
V 21
file ac.0.r1888/21069
K 10
graphics.c
V 23
file ad.0.r13133/247393
K 10
graphics.h
V 21
file ae.0.r10789/6338
K 10
gui_main.c
V 23
file bm.0.r13133/245936
K 10
gui_main.h
V 22
file bn.0.r11408/10219
K 11
gui_stuff.c
V 22
file bo.0.r6129/126486
K 11
gui_stuff.h
V 21
file bp.0.r4964/56392
K 9
helpdlg.c
V 23
file af.0.r13046/134291
K 9
helpdlg.h
V 21
file g2.0.r1888/23188
K 10
inputdlg.c
V 20
file ag.0.r7586/1961
K 10
inputdlg.h
V 20
file ah.0.r7586/2315
K 10
inteldlg.c
V 23
file ai.0.r13133/247635
K 10
inteldlg.h
V 23
file 2dl.0.r10108/22972
K 9
mapctrl.c
V 21
file aj.0.r10532/8954
K 9
mapctrl.h
V 21
file ak.0.r10532/9667
K 9
mapview.c
V 21
file al.0.r11793/1711
K 9
mapview.h
V 22
file am.0.r10181/17963
K 6
menu.c
V 23
file an.0.r13133/246417
K 6
menu.h
V 21
file ao.0.r12091/4447
K 12
messagedlg.c
V 22
file ap.0.r10532/10389
K 12
messagedlg.h
V 22
file 2dm.0.r5989/31896
K 12
messagewin.c
V 21
file aq.0.r9098/15891
K 12
messagewin.h
V 20
file g3.0.r5489/3851
K 11
optiondlg.c
V 21
file ar.0.r11793/1242
K 11
optiondlg.h
V 21
file as.0.r1432/23133
K 7
pages.c
V 24
file 2qm.0.r13133/246178
K 7
pages.h
V 22
file 2qn.0.r10536/7909
K 9
pixcomm.c
V 21
file at.0.r3145/18494
K 9
pixcomm.h
V 20
file au.0.r4034/9777
K 10
pixcommp.h
V 20
file av.0.r4034/8719
K 8
plrdlg.c
V 23
file aw.0.r13133/248117
K 8
plrdlg.h
V 20
file g4.0.r5489/3140
K 10
ratesdlg.c
V 23
file ax.0.r13046/134049
K 10
ratesdlg.h
V 22
file 2dn.0.r5989/31227
K 10
repodlgs.c
V 23
file ay.0.r13133/245693
K 10
repodlgs.h
V 21
file az.0.r10957/6056
K 11
resources.c
V 20
file b0.0.r9310/2224
K 11
resources.h
V 21
file b1.0.r3145/14204
K 14
spaceshipdlg.c
V 23
file b2.0.r13133/248358
K 14
spaceshipdlg.h
V 21
file b3.0.r2187/11152
K 8
themes.c
V 23
file 350.0.r10945/14451
K 7
wldlg.c
V 22
file o5.0.r13027/98568
K 7
wldlg.h
V 22
file o6.0.r10181/18680
END
ENDREP
id: 9o.0.r13133/251598
type: dir
pred: 9o.0.r13046/137529
count: 816
text: 13133 248599 2986 2986 8d95ebaab60cc8d34f02425eb7cbf1d8
props: 11108 12237 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-xaw
copyroot: 0 /

id: xm.0.r13133/251830
type: file
pred: xm.0.r13027/102013
count: 113
text: 13133 114992 81 64249 8b6504c216393dd6398296a8843f168c
props: 10989 3245 112 0 e7136c353c3addf3d4cc60888f1c16d6
cpath: /trunk/client/gui-win32/citydlg.c
copyroot: 0 /

id: xz.0.r13133/252074
type: file
pred: xz.0.r12331/4250
count: 13
text: 13133 114676 290 5858 631ce2fde77cb6acf9d8816c9b3f8391
props: 10534 8699 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /trunk/client/gui-win32/gotodlg.c
copyroot: 0 /

id: yq.0.r13133/252315
type: file
pred: yq.0.r13046/137762
count: 62
text: 13133 190981 331 30853 5bdd094ca7b1a06e362b65b1a09cca25
props: 10883 3315 111 0 93646be3752db5a3cd8e77177837d494
cpath: /trunk/client/gui-win32/repodlgs.c
copyroot: 0 /

id: yg.0.r13133/252560
type: file
pred: yg.0.r13038/2055290
count: 54
text: 13133 198111 190 39443 9c08e4d12fa9d877f7bb49c7a3c68d6a
props: 10989 3605 111 0 d69121ee529fb8cb3643d711ec0f2158
cpath: /trunk/client/gui-win32/menu.c
copyroot: 0 /

id: xu.0.r13133/252802
type: file
pred: xu.0.r13046/138006
count: 87
text: 13133 171350 1252 56220 e1ec2244a742b42ae836715c3fd8424a
props: 10989 3964 111 0 8264fa93116f43c430f41dcf0da62390
cpath: /trunk/client/gui-win32/dialogs.c
copyroot: 0 /

id: xw.0.r13133/253047
type: file
pred: xw.0.r13046/138250
count: 31
text: 13133 113689 960 25563 0c371793a9cbcf9954d62f6316e61f3c
props: 10411 156138 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/client/gui-win32/diplodlg.c
copyroot: 0 /

id: xy.0.r13133/253294
type: file
pred: xy.0.r10411/156996
count: 6
text: 13133 182415 334 3875 834076fd811993b287a92046974c6c90
props: 10411 156873 110 0 fdfdab56f53d2388a66f6a5ce0985f95
cpath: /trunk/client/gui-win32/finddlg.c
copyroot: 0 /

id: yn.0.r13133/253538
type: file
pred: yn.0.r13038/2056760
count: 25
text: 13133 138867 96 12205 7315cab743f8c17aa5655418c7e55ac8
props: 10427 5013 111 0 0b146d6d431c2ad00452618c43381276
cpath: /trunk/client/gui-win32/plrdlg.c
copyroot: 0 /

id: yt.0.r13133/253781
type: file
pred: yt.0.r10427/5498
count: 17
text: 13133 164583 42 7988 addfb69c53d69be477e2df6a92a699e3
props: 10427 5374 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /trunk/client/gui-win32/spaceshipdlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file nr.0.r12315/66211
K 8
canvas.c
V 21
file 2ya.0.r10482/217
K 8
canvas.h
V 22
file 2yb.0.r10131/2132
K 10
chatline.c
V 21
file xk.0.r7930/24198
K 10
chatline.h
V 20
file xl.0.r5785/7678
K 9
citydlg.c
V 23
file xm.0.r13133/251830
K 9
citydlg.h
V 19
file xn.0.r5671/865
K 9
cityrep.c
V 22
file xo.0.r13076/10168
K 9
cityrep.h
V 22
file xp.0.r3745/159022
K 8
cma_fe.c
V 21
file 2fu.0.r9591/3114
K 8
cma_fe.h
V 20
file 2fv.0.r7442/210
K 8
colors.c
V 21
file xq.0.r10461/1484
K 8
colors.h
V 21
file xr.0.r10461/1841
K 12
connectdlg.c
V 24
file xs.0.r13038/2057003
K 12
connectdlg.h
V 20
file xt.0.r8331/7783
K 9
dialogs.c
V 23
file xu.0.r13133/252802
K 9
dialogs.h
V 21
file xv.0.r10883/4520
K 10
diplodlg.c
V 23
file xw.0.r13133/253047
K 10
diplodlg.h
V 22
file xx.0.r3745/146125
K 9
finddlg.c
V 23
file xy.0.r13133/253294
K 9
finddlg.h
V 22
file 2dg.0.r5989/39776
K 9
gotodlg.c
V 23
file xz.0.r13133/252074
K 9
gotodlg.h
V 20
file y0.0.r3786/3776
K 10
graphics.c
V 22
file y1.0.r11337/88168
K 10
graphics.h
V 21
file y2.0.r10294/2998
K 10
gui_main.c
V 22
file y3.0.r11434/11798
K 10
gui_main.h
V 20
file y4.0.r10222/314
K 11
gui_stuff.c
V 22
file y5.0.r13125/11675
K 11
gui_stuff.h
V 20
file y6.0.r7598/1609
K 11
happiness.c
V 25
file 137.0.r13038/2055042
K 11
happiness.h
V 21
file 138.0.r7542/3688
K 9
helpdlg.c
V 23
file y7.0.r13046/138982
K 9
helpdlg.h
V 22
file y8.0.r3745/150873
K 10
inputdlg.c
V 19
file y9.0.r8895/460
K 10
inputdlg.h
V 22
file ya.0.r3745/153242
K 10
inteldlg.c
V 23
file yb.0.r13046/138495
K 10
inteldlg.h
V 22
file 2dh.0.r5989/39102
K 9
mapctrl.c
V 21
file yc.0.r12331/5681
K 9
mapctrl.h
V 21
file yd.0.r6430/14685
K 9
mapview.c
V 24
file ye.0.r13038/2054551
K 9
mapview.h
V 19
file yf.0.r9875/209
K 6
menu.c
V 23
file yg.0.r13133/252560
K 6
menu.h
V 20
file yh.0.r5785/9458
K 12
messagedlg.c
V 22
file yi.0.r10488/20525
K 12
messagedlg.h
V 22
file 2di.0.r5989/40112
K 12
messagewin.c
V 21
file yj.0.r9098/24106
K 12
messagewin.h
V 22
file yk.0.r3745/155966
K 11
optiondlg.c
V 21
file yl.0.r7269/15007
K 11
optiondlg.h
V 21
file ym.0.r3959/96575
K 7
pages.c
V 21
file 2qk.0.r11080/439
K 7
pages.h
V 22
file 2ql.0.r8639/12634
K 8
plrdlg.c
V 23
file yn.0.r13133/253538
K 8
plrdlg.h
V 20
file yo.0.r3847/6164
K 10
ratesdlg.c
V 23
file yp.0.r13046/138739
K 10
ratesdlg.h
V 22
file 2dj.0.r5989/39439
K 10
repodlgs.c
V 23
file yq.0.r13133/252315
K 10
repodlgs.h
V 22
file yr.0.r3745/151547
K 14
spaceshipdlg.c
V 23
file yt.0.r13133/253781
K 14
spaceshipdlg.h
V 20
file yu.0.r3778/5068
K 8
sprite.c
V 22
file 2yc.0.r10294/2273
K 8
sprite.h
V 23
file 2yd.0.r10141/44406
K 8
themes.c
V 23
file 34z.0.r10945/20562
K 7
wldlg.c
V 23
file yv.0.r13027/102986
K 7
wldlg.h
V 21
file yw.0.r12515/1620
END
ENDREP
id: np.0.r13133/256775
type: dir
pred: np.0.r13125/14662
count: 592
text: 13133 254026 2736 2736 e75cf7d5f79c60a49b8e9888c0df2a9e
props: 11108 12557 68 0 fbaef5f6348d6ae4b0cc177104ca4ad2
cpath: /trunk/client/gui-win32
copyroot: 0 /

id: vu.0.r13133/257008
type: file
pred: vu.0.r13024/214861
count: 98
text: 13133 111824 142 39441 66c41ea79cea4d3a23e0ef71a52b2848
props: 11057 46140 111 0 8ab1a522471ad7dd5014b23b42c49491
cpath: /trunk/client/goto.c
copyroot: 0 /

id: n.0.r13133/257240
type: file
pred: n.0.r13068/19944
count: 607
text: 13133 111995 1666 93741 2494e27d06febae26b22b22585eeb9ec
props: 11088 14698 112 0 2c9d3e41a2f20488aa9cdb8d740d094e
cpath: /trunk/client/packhand.c
copyroot: 0 /

id: 170.0.r13133/257475
type: file
pred: 170.0.r13046/142443
count: 108
text: 13133 125339 908 123188 5328d4077698042aad325dd24be70e98
props: 10779 67589 111 0 515f6afa6448327e59cdac91d637f582
cpath: /trunk/client/gui-sdl/citydlg.c
copyroot: 0 /

id: 17f.0.r13133/257722
type: file
pred: 17f.0.r13038/2060727
count: 35
text: 13133 126277 999 11364 18bfe3fe0de7c086ed72c3f9e91c3863
props: 10534 12701 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /trunk/client/gui-sdl/gotodlg.c
copyroot: 0 /

id: 186.0.r13133/257968
type: file
pred: 186.0.r13062/70
count: 152
text: 13133 147111 1422 44625 46dcc001daa16475e55b7ab18d1f5226
props: 10779 67955 111 0 1566ee949d8102994e5ce1bbf3530de9
cpath: /trunk/client/gui-sdl/mapview.c
copyroot: 0 /

id: 18i.0.r13133/258211
type: file
pred: 18i.0.r13046/142936
count: 93
text: 13133 197835 246 108306 1ea2cb0f74c79cda7dd3329f79743fb3
props: 10779 68322 111 0 622f1432038f91cce287c1d90e4f7964
cpath: /trunk/client/gui-sdl/repodlgs.c
copyroot: 0 /

id: 188.0.r13133/258458
type: file
pred: 188.0.r13046/143184
count: 55
text: 13133 203852 49 40688 61500bbdb02a20db55a7860ebea97270
props: 10805 77668 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/client/gui-sdl/menu.c
copyroot: 0 /

id: 172.0.r13133/258699
type: file
pred: 172.0.r13046/143666
count: 52
text: 13133 64022 523 38692 c4d3b16d3ba5f2557a487557099c71be
props: 10779 68689 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /trunk/client/gui-sdl/cityrep.c
copyroot: 0 /

id: 17a.0.r13133/258943
type: file
pred: 17a.0.r13131/3599
count: 127
text: 13133 176494 361 97729 dd6f9abcc573434a6ca0c3f4699f3b65
props: 10805 78030 111 0 ae073b1a8624f4e72ab3bef202bf2f05
cpath: /trunk/client/gui-sdl/dialogs.c
copyroot: 0 /

id: 3bn.0.r13133/259187
type: file
pred: 3bn.0.r13046/144156
count: 23
text: 13133 183093 1294 44213 88ec7898192878c8b36bcd89fc501f46
props: 12670 114091 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-sdl/diplomat_dialog.c
copyroot: 0 /

id: 17c.0.r13133/259441
type: file
pred: 17c.0.r13046/144407
count: 45
text: 13133 123812 1080 52798 ba8fac7ca67f44f82629455c59a4389c
props: 10411 163500 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /trunk/client/gui-sdl/diplodlg.c
copyroot: 0 /

id: 17e.0.r13133/259689
type: file
pred: 17e.0.r13038/2062706
count: 35
text: 13133 192923 456 7921 96a4636d32697185b648980669346de1
props: 10411 164236 111 0 8e6f231ffe21dad0a34f68090b1c0b69
cpath: /trunk/client/gui-sdl/finddlg.c
copyroot: 0 /

id: 18f.0.r13133/259935
type: file
pred: 18f.0.r13038/2063201
count: 43
text: 13133 163810 448 23673 0ffaaddbb60358db32a6aa91dfd2822b
props: 10411 164967 111 0 28e613ef70fc8e4efe7ed7b15f74e6e7
cpath: /trunk/client/gui-sdl/plrdlg.c
copyroot: 0 /

id: 18m.0.r13133/260181
type: file
pred: 18m.0.r13038/2063446
count: 27
text: 13133 172929 42 7473 6a71b2426a02ec6cd08cdaf8e028aae0
props: 9803 7024 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /trunk/client/gui-sdl/spaceshipdlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 23
file 16u.0.r12526/14581
K 16
README.SDLClient
V 21
file 16x.0.r6786/5349
K 14
SDL_rotozoom.c
V 24
file 3jy.0.r12670/115301
K 14
SDL_rotozoom.h
V 24
file 3jz.0.r12670/115888
K 9
SDL_ttf.c
V 20
file 2dz.0.r12025/79
K 9
SDL_ttf.h
V 22
file 2e0.0.r6439/49488
K 11
alphablit.c
V 24
file 3be.0.r12670/111820
K 8
canvas.c
V 21
file 39i.0.r12877/214
K 8
canvas.h
V 22
file 39j.0.r12863/1497
K 16
caravan_dialog.c
V 23
file 3bp.0.r12699/32779
K 10
chatline.c
V 22
file 16y.0.r12884/9147
K 10
chatline.h
V 23
file 16z.0.r11278/68134
K 9
citydlg.c
V 24
file 170.0.r13133/257475
K 9
citydlg.h
V 23
file 171.0.r11361/37701
K 9
cityrep.c
V 24
file 172.0.r13133/258699
K 9
cityrep.h
V 22
file 173.0.r12769/2941
K 8
cma_fe.c
V 24
file 174.0.r13046/143426
K 8
cma_fe.h
V 23
file 175.0.r11361/43495
K 8
colors.c
V 23
file 176.0.r12278/23172
K 8
colors.h
V 23
file 177.0.r11354/23855
K 12
connectdlg.c
V 21
file 178.0.r12797/114
K 12
connectdlg.h
V 23
file 179.0.r12349/45319
K 9
dialogs.c
V 24
file 17a.0.r13133/258943
K 9
dialogs.h
V 23
file 17b.0.r12387/13707
K 10
diplodlg.c
V 24
file 17c.0.r13133/259441
K 10
diplodlg.h
V 22
file 17d.0.r11584/2869
K 17
diplomat_dialog.c
V 24
file 3bn.0.r13133/259187
K 9
finddlg.c
V 24
file 17e.0.r13133/259689
K 9
finddlg.h
V 20
file 2d8.0.r5991/702
K 9
gotodlg.c
V 24
file 17f.0.r13133/257722
K 9
gotodlg.h
V 22
file 17g.0.r6515/58208
K 10
graphics.c
V 23
file 17h.0.r12611/13457
K 10
graphics.h
V 23
file 17i.0.r12611/13939
K 11
gui_iconv.c
V 22
file 17l.0.r11463/6261
K 11
gui_iconv.h
V 22
file 17m.0.r11463/6499
K 8
gui_id.h
V 22
file 17n.0.r12715/2828
K 10
gui_main.c
V 23
file 17o.0.r13055/16146
K 10
gui_main.h
V 22
file 17p.0.r12884/7238
K 11
gui_mouse.c
V 24
file 3ca.0.r12670/111532
K 11
gui_mouse.h
V 24
file 3cb.0.r12670/112397
K 12
gui_string.c
V 21
file 17r.0.r13049/366
K 12
gui_string.h
V 23
file 17s.0.r11451/16087
K 14
gui_tilespec.c
V 20
file 191.0.r13128/94
K 14
gui_tilespec.h
V 23
file 192.0.r12411/33830
K 11
happiness.c
V 23
file 17x.0.r11361/41144
K 11
happiness.h
V 23
file 17y.0.r11361/41867
K 9
helpdlg.c
V 24
file 17z.0.r13046/144903
K 9
helpdlg.h
V 23
file 180.0.r11361/47416
K 10
inputdlg.c
V 23
file 181.0.r11361/47897
K 10
inputdlg.h
V 23
file 182.0.r5500/260641
K 10
inteldlg.c
V 24
file 183.0.r13046/144655
K 10
inteldlg.h
V 22
file 2d9.0.r11409/2687
K 9
mapctrl.c
V 22
file 184.0.r12884/8434
K 9
mapctrl.h
V 22
file 185.0.r12884/8672
K 9
mapview.c
V 24
file 186.0.r13133/257968
K 9
mapview.h
V 22
file 187.0.r12884/6760
K 6
menu.c
V 24
file 188.0.r13133/258458
K 6
menu.h
V 23
file 189.0.r12378/18861
K 12
messagedlg.c
V 23
file 18a.0.r11361/49350
K 12
messagedlg.h
V 22
file 2da.0.r5989/48394
K 12
messagewin.c
V 22
file 18b.0.r12884/7473
K 12
messagewin.h
V 23
file 18c.0.r6286/140236
K 5
mmx.h
V 23
file 2e1.0.r6286/134429
K 11
optiondlg.c
V 22
file 18d.0.r12884/6046
K 11
optiondlg.h
V 22
file 18e.0.r12381/2174
K 7
pages.c
V 23
file 2qg.0.r12699/33028
K 7
pages.h
V 22
file 2qh.0.r8639/16416
K 8
plrdlg.c
V 24
file 18f.0.r13133/259935
K 8
plrdlg.h
V 22
file 18g.0.r6387/81301
K 10
ratesdlg.h
V 22
file 2db.0.r5989/47726
K 10
repodlgs.c
V 24
file 18i.0.r13133/258211
K 10
repodlgs.h
V 23
file 18j.0.r12411/34076
K 14
spaceshipdlg.c
V 24
file 18m.0.r13133/260181
K 14
spaceshipdlg.h
V 23
file 18n.0.r5500/263363
K 8
sprite.c
V 24
file 39k.0.r12670/106912
K 8
sprite.h
V 24
file 39l.0.r12670/108062
K 18
themebackgrounds.c
V 24
file 3ff.0.r12670/109497
K 18
themebackgrounds.h
V 24
file 3fg.0.r12670/110950
K 13
themecolors.c
V 24
file 392.0.r12670/113849
K 13
themecolors.h
V 24
file 393.0.r12670/114433
K 8
themes.c
V 24
file 38p.0.r12670/109789
K 11
themespec.c
V 24
file 390.0.r12670/112682
K 11
themespec.h
V 24
file 391.0.r12670/113267
K 11
unistring.c
V 21
file 18o.0.r11902/914
K 11
unistring.h
V 23
file 18p.0.r11361/40418
K 8
widget.c
V 24
file 3fu.0.r12670/109211
K 8
widget.h
V 24
file 3fv.0.r12670/110372
K 15
widget_button.c
V 24
file 3fh.0.r12670/112974
K 15
widget_button.h
V 24
file 3g7.0.r12670/113556
K 17
widget_checkbox.c
V 24
file 3fi.0.r12670/116518
K 17
widget_checkbox.h
V 24
file 3g8.0.r12670/106620
K 13
widget_core.c
V 24
file 3fj.0.r12670/114722
K 13
widget_edit.c
V 24
file 3fk.0.r12670/115009
K 13
widget_edit.h
V 24
file 3g9.0.r12670/115595
K 13
widget_icon.c
V 24
file 3fl.0.r12670/111242
K 13
widget_icon.h
V 24
file 3ga.0.r12670/112107
K 14
widget_label.c
V 24
file 3fm.0.r12670/108919
K 14
widget_label.h
V 24
file 3gb.0.r12670/110079
K 10
widget_p.h
V 24
file 3fn.0.r12670/107197
K 18
widget_scrollbar.c
V 24
file 3fo.59n.r12917/8446
K 18
widget_scrollbar.h
V 24
file 3gc.0.r12670/116811
K 15
widget_window.c
V 23
file 3fp.0.r12699/32039
K 15
widget_window.h
V 23
file 3gd.0.r12699/32533
K 7
wldlg.c
V 24
file 18q.0.r13046/145149
K 7
wldlg.h
V 23
file 18r.0.r11361/49592
END
ENDREP
id: 16t.0.r13133/265234
type: dir
pred: 16t.0.r13131/8643
count: 433
text: 13133 260428 4793 4793 3a9bd022d52e8d566e695e4653b5b25c
props: 11108 12869 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-sdl
copyroot: 0 /

id: 14u.0.r13133/265466
type: file
pred: 14u.0.r13038/2068997
count: 27
text: 13133 65471 253 10408 d4918f61ea2ffd05213befd446859afe
props: 11094 491 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/client/plrdlg_common.c
copyroot: 0 /

id: 2k9.0.r13133/265707
type: file
pred: 2k9.0.r10452/784
count: 4
text: 13133 92379 109 3050 694c8b4508bdc7b22b34a4011d5ae74d
props: 10452 661 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/client/gui-ftwl/citydlg.c
copyroot: 0 /

id: 2kz.0.r13133/265945
type: file
pred: 2kz.0.r13038/2069237
count: 32
text: 13133 97755 13180 49777 b97236e2874b4df3f5d2465d2bc3d571
props: 10452 1016 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/client/gui-ftwl/mapview.c
copyroot: 0 /

id: 2mr.0.r13133/266192
type: file
pred: 2mr.0.r13046/150441
count: 20
text: 13133 162955 580 14719 be3b8b2e5dec518f0f9b277041196f6f
props: 10805 82177 111 0 8e6f231ffe21dad0a34f68090b1c0b69
cpath: /trunk/client/gui-ftwl/gui_text.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 23
file 2k4.0.r12315/74268
K 8
canvas.c
V 22
file 2ye.0.r12291/8284
K 8
canvas.h
V 23
file 2yf.0.r10109/10676
K 6
chat.c
V 22
file 2k5.0.r11941/7401
K 6
chat.h
V 22
file 2k6.0.r7939/79684
K 10
chatline.c
V 22
file 2k7.0.r11941/6451
K 10
chatline.h
V 22
file 2k8.0.r7939/74301
K 9
citydlg.c
V 24
file 2k9.0.r13133/265707
K 9
citydlg.h
V 22
file 2ka.0.r7939/67918
K 9
cityrep.c
V 22
file 2kb.0.r7939/78333
K 9
cityrep.h
V 22
file 2kc.0.r7939/80015
K 8
colors.c
V 22
file 2kd.0.r11941/5347
K 8
colors.h
V 22
file 2ke.0.r11941/5582
K 12
connectdlg.c
V 22
file 2kf.0.r11941/7635
K 12
connectdlg.h
V 22
file 2kg.0.r7939/80350
K 9
dialogs.c
V 25
file 2kh.0.r13038/2069483
K 9
dialogs.h
V 22
file 2ki.0.r7939/80688
K 10
diplodlg.c
V 22
file 2kj.0.r7939/64892
K 10
diplodlg.h
V 22
file 2kk.0.r7939/67247
K 9
finddlg.c
V 22
file 2kl.0.r7939/69930
K 9
finddlg.h
V 22
file 2km.0.r7939/70941
K 9
gotodlg.c
V 22
file 2kn.0.r11941/5112
K 9
gotodlg.h
V 22
file 2ko.0.r7939/67583
K 10
graphics.c
V 23
file 2kp.0.r10141/54754
K 10
graphics.h
V 22
file 2kq.0.r7939/68252
K 10
gui_main.c
V 22
file 2kr.0.r11943/1054
K 10
gui_main.h
V 22
file 2ks.0.r11943/1292
K 10
gui_text.c
V 24
file 2mr.0.r13133/266192
K 10
gui_text.h
V 22
file 2ms.0.r11941/8598
K 9
helpdlg.c
V 22
file 2kt.0.r7939/71611
K 9
helpdlg.h
V 22
file 2ku.0.r7939/72285
K 10
inteldlg.c
V 22
file 2kv.0.r7939/66910
K 10
inteldlg.h
V 22
file 2kw.0.r7939/69594
K 9
mapctrl.c
V 21
file 2kx.0.r12159/863
K 9
mapctrl.h
V 22
file 2ky.0.r7939/69259
K 9
mapview.c
V 24
file 2kz.0.r13133/265945
K 9
mapview.h
V 21
file 2l0.0.r11943/817
K 6
menu.c
V 22
file 2l1.0.r7939/75312
K 6
menu.h
V 22
file 2l2.0.r7939/76324
K 12
messagedlg.c
V 22
file 2l3.0.r7939/76990
K 12
messagedlg.h
V 22
file 2l4.0.r7939/79008
K 12
messagewin.c
V 23
file 2l5.0.r9577/142349
K 12
messagewin.h
V 22
file 2l6.0.r7939/75986
K 7
pages.c
V 22
file 2qc.0.r11943/1528
K 7
pages.h
V 22
file 2qd.0.r8639/25123
K 8
plrdlg.c
V 23
file 2l7.0.r9577/141628
K 8
plrdlg.h
V 22
file 2l8.0.r7939/73967
K 10
ratesdlg.c
V 22
file 2l9.0.r7939/68588
K 10
ratesdlg.h
V 22
file 2la.0.r7939/70605
K 10
repodlgs.c
V 22
file 2lb.0.r7939/71947
K 10
repodlgs.h
V 22
file 2lc.0.r7939/72955
K 14
spaceshipdlg.c
V 22
file 2ld.0.r7939/75645
K 14
spaceshipdlg.h
V 22
file 2le.0.r7939/77329
K 8
sprite.c
V 23
file 2yg.0.r11958/37010
K 8
sprite.h
V 23
file 2yh.0.r10141/56198
K 8
themes.c
V 24
file 3cc.0.r12670/122700
K 7
wldlg.c
V 22
file 2lf.0.r7939/76656
K 7
wldlg.h
V 22
file 2lg.0.r7939/77669
END
ENDREP
id: 2k2.0.r13133/268950
type: dir
pred: 2k2.0.r13046/153197
count: 79
text: 13133 266439 2498 2498 f8978545e0f83e7fc0e1a69fdf024814
props: 11108 13191 78 0 667fe0aa2722f6798d567486294a1d2e
cpath: /trunk/client/gui-ftwl
copyroot: 0 /

id: h1.0.r13133/269184
type: file
pred: h1.0.r13046/153432
count: 156
text: 13133 11304 1377 50312 fcb976b997ab4d720defa249995c0e9e
props: 10865 39466 112 0 7c92b74246787b3b87930d3304880700
cpath: /trunk/client/helpdata.c
copyroot: 0 /

id: kp.0.r13133/269421
type: file
pred: kp.0.r13038/2072961
count: 99
text: 13133 32630 71 76762 02849191d11ab60f485cceaf0bc69002
props: 10779 76298 111 0 84ca0344c22ad8149c962ec888471b3d
cpath: /trunk/client/gui-mui/citydlg.c
copyroot: 0 /

id: l3.0.r13133/269663
type: file
pred: l3.0.r10534/17334
count: 16
text: 13133 32731 1454 6080 6829b34c34518725c6af3a15aec8aff8
props: 10534 17210 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/client/gui-mui/gotodlg.c
copyroot: 0 /

id: lg.0.r13133/269904
type: file
pred: lg.0.r13038/2073205
count: 76
text: 13133 64656 153 17288 360b8d63ead878ec6d131c3f83cc6d5a
props: 10411 174780 111 0 04c7a6fe9bf3a5db3539a62041388438
cpath: /trunk/client/gui-mui/mapview.c
copyroot: 0 /

id: ls.0.r13133/270148
type: file
pred: ls.0.r13046/153669
count: 44
text: 13133 122413 463 27283 89732e017b2177972992c729bfcee28b
props: 10779 76662 111 0 2e2357461112b5dbc5fe4daab6abde1a
cpath: /trunk/client/gui-mui/repodlgs.c
copyroot: 0 /

id: l7.0.r13133/270392
type: file
pred: l7.0.r13046/153913
count: 102
text: 13133 128041 720 52670 c3289f5738aa5425694bdc17019da59e
props: 10805 85638 111 0 89e24921275908e1dbda216a065c4859
cpath: /trunk/client/gui-mui/gui_main.c
copyroot: 0 /

id: kx.0.r13133/270637
type: file
pred: kx.0.r13046/154157
count: 67
text: 13133 92887 1041 55187 570fcec1120bd0aa078376c13ff6def9
props: 10411 175880 111 0 e77f29e20031f26b4b1e16b63c7aa55c
cpath: /trunk/client/gui-mui/dialogs.c
copyroot: 0 /

id: kz.0.r13133/270881
type: file
pred: kz.0.r13046/154401
count: 23
text: 13133 31716 885 27755 7d480c8c39afb7aea5207630e383fe1d
props: 10411 176246 111 0 5515c59917848b493fbf45ffb42836b3
cpath: /trunk/client/gui-mui/diplodlg.c
copyroot: 0 /

id: l1.0.r13133/271125
type: file
pred: l1.0.r10411/177099
count: 9
text: 13133 121849 114 4099 36e7e688a8e1177eb61ebdb899c9527d
props: 10411 176976 110 0 a3ee73c7ed0bd397f9f2fedc7793a5b7
cpath: /trunk/client/gui-mui/finddlg.c
copyroot: 0 /

id: l9.0.r13133/271367
type: file
pred: l9.0.r13046/154889
count: 49
text: 13133 6042 86 32445 8b3c02bdca2bca9d76fcd3626b0a5d7f
props: 10702 55433 111 0 14533b38c2d22fb145a05b253c8fb2e8
cpath: /trunk/client/gui-mui/helpdlg.c
copyroot: 0 /

id: lq.0.r13133/271607
type: file
pred: lq.0.r13038/2074673
count: 32
text: 13133 72397 5593 11765 8f490a260c43eed785b598ce3c94e03b
props: 10411 177704 111 0 b4233197920770c602c29330b7f7c623
cpath: /trunk/client/gui-mui/plrdlg.c
copyroot: 0 /

id: lc.0.r13133/271851
type: file
pred: lc.0.r13046/155133
count: 116
text: 13133 197324 484 91387 bfab4890e0675e568c9052f5456e49bc
props: 10534 17571 112 0 38e7472c3fd02ed04f845e4224c0a8a6
cpath: /trunk/client/gui-mui/mapclass.c
copyroot: 0 /

id: lu.0.r13133/272096
type: file
pred: lu.0.r9577/147430
count: 17
text: 13133 90209 69 8951 b2d3c6bc7b9a90ffff17ca28e95f958e
props: 9577 147306 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /trunk/client/gui-mui/spaceshipdlg.c
copyroot: 0 /

PLAIN
K 16
autogroupclass.c
V 22
file uz.0.r6129/117369
K 16
autogroupclass.h
V 21
file v0.0.r3959/76954
K 10
chatline.c
V 21
file kn.0.r7930/34810
K 10
chatline.h
V 21
file ko.0.r2584/15812
K 9
citydlg.c
V 23
file kp.0.r13133/269421
K 9
citydlg.h
V 20
file kq.0.r2591/6264
K 9
cityrep.c
V 22
file kr.0.r13076/13384
K 9
cityrep.h
V 21
file ks.0.r2584/19406
K 8
colors.c
V 22
file kt.0.r5390/127719
K 8
colors.h
V 21
file ku.0.r3605/10995
K 16
colortextclass.c
V 22
file ut.0.r6129/118831
K 16
colortextclass.h
V 21
file uu.0.r3091/26821
K 12
connectdlg.c
V 22
file kv.0.r10804/22205
K 12
connectdlg.h
V 22
file kw.0.r1827/164003
K 9
dialogs.c
V 23
file kx.0.r13133/270637
K 9
dialogs.h
V 20
file ky.0.r2899/5409
K 10
diplodlg.c
V 23
file kz.0.r13133/270881
K 10
diplodlg.h
V 21
file l0.0.r2584/11527
K 9
finddlg.c
V 23
file l1.0.r13133/271125
K 9
finddlg.h
V 22
file 2d4.0.r5989/26966
K 10
gamedlgs.c
V 24
file l2.0.r13038/2075163
K 9
gotodlg.c
V 23
file l3.0.r13133/269663
K 9
gotodlg.h
V 22
file l4.0.r1827/153192
K 10
graphics.c
V 22
file l5.0.r10387/32920
K 10
graphics.h
V 22
file l6.0.r10141/60749
K 10
gui_main.c
V 23
file l7.0.r13133/270392
K 10
gui_main.h
V 22
file l8.0.r9030/122286
K 9
helpdlg.c
V 23
file l9.0.r13133/271367
K 9
helpdlg.h
V 20
file la.0.r2705/1421
K 20
historystringclass.c
V 22
file ur.0.r6129/120306
K 20
historystringclass.h
V 21
file us.0.r3959/80913
K 10
inputdlg.c
V 22
file uj.0.r5390/130978
K 10
inputdlg.h
V 20
file uk.0.r2585/3222
K 10
inteldlg.c
V 23
file lb.0.r13046/154646
K 10
inteldlg.h
V 22
file 2d5.0.r5989/26298
K 10
mapclass.c
V 23
file lc.0.r13133/271851
K 10
mapclass.h
V 22
file ld.0.r10141/61474
K 9
mapctrl.c
V 21
file le.0.r7018/34558
K 9
mapctrl.h
V 19
file lf.0.r3181/168
K 9
mapview.c
V 23
file lg.0.r13133/269904
K 9
mapview.h
V 21
file lh.0.r8407/27477
K 12
messagedlg.c
V 21
file li.0.r5819/35432
K 12
messagedlg.h
V 22
file 2d6.0.r5989/27299
K 12
messagewin.c
V 19
file lj.0.r5724/407
K 12
messagewin.h
V 22
file lk.0.r1827/160954
K 10
muistuff.c
V 22
file ll.0.r6129/119568
K 10
muistuff.h
V 20
file lm.0.r5725/5136
K 17
objecttreeclass.c
V 22
file m0.0.r6129/119198
K 17
objecttreeclass.h
V 21
file m1.0.r3959/78038
K 11
optiondlg.h
V 21
file ln.0.r2584/12238
K 15
overviewclass.c
V 22
file lo.0.r10304/78965
K 15
overviewclass.h
V 21
file lp.0.r3959/76236
K 8
plrdlg.c
V 23
file lq.0.r13133/271607
K 8
plrdlg.h
V 22
file lr.0.r1827/158921
K 10
ratesdlg.h
V 22
file 2d7.0.r5989/26632
K 10
repodlgs.c
V 23
file ls.0.r13133/270148
K 10
repodlgs.h
V 21
file lt.0.r4748/16078
K 19
scrollbuttonclass.c
V 22
file oq.0.r6129/118099
K 19
scrollbuttonclass.h
V 21
file or.0.r3959/77315
K 14
spaceshipdlg.c
V 23
file lu.0.r13133/272096
K 14
spaceshipdlg.h
V 21
file lv.0.r2584/17966
K 24
transparentstringclass.c
V 22
file vn.0.r6129/119929
K 24
transparentstringclass.h
V 21
file vo.0.r3959/80543
K 7
wldlg.c
V 22
file of.0.r5390/132791
K 7
wldlg.h
V 20
file og.0.r4793/4641
K 15
worklistclass.c
V 23
file oh.0.r13027/114140
K 15
worklistclass.h
V 20
file oi.0.r4800/2912
END
ENDREP
id: km.0.r13133/275376
type: dir
pred: km.0.r13076/16659
count: 407
text: 13133 272340 3023 3023 c381aa413829559fcfb0f7302f7b5001
props: 11108 13513 41 0 a25f21b3aa3ce56d05ef272a98288297
cpath: /trunk/client/gui-mui
copyroot: 0 /

id: hl.0.r13133/275607
type: file
pred: hl.0.r13109/3021
count: 371
text: 13133 29529 1727 159173 96b08dfbfa9781445b9d9e89307094f5
props: 11096 3792 112 0 71c6b453a620995957914f193a952f13
cpath: /trunk/client/tilespec.c
copyroot: 0 /

id: 15m.0.r13133/275842
type: file
pred: 15m.0.r13027/117887
count: 74
text: 13133 172710 189 23751 8ff2892b2a8736635b25a2ee1ed92e40
props: 11057 48634 111 0 e77f29e20031f26b4b1e16b63c7aa55c
cpath: /trunk/client/mapctrl_common.c
copyroot: 0 /

id: i6.0.r13133/276086
type: file
pred: i6.0.r12881/21795
count: 172
text: 13133 60994 382 9267 8ac654cdc16bd917d8ac7ce6ec0b9da4
props: 11011 1634 112 0 2772e2600f52d1215973b0ec3802f304
cpath: /trunk/client/tilespec.h
copyroot: 0 /

id: mn.0.r13133/276319
type: file
pred: mn.0.r11749/1399
count: 8
text: 13133 65753 2980 2965 527c992f14b4213f43fb02b8ce4d5a74
props: 10304 82849 110 0 705660468cdcbf270377dea86b274451
cpath: /trunk/client/gui-stub/citydlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file mj.0.r12315/77238
K 8
canvas.c
V 22
file 2y0.0.r11749/2105
K 8
canvas.h
V 23
file 2y1.0.r10095/12720
K 10
chatline.c
V 21
file ml.0.r7930/39139
K 10
chatline.h
V 21
file mm.0.r5491/41569
K 9
citydlg.c
V 23
file mn.0.r13133/276319
K 9
citydlg.h
V 21
file mo.0.r5491/35843
K 9
cityrep.c
V 22
file mp.0.r10144/11456
K 9
cityrep.h
V 21
file mq.0.r5491/46587
K 8
colors.c
V 22
file mr.0.r10458/11165
K 8
colors.h
V 22
file ms.0.r10458/11524
K 12
connectdlg.c
V 21
file mt.0.r11749/2576
K 12
connectdlg.h
V 21
file mu.0.r5491/46943
K 9
dialogs.c
V 22
file mv.0.r12859/47526
K 9
dialogs.h
V 20
file mw.0.r8956/1107
K 10
diplodlg.c
V 21
file mx.0.r10144/8226
K 10
diplodlg.h
V 21
file my.0.r5491/35128
K 9
finddlg.c
V 21
file mz.0.r5491/37629
K 9
finddlg.h
V 22
file 2dc.0.r5989/44093
K 9
gotodlg.c
V 21
file n0.0.r11749/1167
K 9
gotodlg.h
V 21
file n1.0.r5491/35486
K 10
graphics.c
V 22
file n2.0.r10141/65831
K 10
graphics.h
V 21
file n3.0.r5491/36199
K 10
gui_main.c
V 22
file n4.0.r11434/22292
K 10
gui_main.h
V 21
file n5.0.r5491/41925
K 9
helpdlg.c
V 21
file n6.0.r10144/9660
K 9
helpdlg.h
V 21
file n7.0.r5491/39423
K 10
inteldlg.c
V 21
file n8.0.r7847/24779
K 10
inteldlg.h
V 22
file 2dd.0.r5989/43421
K 9
mapctrl.c
V 21
file n9.0.r7018/49625
K 9
mapctrl.h
V 21
file na.0.r5491/37272
K 9
mapview.c
V 20
file nb.0.r12524/749
K 9
mapview.h
V 21
file nc.0.r5491/38349
K 6
menu.c
V 22
file nd.0.r10144/11100
K 6
menu.h
V 21
file ne.0.r5491/43723
K 12
messagedlg.c
V 21
file nf.0.r5491/44434
K 12
messagedlg.h
V 22
file 2de.0.r5989/44428
K 12
messagewin.c
V 21
file ng.0.r9098/29017
K 12
messagewin.h
V 21
file nh.0.r5491/43363
K 7
pages.c
V 22
file 2qi.0.r11749/2340
K 7
pages.h
V 22
file 2qj.0.r8639/28697
K 8
plrdlg.c
V 21
file ni.0.r9098/28662
K 8
plrdlg.h
V 21
file nj.0.r5491/41213
K 10
ratesdlg.c
V 21
file nk.0.r5491/36557
K 10
ratesdlg.h
V 22
file 2df.0.r5989/43757
K 10
repodlgs.c
V 22
file nl.0.r10144/10019
K 10
repodlgs.h
V 21
file nm.0.r5491/40138
K 14
spaceshipdlg.c
V 21
file nn.0.r5491/42999
K 14
spaceshipdlg.h
V 21
file no.0.r5491/44796
K 8
sprite.c
V 22
file 2y2.0.r11749/1632
K 8
sprite.h
V 23
file 2y3.0.r10095/12384
K 8
themes.c
V 23
file 34y.0.r10945/24922
K 7
wldlg.c
V 21
file qj.0.r5491/44077
K 7
wldlg.h
V 21
file qk.0.r5491/45158
END
ENDREP
id: mh.0.r13133/278857
type: dir
pred: mh.0.r12859/50056
count: 130
text: 13133 276559 2285 2285 40bbf67fc0307ce5792864d8d8cadbd0
props: 11108 13796 68 0 fbaef5f6348d6ae4b0cc177104ca4ad2
cpath: /trunk/client/gui-stub
copyroot: 0 /

id: d5.0.r13133/279089
type: file
pred: d5.0.r13046/159116
count: 176
text: 13133 115101 6720 35646 f7b04903965a2c1f965cc40938e9ef38
props: 11057 49717 112 0 a13a5521476fb3b00a5e0433e6f85ac7
cpath: /trunk/client/climisc.c
copyroot: 0 /

id: 3bg.0.r13133/279326
type: file
pred: 3bg.0.r13024/231939
count: 10
text: 13133 176173 292 12024 09dcc517a428468ae11fc13a24252114
props: 12670 125674 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/editor.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 21
file 5f.0.r12357/8748
K 6
agents
V 22
dir zf.0.r13133/237048
K 11
attribute.c
V 22
file xh.0.r13068/20176
K 11
attribute.h
V 19
file xi.0.r4715/844
K 7
audio.c
V 22
file 139.0.r10416/5460
K 7
audio.h
V 22
file 13a.0.r10416/6162
K 12
audio_none.c
V 23
file 13d.0.r6129/145164
K 12
audio_none.h
V 22
file 13e.0.r4452/27228
K 11
audio_sdl.c
V 21
file 13f.0.r10418/395
K 11
audio_sdl.h
V 22
file 13g.0.r4452/26570
K 17
chatline_common.c
V 23
file 14q.0.r9577/151065
K 17
chatline_common.h
V 23
file 14r.0.r9577/151422
K 16
citydlg_common.c
V 23
file z4.0.r13133/237276
K 16
citydlg_common.h
V 22
file z5.0.r12502/22017
K 13
cityrepdata.c
V 22
file mb.0.r13027/92154
K 13
cityrepdata.h
V 21
file mc.0.r9153/21475
K 11
civclient.c
V 23
file 2f.0.r13046/158886
K 11
civclient.h
V 21
file hz.0.r11758/7740
K 8
climap.c
V 23
file 197.0.r11057/48047
K 8
climap.h
V 22
file 198.0.r11804/3994
K 9
climisc.c
V 23
file d5.0.r13133/279089
K 9
climisc.h
V 21
file i0.0.r12552/9622
K 8
clinet.c
V 20
file hc.0.r13116/185
K 8
clinet.h
V 22
file i1.0.r12484/13649
K 15
colors_common.c
V 24
file 33a.0.r13133/237514
K 15
colors_common.h
V 23
file 33b.0.r13015/10629
K 19
connectdlg_common.c
V 23
file 2fw.0.r12637/24070
K 19
connectdlg_common.h
V 23
file 2fx.0.r12637/24311
K 9
control.c
V 23
file gz.0.r13133/237755
K 9
control.h
V 22
file i2.0.r13095/70279
K 8
editor.c
V 24
file 3bg.0.r13133/279326
K 8
editor.h
V 23
file 3bh.0.r12771/15162
K 11
ggzclient.c
V 24
file 394.0.r12670/122138
K 11
ggzclient.h
V 24
file 395.0.r12670/122419
K 6
goto.c
V 23
file vu.0.r13133/257008
K 6
goto.h
V 22
file vv.0.r11378/41010
K 8
gui-ftwl
V 23
dir 2k2.0.r13133/268950
K 11
gui-gtk-2.0
V 22
dir zs.0.r13133/244740
K 7
gui-mui
V 22
dir km.0.r13133/275376
K 7
gui-sdl
V 23
dir 16t.0.r13133/265234
K 8
gui-stub
V 22
dir mh.0.r13133/278857
K 9
gui-win32
V 22
dir np.0.r13133/256775
K 7
gui-xaw
V 22
dir 9o.0.r13133/251598
K 10
helpdata.c
V 23
file h1.0.r13133/269184
K 10
helpdata.h
V 22
file i3.0.r11595/12124
K 7
include
V 21
dir b8.0.r12859/42040
K 16
mapctrl_common.c
V 24
file 15m.0.r13133/275842
K 16
mapctrl_common.h
V 23
file 15n.0.r11378/41712
K 16
mapview_common.c
V 23
file z2.0.r13027/118129
K 16
mapview_common.h
V 22
file z3.0.r12881/22258
K 19
messagewin_common.c
V 23
file 14s.0.r11057/47330
K 19
messagewin_common.h
V 23
file 14t.0.r8387/154818
K 9
options.c
V 24
file dc.0.r12988/4295264
K 9
options.h
V 21
file i4.0.r11771/7549
K 17
overview_common.c
V 23
file 2yk.0.r11057/37541
K 17
overview_common.h
V 21
file 2yl.0.r10927/997
K 10
packhand.c
V 22
file n.0.r13133/257240
K 10
packhand.h
V 22
file i5.0.r10865/39236
K 15
plrdlg_common.c
V 24
file 14u.0.r13133/265466
K 15
plrdlg_common.h
V 23
file 14v.0.r10581/10242
K 17
repodlgs_common.c
V 25
file 11i.0.r13038/2048652
K 17
repodlgs_common.h
V 23
file 11j.0.r10846/16483
K 9
reqtree.c
V 23
file 2ym.0.r13027/91680
K 9
reqtree.h
V 23
file 2yn.0.r10360/77520
K 9
servers.c
V 20
file 33x.0.r12574/52
K 9
servers.h
V 22
file 33y.0.r11098/4793
K 6
text.c
V 24
file 2g3.0.r13133/244975
K 6
text.h
V 22
file 2g4.0.r11667/8274
K 15
themes_common.c
V 22
file 352.0.r11118/5618
K 15
themes_common.h
V 22
file 353.0.r11118/5853
K 10
tilespec.c
V 23
file hl.0.r13133/275607
K 10
tilespec.h
V 23
file i6.0.r13133/276086
END
ENDREP
id: d.0.r13133/282847
type: dir
pred: d.0.r13131/12146
count: 4115
text: 13133 279562 3272 3272 b5181326c830c2360d4d37c004393d14
props: 12883 2898 109 0 732f4656541fb514e4368d9517bdf317
cpath: /trunk/client
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 21
dir d.0.r13133/282847
K 6
common
V 21
dir p.0.r13133/229836
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.r13133/284366
type: dir
pred: 3.0.r13131/13657
count: 11056
text: 13133 283069 1284 1284 60e43f39f43edc8067fa0b4c92d1a91a
props: 11109 0 255 0 8cbc80e0da9c47b05b8ffee17ea9b0f1
cpath: /trunk
copyroot: 0 /

PLAIN
K 8
branches
V 20
dir 1.0.r13132/14246
K 4
tags
V 19
dir 2.0.r12895/2647
K 5
trunk
V 21
dir 3.0.r13133/284366
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r13133/284742
type: dir
pred: 0.0.r13132/14566
count: 13133
text: 13133 284579 150 150 8533a675c4898edf8f26856be7d2db68
cpath: /
copyroot: 0 /

ay.0.t13132-1 modify true false /trunk/client/gui-xaw/repodlgs.c

2du.0.t13132-1 modify true false /trunk/common/aicore/pf_tools.c

2wr.0.t13132-1 modify true false /trunk/common/requirements.h

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

a6.0.t13132-1 modify true false /trunk/client/gui-xaw/dialogs.c

aw.0.t13132-1 modify true false /trunk/client/gui-xaw/plrdlg.c

2lh.0.t13132-1 modify true false /trunk/ai/aisettler.c

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

bm.0.t13132-1 modify true false /trunk/client/gui-xaw/gui_main.c

37p.0.t13132-1 modify true false /trunk/client/gui-xaw/diplomat_dialog.c

18m.0.t13132-1 modify true false /trunk/client/gui-sdl/spaceshipdlg.c

1m.0.t13132-1 modify true false /trunk/ai/advdomestic.c

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

118.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/repodlgs.c

xm.0.t13132-1 modify true false /trunk/client/gui-win32/citydlg.c

xz.0.t13132-1 modify true false /trunk/client/gui-win32/gotodlg.c

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

aa.0.t13132-1 modify true false /trunk/client/gui-xaw/finddlg.c

2eo.0.t13132-1 modify true false /trunk/common/effects.c

v.0.t13132-1 modify true false /trunk/common/unit.c

l9.0.t13132-1 modify true false /trunk/client/gui-mui/helpdlg.c

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

10k.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/gui_main.c

lq.0.t13132-1 modify true false /trunk/client/gui-mui/plrdlg.c

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

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

321.0.t13132-1 modify true false /trunk/server/scripting/api_find.c

4z.0.t13132-1 modify true false /trunk/server/stdinhand.c

b.0.t13132-1 modify true false /trunk/ai/aiunit.c

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

z4.0.t13132-1 modify true false /trunk/client/citydlg_common.c

33a.0.t13132-1 modify true false /trunk/client/colors_common.c

c.0.t13132-1 modify true false /trunk/ai/aiunit.h

lc.0.t13132-1 modify true false /trunk/client/gui-mui/mapclass.c

100.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/cityrep.c

18i.0.t13132-1 modify true false /trunk/client/gui-sdl/repodlgs.c

2mr.0.t13132-1 modify true false /trunk/client/gui-ftwl/gui_text.c

335.0.t13132-1 modify true false /trunk/ai/aiguard.c

zj.0.t13132-1 modify true false /trunk/client/agents/cma_core.c

15o.0.t13132-1 modify true false /trunk/ai/aidata.c

22.0.t13132-1 modify true false /trunk/ai/aihand.c

xu.0.t13132-1 modify true false /trunk/client/gui-win32/dialogs.c

2ys.0.t13132-1 modify true false /trunk/common/tile.c

188.0.t13132-1 modify true false /trunk/client/gui-sdl/menu.c

l3.0.t13132-1 modify true false /trunk/client/gui-mui/gotodlg.c

kp.0.t13132-1 modify true false /trunk/client/gui-mui/citydlg.c

2iw.0.t13132-1 modify true false /trunk/ai/aiferry.c

2dw.0.t13132-1 modify true false /trunk/server/connecthand.c

xw.0.t13132-1 modify true false /trunk/client/gui-win32/diplodlg.c

172.0.t13132-1 modify true false /trunk/client/gui-sdl/cityrep.c

lg.0.t13132-1 modify true false /trunk/client/gui-mui/mapview.c

b2.0.t13132-1 modify true false /trunk/client/gui-xaw/spaceshipdlg.c

115.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/plrdlg.c

2m0.0.t13132-1 modify true false /trunk/server/settings.c

2ll.0.t13132-1 modify true false /trunk/common/fc_types.h

xy.0.t13132-1 modify true false /trunk/client/gui-win32/finddlg.c

1u.0.t13132-1 modify true false /trunk/ai/advmilitary.c

vi.0.t13132-1 modify true false /trunk/server/report.c

2gc.0.t13132-1 modify true false /trunk/ai/aihunt.c

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

4i.0.t13132-1 modify true false /trunk/server/cityturn.c

lw.0.t13132-1 modify true false /trunk/server/barbarian.c

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

3r.0.t13132-1 modify true false /trunk/common/diptreaty.c

h1.0.t13132-1 modify true false /trunk/client/helpdata.c

3u.0.t13132-1 modify true false /trunk/common/game.c

2ek.0.t13132-1 modify true false /trunk/ai/advdiplomacy.c

18f.0.t13132-1 modify true false /trunk/client/gui-sdl/plrdlg.c

3v.0.t13132-1 modify true false /trunk/common/game.h

yt.0.t13132-1 modify true false /trunk/client/gui-win32/spaceshipdlg.c

2fy.0.t13132-1 modify true false /trunk/client/agents/sha.c

16r.0.t13132-1 modify true false /trunk/ai/aidiplomat.c

kx.0.t13132-1 modify true false /trunk/client/gui-mui/dialogs.c

13.0.t13132-1 modify true false /trunk/server/maphand.c

10e.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/gotodlg.c

zy.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/citydlg.c

3bk.0.t13132-1 modify true false /trunk/server/edithand.c

hl.0.t13132-1 modify true false /trunk/client/tilespec.c

15m.0.t13132-1 modify true false /trunk/client/mapctrl_common.c

kz.0.t13132-1 modify true false /trunk/client/gui-mui/diplodlg.c

4m.0.t13132-1 modify true false /trunk/server/diplhand.c

i6.0.t13132-1 modify true false /trunk/client/tilespec.h

l1.0.t13132-1 modify true false /trunk/client/gui-mui/finddlg.c

d5.0.t13132-1 modify true false /trunk/client/climisc.c

vz.0.t13132-1 modify true false /trunk/server/diplomats.c

3jw.0.t13132-1 modify true false /trunk/common/base.c

an.0.t13132-1 modify true false /trunk/client/gui-xaw/menu.c

2mg.0.t13132-1 modify true false /trunk/server/generator/mapgen.c

3bg.0.t13132-1 modify true false /trunk/client/editor.c

33l.0.t13132-1 modify true false /trunk/common/aicore/caravan.c

1a.0.t13132-1 modify true false /trunk/server/unittools.c

33n.0.t13132-1 modify true false /trunk/server/techtools.c

wi.0.t13132-1 modify true false /trunk/server/sanitycheck.c

mn.0.t13132-1 modify true false /trunk/client/gui-stub/citydlg.c

376.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/caravan_dialog.c

320.0.t13132-1 modify true false /trunk/server/scripting/api.pkg

u.0.t13132-1 modify true false /trunk/common/tech.h

18.0.t13132-1 modify true false /trunk/server/unithand.c

17f.0.t13132-1 modify true false /trunk/client/gui-sdl/gotodlg.c

170.0.t13132-1 modify true false /trunk/client/gui-sdl/citydlg.c

2pi.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/pages.c

yq.0.t13132-1 modify true false /trunk/client/gui-win32/repodlgs.c

186.0.t13132-1 modify true false /trunk/client/gui-sdl/mapview.c

a8.0.t13132-1 modify true false /trunk/client/gui-xaw/diplodlg.c

4u.0.t13132-1 modify true false /trunk/server/plrhand.c

3bi.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/editdlg.c

gz.0.t13132-1 modify true false /trunk/client/control.c

2qm.0.t13132-1 modify true false /trunk/client/gui-xaw/pages.c

vl.0.t13132-1 modify true false /trunk/server/savegame.c

ad.0.t13132-1 modify true false /trunk/client/gui-xaw/graphics.c

q.0.t13132-1 modify true false /trunk/common/city.c

lu.0.t13132-1 modify true false /trunk/client/gui-mui/spaceshipdlg.c

36o.0.t13132-1 modify true false /trunk/ai/aiparatrooper.c

ai.0.t13132-1 modify true false /trunk/client/gui-xaw/inteldlg.c

2g3.0.t13132-1 modify true false /trunk/client/text.c

108.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/dialogs.c

yg.0.t13132-1 modify true false /trunk/client/gui-win32/menu.c

10.0.t13132-1 modify true false /trunk/server/cityhand.c

36n.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/diplomat_dialog.c

2k9.0.t13132-1 modify true false /trunk/client/gui-ftwl/citydlg.c

20.0.t13132-1 modify true false /trunk/ai/aicity.c

10a.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/diplodlg.c

2eg.0.t13132-1 modify true false /trunk/server/score.c

2xv.0.t13132-1 modify true false /trunk/common/movement.c

vg.0.t13132-1 modify true false /trunk/server/srv_main.c

2kz.0.t13132-1 modify true false /trunk/client/gui-ftwl/mapview.c

vu.0.t13132-1 modify true false /trunk/client/goto.c

n.0.t13132-1 modify true false /trunk/client/packhand.c

10c.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/finddlg.c

vb.0.t13132-1 modify true false /trunk/common/improvement.c

9w.0.t13132-1 modify true false /trunk/client/gui-xaw/citydlg.c

ab.0.t13132-1 modify true false /trunk/client/gui-xaw/gotodlg.c

4g.0.t13132-1 modify true false /trunk/server/citytools.c

9.0.t13132-1 modify true false /trunk/ai/aitools.c

17a.0.t13132-1 modify true false /trunk/client/gui-sdl/dialogs.c

a.0.t13132-1 modify true false /trunk/ai/aitools.h

ls.0.t13132-1 modify true false /trunk/client/gui-mui/repodlgs.c

14u.0.t13132-1 modify true false /trunk/client/plrdlg_common.c

3bn.0.t13132-1 modify true false /trunk/client/gui-sdl/diplomat_dialog.c

7s.0.t13132-1 modify true false /trunk/server/settlers.c

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

15y.0.t13132-1 modify true false /trunk/ai/aiair.c

17c.0.t13132-1 modify true false /trunk/client/gui-sdl/diplodlg.c

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

l7.0.t13132-1 modify true false /trunk/client/gui-mui/gui_main.c

15t.0.t13132-1 modify true false /trunk/ai/ailog.c

yn.0.t13132-1 modify true false /trunk/client/gui-win32/plrdlg.c

11c.0.t13132-1 modify true false /trunk/client/gui-gtk-2.0/spaceshipdlg.c

17e.0.t13132-1 modify true false /trunk/client/gui-sdl/finddlg.c

8w.0.t13132-1 modify true false /trunk/server/ruleset.c

9a.0.t13132-1 modify true false /trunk/server/spacerace.c

39m.0.t13132-1 modify true false /trunk/common/unitlist.c

39n.0.t13132-1 modify true false /trunk/common/unitlist.h

4o.0.t13132-1 modify true false /trunk/server/gamehand.c

2wq.0.t13132-1 modify true false /trunk/common/requirements.c


284742 284894
