DELTA 13046 0 98
SVN  µbµi
 õn – ¿eõ}player_research_updateENDREP
DELTA 3745 55252 233
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 <stdio.h>
#include <stdlib.h>

#include <windows.h>
#include <windowsx.h>

#include "fcintl.h"
#include "game.h"
#include "government.h"
#include "map.h"
#include "mem.h"
#include "packets.h"
#include "player.h"
#include "shared.h"
#include "support.h"

#include "canvas.h"
#include "chatline.h"
#include "climisc.h"
#include "clinet.h"
#include "diptreaty.h"
#include "gui_main.h"
#include "gui_stuff.h"
#include "mapview.h"
#include "sprite.h"
#include "tilespec.h"

#include "diplodlg.h"

enum Diplomacy_ids {
  ID_MAP0=100,
  ID_MAP1,
  ID_MAP_SEA,
  ID_MAP_WORLD,
  ID_TECH0,
  ID_TECH1,
  ID_CITY0,
  ID_CITY1,
  ID_GOLD0,
  ID_GOLD1,
  ID_PACT,
  ID_CEASEFIRE,
  ID_PEACE,
  ID_ALLIANCE,
  ID_VISION0,
  ID_VISION1,
  ID_EMBASSY0,
  ID_EMBASSY1,
  ID_ERASE,
  ID_LIST,
  ID_ADVANCES_BASE=1000,
  ID_CITIES_BASE=2000
};

#define MAX_NUM_CLAUSES 64

struct Diplomacy_dialog {
  struct Treaty treaty;
  
  HWND mainwin;
  HWND list;
  HWND gold0_label;
  HWND gold1_label;
  POINT thumb0_pos;
  POINT thumb1_pos;
  struct sprite *thumb0;
  struct sprite *thumb1;
  HMENU menu_shown;
};

#define SPECLIST_TAG dialog
#define SPECLIST_TYPE struct Diplomacy_dialog
#include "speclist.h"

#define dialog_list_iterate(dialoglist, pdialog) \
    TYPED_LIST_ITERATE(struct Diplomacy_dialog, dialoglist, pdialog)
#define dialog_list_iterate_end  LIST_ITERATE_END

static struct dialog_list *dialog_list;
static bool dialog_list_list_has_been_initialised = FALSE;

static struct Diplomacy_dialog *create_diplomacy_dialog(int other_player_id);
static struct Diplomacy_dialog *find_diplomacy_dialog(int other_player_id);
static void popup_diplomacy_dialog(int other_player_id);


/****************************************************************

*****************************************************************/
static void update_diplomacy_dialog(struct Diplomacy_dialog *pdialog)
{
  HDC hdc;
  char buf[64];
  ListBox_ResetContent(pdialog->list);
  
  clause_list_iterate(pdialog->treaty.clauses, pclause) {
    client_diplomacy_clause_string(buf, sizeof(buf), pclause);
    ListBox_AddString(pdialog->list,buf);
  } clause_list_iterate_end;
  
  pdialog->thumb0 = get_treaty_thumb_sprite(tileset, BOOL_VAL(pdialog->treaty.accept0));
  pdialog->thumb1 = get_treaty_thumb_sprite(tileset, BOOL_VAL(pdialog->treaty.accept1));
  hdc=GetDC(pdialog->mainwin);
  draw_sprite(pdialog->thumb0,hdc,pdialog->thumb0_pos.x,pdialog->thumb0_pos.y);
  draw_sprite(pdialog->thumb1,hdc,pdialog->thumb1_pos.x,pdialog->thumb1_pos.y);
  ReleaseDC(pdialog->mainwin,hdc);
}

/****************************************************************

*****************************************************************/
static void diplomacy_dialog_close(struct Diplomacy_dialog *pdialog)
{
  dsend_packet_diplomacy_cancel_meeting_req(&aconnection,
					    player_number(pdialog->treaty.plr1));
  DestroyWindow(pdialog->mainwin);
  
}

/****************************************************************

*****************************************************************/
static void popup_map_menu(struct Diplomacy_dialog *pdialog,int plr)
{
  RECT rc;
  MENUITEMINFO iteminfo;
  HMENU menu;
  menu=CreatePopupMenu();
  AppendMenu(menu,MF_STRING,ID_MAP_SEA,_("Sea-map"));
  iteminfo.dwItemData = plr;
  iteminfo.fMask = MIIM_DATA;
  iteminfo.cbSize = sizeof(MENUITEMINFO);
  SetMenuItemInfo(menu, ID_MAP_SEA, FALSE, &iteminfo);
  AppendMenu(menu,MF_STRING,ID_MAP_WORLD,_("World-map"));
  iteminfo.dwItemData = plr;
  iteminfo.fMask = MIIM_DATA;
  iteminfo.cbSize = sizeof(MENUITEMINFO);
  SetMenuItemInfo(menu, ID_MAP_WORLD, FALSE, &iteminfo);
  GetWindowRect(GetDlgItem(pdialog->mainwin,plr?ID_MAP1:ID_MAP0),&rc);
  TrackPopupMenu(menu,0,rc.left,rc.top,0,pdialog->mainwin,NULL);  
  pdialog->menu_shown=menu;
}

/****************************************************************

*****************************************************************/
static void popup_tech_menu(struct Diplomacy_dialog *pdialog,int plr)
{
  RECT rc;
  HMENU menu;
  MENUITEMINFO iteminfo;
  struct player *plr0 = plr?pdialog->treaty.plr1:pdialog->treaty.plr0;
  struct player *plr1 = plr?pdialog->treaty.plr0:pdialog->treaty.plr1;

  menu=CreatePopupMenu();

  advance_index_iterate(A_FIRST, i) {
    if (player_invention_state(plr0, i) == TECH_KNOWN
        && player_invention_is_ready(plr1, i)
        && (player_invention_state(plr1, i) == TECH_UNKNOWN  
            || player_invention_state(plr1, i) == TECH_REACHABLE)) {
      AppendMenu(menu,MF_STRING,ID_ADVANCES_BASE+i,
		 advance_name_translation(advance_by_number(i)));
      iteminfo.dwItemData = player_number(plr0) * MAX_NUM_ITEMS * MAX_NUM_ITEMS +
			    player_number(plr1) * MAX_NUM_ITEMS + i;
      iteminfo.fMask = MIIM_DATA;
      iteminfo.cbSize = sizeof(MENUITEMINFO);
      SetMenuItemInfo(menu, ID_ADVANCES_BASE+i, FALSE, &iteminfo);
    }
  } advance_index_iterate_end;
  GetWindowRect(GetDlgItem(pdialog->mainwin,plr?ID_TECH1:ID_TECH0),
		&rc);
  TrackPopupMenu(menu,0,rc.left,rc.top,0,pdialog->mainwin,NULL);  
  pdialog->menu_shown=menu;
}

/****************************************************************

*****************************************************************/
static void popup_cities_menu(struct Diplomacy_dialog *pdialog,int plr)
{
  RECT rc;
  HMENU menu;
  MENUITEMINFO iteminfo;
  int i = 0, j = 0;
  int n;
  struct city **city_list_ptrs;
  struct player *plr0;
  struct player *plr1;
  menu=CreatePopupMenu();
  plr0=plr?pdialog->treaty.plr1:pdialog->treaty.plr0;
  plr1=plr?pdialog->treaty.plr0:pdialog->treaty.plr1;
  n=city_list_size(plr0->cities);
  if (n>0) {
    city_list_ptrs = fc_malloc(sizeof(struct city*)*n);
  } else {
    city_list_ptrs = NULL;
  }
  
  city_list_iterate(plr0->cities, pcity) {
    if (!is_capital(pcity)) {
      city_list_ptrs[i] = pcity;
      i++;
    }
  } city_list_iterate_end;

  qsort(city_list_ptrs, i, sizeof(struct city*), city_name_compare);
  
  for(j=0; j<i; j++) {
    AppendMenu(menu,MF_STRING,ID_CITIES_BASE+j,city_list_ptrs[j]->name);
    iteminfo.dwItemData=city_list_ptrs[j]->id*1024 + 
      player_number(plr0)*32 + player_number(plr1);
    iteminfo.fMask = MIIM_DATA;
    iteminfo.cbSize = sizeof(MENUITEMINFO);
    SetMenuItemInfo(menu, ID_CITIES_BASE+j, FALSE, &iteminfo);
  }
  free(city_list_ptrs);
  GetWindowRect(GetDlgItem(pdialog->mainwin,plr?ID_CITY1:ID_CITY0),
		&rc);
  TrackPopupMenu(menu,0,rc.left,rc.top,0,pdialog->mainwin,NULL); 
  pdialog->menu_shown=menu;
}

/****************************************************************

*****************************************************************/
static void handle_gold_entry(struct Diplomacy_dialog *pdialog,int plr)
{
  char buf[32];
  HWND edit;
  edit=GetDlgItem(pdialog->mainwin,plr?ID_GOLD1:ID_GOLD0);
  GetWindowText(edit,buf,sizeof(buf));
  if (strchr(buf,'\n')) {
    int amount;
    struct player *pgiver;

    SetWindowText(edit, "");
    pgiver = plr ? pdialog->treaty.plr1 : pdialog->treaty.plr0;
    if (sscanf(buf, "%d", &amount) == 1 && amount >= 0
	&& amount <= pgiver->economic.gold) {
       dsend_packet_diplomacy_create_clause_req(&aconnection, 
					player_number(pdialog->treaty.plr1),
					player_number(pgiver),
					CLAUSE_GOLD, amount);
     } else {
       append_output_window(_("Invalid amount of gold specified."));
     }
  }
}

/****************************************************************

*****************************************************************/
static void handle_vision_button(struct Diplomacy_dialog *pdialog,int plr)
{
  struct player *pgiver;
  pgiver=plr?pdialog->treaty.plr1:pdialog->treaty.plr0;

  dsend_packet_diplomacy_create_clause_req(&aconnection, 
					   player_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_VISION,
					   0);
}

/****************************************************************

*****************************************************************/
static void handle_embassy_button(struct Diplomacy_dialog *pdialog, int plr)
{
  struct player *pgiver;
  pgiver = plr ? pdialog->treaty.plr1 : pdialog->treaty.plr0;

  dsend_packet_diplomacy_create_clause_req(&aconnection, 
					   player_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_EMBASSY,
					   0);
}

/****************************************************************

*****************************************************************/
static void handle_pact_button(struct Diplomacy_dialog *pdialog)
{
  RECT rc;
  MENUITEMINFO iteminfo;
  HMENU menu;
  iteminfo.fMask=MIIM_DATA;
  iteminfo.cbSize=sizeof(MENUITEMINFO);
  menu=CreatePopupMenu();
  AppendMenu(menu,MF_STRING,ID_CEASEFIRE,Q_("?diplomatic_state:Cease-fire"));
  AppendMenu(menu,MF_STRING,ID_PEACE,Q_("?diplomatic_state:Peace"));
  AppendMenu(menu,MF_STRING,ID_ALLIANCE,Q_("?diplomatic_state:Alliance"));
  iteminfo.dwItemData=CLAUSE_CEASEFIRE;
  SetMenuItemInfo(menu,ID_CEASEFIRE,FALSE,&iteminfo);
  iteminfo.dwItemData=CLAUSE_PEACE;
  SetMenuItemInfo(menu,ID_PEACE,FALSE,&iteminfo);  
  iteminfo.dwItemData=CLAUSE_ALLIANCE;
  SetMenuItemInfo(menu,ID_ALLIANCE,FALSE,&iteminfo);
  GetWindowRect(GetDlgItem(pdialog->mainwin,ID_PACT),
		&rc);
  TrackPopupMenu(menu,0,rc.left,rc.top,0,pdialog->mainwin,NULL); 
  pdialog->menu_shown=menu;
}

/****************************************************************

*****************************************************************/
static void give_sea_map(struct Diplomacy_dialog *pdialog, int plr)
{
  struct player *pgiver;
  pgiver=plr?pdialog->treaty.plr1:pdialog->treaty.plr0;
  dsend_packet_diplomacy_create_clause_req(&aconnection,
					   player_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_SEAMAP,
					   0);
}

/****************************************************************

*****************************************************************/
static void give_map(struct Diplomacy_dialog *pdialog, int plr)
{
  struct player *pgiver;
  pgiver=plr?pdialog->treaty.plr1:pdialog->treaty.plr0;
  dsend_packet_diplomacy_create_clause_req(&aconnection,
					   player_number(pdialog->treaty.plr1),
					   player_number(pgiver), CLAUSE_MAP,
					   0);
}

/****************************************************************

*****************************************************************/
static void handle_cities_menu(struct Diplomacy_dialog *pdialog,int choice)
{
  int value, plrno0, plrno1;
  value = choice/1024;
  choice -= value * 1024;
  plrno0 = choice/32;
  choice -= plrno0 * 32;
  plrno1 = choice;
  dsend_packet_diplomacy_create_clause_req(&aconnection, 
					   player_number(pdialog->treaty.plr1),
					   plrno0, CLAUSE_CITY, value);
}

/****************************************************************

*****************************************************************/
static void handle_advances_menu(struct Diplomacy_dialog *pdialog,int choice)
{
  int plrno0 = choice / (MAX_NUM_ITEMS * MAX_NUM_ITEMS);
#if 0 /* Unneeded. */
  int plrno1 = (choice / MAX_NUM_ITEMS) % MAX_NUM_ITEMS;
#endif
  int value = choice % MAX_NUM_ITEMS;

  dsend_packet_diplomacy_create_clause_req(&aconnection, 
					   player_number(pdialog->treaty.plr1),
					   plrno0, CLAUSE_ADVANCE, value);
}

/****************************************************************

*****************************************************************/
static void diplomacy_dialog_add_pact_clause(struct Diplomacy_dialog *pdialog,
					     int type)
{
  dsend_packet_diplomacy_create_clause_req(&aconnection, 
					   player_number(pdialog->treaty.plr1),
					   player_number(pdialog->treaty.plr0),
					   type, 0);
}

/****************************************************************

*****************************************************************/
static void handle_erase_button(struct Diplomacy_dialog *pdialog)
{
  int i=0;
  int row;
  row=ListBox_GetCurSel(pdialog->list);
  if (row==LB_ERR)
    return;
  clause_list_iterate(pdialog->treaty.clauses, pclause) {
    if(i == row) {
      dsend_packet_diplomacy_remove_clause_req(&aconnection,
					       player_number(pdialog->treaty.plr1),
					       player_number(pclause->from),
					       pclause->type, pclause->value);
      return;
    }
    i++;
  } clause_list_iterate_end;
}

/****************************************************************

*****************************************************************/
static void handle_accept_button(struct Diplomacy_dialog *pdialog)
{
  dsend_packet_diplomacy_accept_treaty_req(&aconnection,
					   player_number(pdialog->treaty.plr1));
}

/****************************************************************

*****************************************************************/
static void close_diplomacy_dialog(struct Diplomacy_dialog *pdialog)
{
  DestroyWindow(pdialog->mainwin);
}

/****************************************************************

*****************************************************************/
static LONG CALLBACK diplomacy_proc(HWND dlg,UINT message,WPARAM wParam,LPARAM lParam)
{
  int is_menu;
  int menu_data;

  struct Diplomacy_dialog *pdialog;
  pdialog=(struct Diplomacy_dialog *)fcwin_get_user_data(dlg);
  switch(message) {
  case WM_CREATE:
  case WM_SIZE:
  case WM_GETMINMAXINFO:
    break;
  case WM_CLOSE:
    diplomacy_dialog_close(pdialog);
    break;
  case WM_DESTROY:
    if (pdialog->menu_shown)
      DestroyMenu(pdialog->menu_shown);
    dialog_list_unlink(dialog_list, pdialog);
    free(pdialog);
    break;
  case WM_COMMAND:
    is_menu=0;
    menu_data=0;
    if (pdialog->menu_shown) {
      MENUITEMINFO iteminfo;
      iteminfo.cbSize=sizeof(MENUITEMINFO);
      iteminfo.fMask=MIIM_DATA;
      is_menu=GetMenuItemInfo(pdialog->menu_shown,LOWORD(wParam),FALSE,&iteminfo);
      DestroyMenu(pdialog->menu_shown);
      pdialog->menu_shown=NULL;
      menu_data=iteminfo.dwItemData;
    }
    switch((enum Diplomacy_ids) LOWORD(wParam)) {
    case ID_MAP0:
      popup_map_menu(pdialog,0);
      break;
    case ID_MAP1:
      popup_map_menu(pdialog,1);
      break;
    case ID_MAP_SEA:
      give_sea_map(pdialog,menu_data);
      break;
    case ID_MAP_WORLD:
      give_map(pdialog,menu_data);
      break;
    case ID_TECH0:
      popup_tech_menu(pdialog,0);
      break;
    case ID_TECH1:
      popup_tech_menu(pdialog,1);
      break;
    case ID_CITY0:
      popup_cities_menu(pdialog,0);
      break;
    case ID_CITY1:
      popup_cities_menu(pdialog,1);
      break;
    case ID_GOLD0:
      handle_gold_entry(pdialog,0);
      break;
    case ID_GOLD1:
      handle_gold_entry(pdialog,1);
      break;
    case ID_PEACE:
    case ID_CEASEFIRE:
    case ID_ALLIANCE:
      diplomacy_dialog_add_pact_clause(pdialog,menu_data);
      break;
    case ID_VISION0:
      handle_vision_button(pdialog,0);
      break;
    case ID_VISION1:
      handle_vision_button(pdialog,1);
      break;
    case ID_EMBASSY0:
      handle_embassy_button(pdialog,0);
      break;
    case ID_EMBASSY1:
      handle_embassy_button(pdialog,1);
      break;
    case ID_PACT:
      handle_pact_button(pdialog);
      break;
    case ID_ERASE:
      handle_erase_button(pdialog);
      break;
    case IDCANCEL:
      diplomacy_dialog_close(pdialog);
      break;
    case IDOK:
      handle_accept_button(pdialog);
      break;
    case ID_LIST:
      if (HIWORD(wParam) == LBN_DBLCLK) {
	handle_erase_button(pdialog);
      }
      break;
    default:
      if (LOWORD(wParam)>=ID_CITIES_BASE) {
	handle_cities_menu(pdialog,menu_data);
      } else if (LOWORD(wParam)>=ID_ADVANCES_BASE) {
	handle_advances_menu(pdialog,menu_data);
      }
      
    }
    break;
  case WM_PAINT:
    {
      PAINTSTRUCT ps;
      HDC hdc;
      hdc=BeginPaint(dlg,(LPPAINTSTRUCT)&ps);
      draw_sprite(pdialog->thumb0,hdc,
		  pdialog->thumb0_pos.x,pdialog->thumb0_pos.y);
      draw_sprite(pdialog->thumb1,hdc,
		  pdialog->thumb1_pos.x,pdialog->thumb1_pos.y);
      EndPaint(dlg,(LPPAINTSTRUCT)&ps);
    }
    break;
  default:
    return DefWindowProc(dlg,message,wParam,lParam);
  }
  return 0;
}

/****************************************************************

*****************************************************************/
static void thumb_minsize(POINT *minsize, void *data)
{
  minsize->x = get_treaty_thumb_sprite(tileset, FALSE)->width;
  minsize->y = get_treaty_thumb_sprite(tileset, FALSE)->height;
}

/****************************************************************

*****************************************************************/
static void thumb_setsize(RECT *rc, void *data)
{
  POINT *thumb_pos;
  thumb_pos=(POINT *)data;
  thumb_pos->x=rc->left;
  thumb_pos->y=rc->top;
}

/****************************************************************
...
*****************************************************************/
static struct Diplomacy_dialog *create_diplomacy_dialog(int other_player_id)
{
  struct player *plr0 = game.player_ptr, *plr1 = player_by_number(other_player_id);

  char buf[512];
  struct fcwin_box *vbox;
  struct fcwin_box *hbox;
  struct fcwin_box *hbox2;
  struct Diplomacy_dialog *pdialog;

  pdialog=fc_malloc(sizeof(struct Diplomacy_dialog));  
  dialog_list_prepend(dialog_list, pdialog);
  pdialog->menu_shown=NULL;
  init_treaty(&pdialog->treaty, plr0, plr1);

  pdialog->mainwin=fcwin_create_layouted_window(diplomacy_proc,
						_("Diplomacy meeting"),
						WS_OVERLAPPEDWINDOW,
						CW_USEDEFAULT,CW_USEDEFAULT,
						root_window,NULL,
						FAKE_CHILD,
						pdialog);
  vbox=fcwin_vbox_new(pdialog->mainwin,FALSE);
  my_snprintf(buf, sizeof(buf),
              _("The %s offerings"),
              nation_name_for_player(plr0));
  fcwin_box_add_static(vbox,buf,0,SS_LEFT,FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Maps"),ID_MAP0,0,FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Advances"),ID_TECH0,0,FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Cities"),ID_CITY0,0,FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Embassy"), ID_EMBASSY0, 0, FALSE, FALSE, 5);
  
  my_snprintf(buf, sizeof(buf), _("Gold(max %d)"), plr0->economic.gold); 
  pdialog->gold0_label=fcwin_box_add_static(vbox,buf,0,SS_LEFT,FALSE,FALSE,5);
  fcwin_box_add_edit(vbox,"",6,ID_GOLD0,ES_WANTRETURN | ES_MULTILINE | ES_AUTOVSCROLL,
		     FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Give shared vision"),ID_VISION0,0,
		       FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Pacts"),ID_PACT,0,FALSE,FALSE,5);
  hbox=fcwin_hbox_new(pdialog->mainwin,FALSE);
  fcwin_box_add_box(hbox,vbox,FALSE,FALSE,5);
  vbox=fcwin_vbox_new(pdialog->mainwin,FALSE);
    
  my_snprintf(buf, sizeof(buf),
	      _("This Eternal Treaty\n"
		"marks the results of the diplomatic work between\n"
		"The %s %s %s\nand\nThe %s %s %s"),
	      nation_name_for_player(plr0),
	      ruler_title_translation(plr0),
	      plr0->name,
	      nation_name_for_player(plr1),
	      ruler_title_translation(plr1),
	      plr1->name);
  fcwin_box_add_static(vbox,buf,0,SS_CENTER,FALSE,FALSE,5);
  pdialog->list=fcwin_box_add_list(vbox,6,ID_LIST,WS_VSCROLL,TRUE,TRUE,5);
  hbox2=fcwin_hbox_new(pdialog->mainwin,FALSE);

  my_snprintf(buf, sizeof(buf), _("%s view:"),
              nation_name_for_player(plr0));
  fcwin_box_add_static(hbox2,buf,0,SS_LEFT,FALSE,FALSE,5);
  fcwin_box_add_generic(hbox2,thumb_minsize,thumb_setsize,NULL,
			&pdialog->thumb0_pos,FALSE,FALSE,5);
  
  my_snprintf(buf, sizeof(buf), _("%s view:"),
              nation_name_for_player(plr1));
  fcwin_box_add_static(hbox2,buf,0,SS_LEFT,FALSE,FALSE,5);
  fcwin_box_add_generic(hbox2,thumb_minsize,thumb_setsize,NULL,
			&pdialog->thumb1_pos,FALSE,FALSE,5);
  pdialog->thumb0 = get_treaty_thumb_sprite(tileset, FALSE);
  pdialog->thumb1 = get_treaty_thumb_sprite(tileset, FALSE);
  fcwin_box_add_box(vbox,hbox2,FALSE,FALSE,5);

  fcwin_box_add_box(hbox,vbox,TRUE,TRUE,5);
  
  vbox=fcwin_vbox_new(pdialog->mainwin,FALSE);
  my_snprintf(buf, sizeof(buf),
              _("The %s offerings"),
              nation_name_for_player(plr1));
  fcwin_box_add_static(vbox,buf,0,SS_LEFT,FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Maps"),ID_MAP1,0,FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Advances"),ID_TECH1,0,FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Cities"),ID_CITY1,0,FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Embassy"), ID_EMBASSY1, 0, FALSE, FALSE, 5);
  
  my_snprintf(buf, sizeof(buf), _("Gold(max %d)"), plr1->economic.gold); 
  pdialog->gold1_label=fcwin_box_add_static(vbox,buf,0,SS_LEFT,FALSE,FALSE,5);
  fcwin_box_add_edit(vbox, "", 6, ID_GOLD1, ES_WANTRETURN | ES_MULTILINE
		     | ES_AUTOVSCROLL, FALSE, FALSE, 5);
  fcwin_box_add_button(vbox,_("Give shared vision"),ID_VISION1,0,
		       FALSE,FALSE,5);
  fcwin_box_add_button(vbox,_("Erase Clause"), ID_ERASE, 0, FALSE, FALSE, 5);

  fcwin_box_add_box(hbox,vbox,FALSE,FALSE,5);
  vbox=fcwin_vbox_new(pdialog->mainwin,FALSE);
  fcwin_box_add_box(vbox,hbox,TRUE,TRUE,5);
  hbox=fcwin_hbox_new(pdialog->mainwin,TRUE);
  
  fcwin_box_add_button(hbox,_("Accept treaty"),IDOK,0,TRUE,TRUE,5);
  fcwin_box_add_button(hbox,_("Cancel meeting"),IDCANCEL,0,TRUE,TRUE,5);

  fcwin_box_add_box(vbox,hbox,FALSE,FALSE,5);
  fcwin_set_box(pdialog->mainwin,vbox);

  update_diplomacy_dialog(pdialog);

  return pdialog;
}

/****************************************************************
...
*****************************************************************/
static struct Diplomacy_dialog *find_diplomacy_dialog(int other_player_id)
{
  struct player *plr0 = game.player_ptr, *plr1 = player_by_number(other_player_id);

  if(!dialog_list_list_has_been_initialised) {
    dialog_list = dialog_list_new();
    dialog_list_list_has_been_initialised = TRUE;
  }

  dialog_list_iterate(dialog_list, pdialog) {
    if ((pdialog->treaty.plr0 == plr0 && pdialog->treaty.plr1 == plr1) ||
	(pdialog->treaty.plr0 == plr1 && pdialog->treaty.plr1 == plr0)) {
      return pdialog;
    }
  } dialog_list_iterate_end;

  return NULL;
}


/****************************************************************
...
*****************************************************************/
static void popup_diplomacy_dialog(int other_player_id)
{
  struct Diplomacy_dialog *pdialog;

  if (game.player_ptr->ai.control) {
    return;			/* Don't show if we are AI controlled. */
  }

  if (!(pdialog = find_diplomacy_dialog(other_player_id))) {
    pdialog = create_diplomacy_dialog(other_player_id);
  }
  
  ShowWindow(pdialog->mainwin,SW_SHOWNORMAL);
}

/**************************************************************************
...
**************************************************************************/
void handle_diplomacy_accept_treaty(int counterpart, bool I_accepted,
				    bool other_accepted)
{
  struct Diplomacy_dialog *pdialog;
  
  if ((pdialog = find_diplomacy_dialog(counterpart))) {

    pdialog->treaty.accept0 = I_accepted;
    pdialog->treaty.accept1 = other_accepted;

    update_diplomacy_dialog(pdialog);
  }
  
}

/**************************************************************************
...
**************************************************************************/
void handle_diplomacy_init_meeting(int counterpart, int initiated_from)
{
  popup_diplomacy_dialog(counterpart);
}

/**************************************************************************
...
**************************************************************************/
void handle_diplomacy_create_clause(int counterpart, int giver,
				    enum clause_type type, int value)
{
  struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(counterpart);

  if (!pdialog) {
    return;
  }

  add_clause(&pdialog->treaty, player_by_number(giver), type, value);
  update_diplomacy_dialog(pdialog);
}


/**************************************************************************
...
**************************************************************************/
void handle_diplomacy_cancel_meeting(int counterpart, int initiated_from)
{
  struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(counterpart);

  if (!pdialog) {
    return;
  }

  close_diplomacy_dialog(pdialog);
}

/**************************************************************************
...
**************************************************************************/
void handle_diplomacy_remove_clause(int counterpart, int giver,
				    enum clause_type type, int value)
{
  struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(counterpart);

  if (!pdialog) {
    return;
  }

  remove_clause(&pdialog->treaty, player_by_number(giver), type, value);
  update_diplomacy_dialog(pdialog);
}

/**************************************************************************
...
**************************************************************************/
void close_all_diplomacy_dialogs(void)
{
  if (!dialog_list_list_has_been_initialised) {
    return;
  }

  while (dialog_list_size(dialog_list) > 0) {
    close_diplomacy_dialog(dialog_list_get(dialog_list, 0));
  }
}
ENDREP
DELTA 13027 6471 4325
SVN  ‚íw‚çj… ½U  …¾ Èj¨ ƒ$Ë§ «~Î\ ˜Jû€x R”3€o « –bž …Â!¤ ™ÇSž Â! Ÿ$â  †k‚^ž T÷n ƒ‚‰<ž I‚Œ  £‚Ž*ž ‚‚±Wž a‚´§ Z‚±Wª §1‚¸– Ž‚ßY
		     nation_plural_for_player(cplayernation_plural_for_player(pplayer),
		  valid_advance_by_number(technology)) {
    return;
  }
  
  if (technology == A_FUTURE) {
    if (player_invention_stateplayer_invention_state(pplayer, technology) == TECH_KNOWN) {
      return;
    }
    if (player_invention_statenation_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 13038 1281291 5383
SVN  ©yªSƒ}  … ]€ƒx …i¤j = 0advance_index_iterate(A_FIRST, i) {
    if(player_invention_state(p, i)==TECH_KNOWN) {
      if(player_invention_state(game.player_ptr, i)==TECH_KNOWN) {
        sz_strlcpy(tech_list_names[j], advance_name_translation(advance_by_number(i)));
      } else {
        my_snprintf(tech_list_names[j], sizeof(tech_list_names[j]),
                    "%s*", advance_name_translation(advance_by_number(i)));
      }
      ListBox_AddString(lb,tech_list_names[j]);
      j++;
    }
  } advance_index_iterate_end;ENDREP
DELTA 13038 1286702 2351
SVN  ÙVÚcƒA £/ Ž ‚#£7Ž Œ}¥bŽ å]²gŽ Ž˜L€ PÆ? R®@ l©€] …<ªn¼ B°_• š7²2Ž zÑs „ ÍkŽ „Ñs¢ § ‚×Kplayer_by_numbplayer_by_numbplayer_by_numbplayer_by_numbstruct player *vpp = valid_player_by_number(plrno);

  return NULL != vpp
	 && (player_dlg_show_dead_players
	     || vpp->is_alive)
	 && (!is_barbarian(vpp)player_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 13247 3577 2190
SVN  ÀwÀX ¶R ‘ 5¶H ˆ@¸7advance *advance;ENDREP
DELTA 13046 27348 2609
SVN  ý>‚€"‚šE ¥G ™ ‡m¥M– †!­G« E± ‡ Y¼7 ¦sµ%€h DÜNƒ „TÞ€e KË; ƒIäv€d ´9é  „YžH€‚ …¥B€` ‰)«€n ‡1µV¯  ¹; U¾0€a ~Àn” Âw” ?Ä	” tÅS” ÇR› „PÈ_€ƒ ƒ,Ð-€D tÙV€R â? (×U€ƒq ‚	Ü:€ vß6€‚ BÜ: ƒ"ã^— &ët Yè6€g êH ˆëa€@ Fôz€L †cö[advance_by_number(A_NONE)player_invention_stateadvance_by_number(tech));

  return text;
}Creates  struct impr_type *vap = valid_advance_by_number(tech);

  char label[MAX_LEN_NAME+3];
  if(NULL == vapvap_required(tech, AR_ONE)!=A_NONE)
      create_tech_tree(tree, leaf, advance_required(tech, AR_ONE), levels);
    if(advance_required(tech, AR_TWO)!=A_NONE)
      create_tech_tree(tree, leaf, advance_required(tech, AR_TWO), levels_required(tech, AR_ONE)!=A_NONE)
	create_tech_tree(help_tech_tree, leaf, advance_required(tech, AR_ONE), 1);
      if(advance_required(tech, AR_TWO)!=A_NONE)
	create_tech_tree(help_tech_tree, leaf, advance_required(tech, AR_TWO)advance_number(imp->obsolete_by))
{
  char *buf = &long_buffer[0];
  struct unit_type *utype = find_unit_type_by_translated_name(title);

  create_help_page(HELP_UNIT);

  if (utype)
  {
    ULONG bg_color;
    char *text;

    settextf(help_unit_cost_text,
	     _("Cost: %ld"), utype_build_shield_cost(utypeutype));

    UpdateTechButton(help_unit_needs_button, advance_by_number(utype->require_advance))
{
  char *buf = &long_buffer[0];
  struct advance *padvance = find_advance_by_translated_name(title);

  create_help_page(HELP_TECH);

  if (padvance  &&  !is_future_tech(i = advance_number(padvance)))
  {
    if (help_tech_group)
    {padvance != utype_by_number(j)->require_advanceadvance_index_iterate(A_NONE, j) {
	  Object *o, *button;
	  if (i == advance_required(j, AR_ONE)_required(j, AR_TWO)_required(j, AR_TWO)_required(j, AR_TWO)_required(j, AR_ONE) advance_index_iterate_end;)
{
  char *buf = &long_buffer[0];
  struct terrain *pterrain = find_terrain_by_translated_name(title);

  create_help_page(HELP_TERRAIN);

  if (pterrain)
  {
    char buf[256];
    Object *o,*g;

    settextf(help_terrain_move_text, _("Movecost: %ld"),
	     pterrain->movement_cost);
    settextf(help_terrain_defense_text, _("Defense: %ld.%ld"),
	     pterrain->defense_bonus / 10,
	     pterrain->pterrain->output[O_FOOD],
		pterrain->output[O_SHIELD],
		pterrain->"", End,
	      Child, SpriteObject,
	        MUIA_Sprite_Sprite,
		pterrain->sprite[NUM_DIRECTION_NSEW - 1],
		MUIA_FixWidth,
		tileset_tile_width(tileset),
		MUIA_FixHeight,
		tileset_tile_height(tileset),
		pterrain->special[0].output[O_FOOD],
		pterrain->special[0].output[O_SHIELD],
		pterrain->special[0].output[O_TRADE]);
    if((o = HGroup,
              Child, HSpace(0),
	      Child, TextObject,
		  MUIA_Text_Contents,
		  pterrain->special_1_name,
		  End,
	      Child, SpriteObject,
		  MUIA_Sprite_Sprite,
		  pterrain->sprite[NUM_DIRECTION_NSEW - 1],
		  MUIA_Sprite_OverlaySprite,
		  pterrain->special[0].sprite,
		  MUIA_FixWidth,
		  tileset_tile_width(tileset),
		  MUIA_FixHeight,
		 pterrain->special[1].output[O_FOOD],
		pterrain->special[1].output[O_SHIELD],
		pterrain->special[1].output[O_TRADE]);
    pterrainpterrain->special_2_name, End,
	      Child, SpriteObject,
		  MUIA_Sprite_Sprite,
		  pterrain->sprite[NUM_DIRECTION_NSEW - 1],
		  MUIA_Sprite_OverlaySprite,
		  pterrain->special[1].sprite,
		  MUIA_FixWidth,
		  tileset_tile_width(tileset),
		  MUIA_FixHeight,
		 pterrain, pitem->text);)
{
  char *buf = &long_buffer[0];
  struct government *gov = find_government_by_translated_name(title));
    break;

  case HELP_TECH:
    help_update_tech(pitem, top);
    break;

  case HELP_GOVERNMENT:
    help_update_government(pitem, topENDREP
DELTA 13133 122413 463
SVN  ÕÖawŽ ˜I  
˜R€_ N¡o• ƒYœ_€F N¡o• ‚`£?¤ G•  Eî} %§<… ‚¨e€ƒ0 F®€ƒ ,²hƒ x´€W >¶d¼ ™E¸0€I "ÒF€I Ô>” ‚SÕQ› üoØ$advance_by_number(A_NONE)))
      to = 0;

  advance_index_iterate(A_FIRST, i)
  {
    if (help_goal_entries[*newgoal] == (STRPTR) advance_name_translation(advance_by_number(i)))
      to = i;
  } advance_index_iterate_end;advance_by_number(to)to = -1;

  advance_index_iterate(A_FIRST, i)
  {
    if (help_research_entries[*newresearch] == (STRPTR) advance_name_translation(advance_by_number(i)))
      to = i;
  } advance_index_iterate_end;advance_by_number(to)advance_by_number(*tech)), HELP_TECHj = 0et_player_research(game.player_ptr)->researching)) {
    int j = 0;
    advance_index_iterate(A_FIRST, i)
    {
      if (player_invention_state(game.player_ptr, i) != TECH_REACHABLE)
	continue;
      j++;
    } advance_index_iterate_end;

    if (j)
    {
      if ((help_research_entries = (STRPTR *) malloc((j + 1) * sizeof(STRPTR))))
      {
        int j = 0;
	advance_index_iterate(A_FIRST, i)
	{
	  if (player_invention_stateadvance_by_number(i));
	} advance_index_iterate_end;
	help_research_entries[j] = NULL;
	research_entries = help_research_entries;
      }
    }
  }

  advance_index_iterate(A_FIRST, i)
  {
    if (player_invention_is_ready(game.player_ptr, i)
	&& player_invention_state(game.player_ptr, i) != TECH_KNOWN
	&& num_unknown_techs_for_goal(game.player_ptr, i) < 11)
      j++;
  } advance_index_iterate_end;intadvance_by_number(A_NONE));
      }

      advance_index_iterate(A_FIRST, i)
      {
	if (player_invention_is_ready(game.player_ptr, i)
            && player_invention_state(game.player_ptr, i) != TECH_KNOWN
	    &&advance_by_number(i));
	}
      } advance_index_iterate_end;
	     num_unknown_techs_for_goal(game.player_ptr,
					game.player_ptr->advance_index_iterate(A_FIRST, i)
    {
      if ((player_invention_stateadvance_by_number(i) advance_index_iterate_end;ENDREP
DELTA 13046 30355 1376
SVN  ÔeØ8‚– ŒY  P—… I@ RŠjº P—… I@ ‚‘5 U— ~”!€k ƒ_— ƒ`›L¸ ˆKŸ2€^ ‚6©4 ‚p«w …®p– ƒl´ ’ ‡·s’ ƒ9¿’ †1ÂP‘ ~É€@ ‚ËF ‚Í[¶ ‡.Ð• }×T” ‚DØ^• ŽUÛ4€ ‡Kêv“ ‹8òQ€ lþ|€f U— ‰w‚	– vŒ€ ‚3w€ ˆM‘€# Yšm– `›U€l ƒA¬v€‚/ ²;€ ´5¦ ‰gµW€d ‚À• ƒgÂ3€u „Æx• ‰EË researching_saved = A_UNKNOWN
...
*/
void do_freefreecost) / 100;
  research->researching_saved = A_UNKNOWN
...
researching_saved = A_UNKNOWNstruct player_research *research = get_player_research(plr);
  Tech_type_id sub_goal = player_research_step
		     advance_by_number(research->researching),
		    advance_index_iterate(A_FIRST, i) {
      if (player_invention_is_ready(pplayer, i)
	  && player_invention_state(pplayer, i) != TECH_KNOWN) {
	int num_players = 0;

	players_iterate(aplayer) {
	  if (player_invention_state
			     advance_by_number(i)advance_indexplayer_research_updateernment_index(gov)ernment_index(gov)player_index(aplr)overnment_count()valid_advance_by_number(tech_found)
	  && player_invention_stateresearching_saved = A_UNKNOWNadvance_number(improvement_by_number(id)->obsolete_by)player_index(aplayer)player_invention_setplayer_index(aplayer)_by_number(tech_found)->bonus_message) {
      notify_team(plr, NULL, E_TECH_GAIN,
		     "%s", _(advance_by_number(tech_found)->player_index(owner)advance_index_iterate(A_FIRST, i) {
    if (player_invention_state(plr, i) == TECH_REACHABLE) {
      researchable++;
    }
  } advance_indexadvance_index_iterate(A_FIRST, i) {
    if (player_invention_state(plr, i) == TECH_REACHABLE) {
      chosen--;
      if (chosen == 0) {
        return i;
      }
    }
  } advance_index_iterate_end;
  assert(0);
  return A_FUTUREplayer_invention_stateresearching_saved == A_UNKNOWN) {
    research->bulbs_researching_saved = research->bulbs_researched;
    research->researching_savedresearching_saved) {
    research->bulbs_researched = research->bulbs_researching_saved;
    research->researching_saved = A_UNKNOWNplayer_invention_set(plr, A_NONE, TECH_KNOWN);

  advance_index_iterate(A_FIRST, i) {
    player_invention_set(plr, i, TECH_UNKNOWN);
  } advance_index_iterate_endplayer_research_updateadvance_index_iterate(A_FIRST, i) {
      if (player_invention_is_ready(pplayer, i)
	  && player_invention_state(pplayer, i) != TECH_KNOWN
	  && player_invention_state(victim, i) == TECH_KNOWN) {
        j++;
      }
    } advance_indexadvance_index_iterate(A_FIRST, i) {
        if (player_invention_is_ready(pplayer, i)
	    && player_invention_state(pplayer, i) != TECH_KNOWN
	    && player_invention_state(victim, i) == TECH_KNOWN) {
	  j--;
        }
        if (j == 0) {
	  stolen_tech = i;
	  break;
        }
      } advance_indexplayer_invention_state(victim, A_FUTURE) == TECH_REACHABLE)
	   || (valid_advance_by_number(preferred)
	       && player_invention_state
		     advance_by_number(stolen_tech)valid_advance_by_number(tech)) {
    return;
  }
  
  if (tech != A_FUTURE && player_invention_stateplayer_index(aplayer)valid_advance_by_number(tech_goal)) {
    return;
  }
  
  if (tech_goal != A_FUTURE
   && !player_invention_is_readyplayer_index(aplayer)ENDREP
DELTA 10805 31834 5439
SVN  ‚©5‚¤:‚=¤r ”i ‰ §•R– ‚+¼f€F ƒ
¿@ª „TÂV€n C¡@ FÔ  Æ2É}€P B Ž•?€ s³ ‚¥y³ ‚d¨€F ¸^ X«~š Y¼= „'­F€! s³ ‚gµT³ ¸^€ -º]‡ ‚¼ ƒ¾+€k [Ál „YÂT® ÇD¥ Èx€5 9Ë	¯ „]Ì_ ƒAÑW€‚5 ‚gÖf€Šr hâ2€f ‚cä€Y Xç)‹ ƒ|ç€ƒ …+óYµ ƒ#ù%± <üe´ ƒBþA€Y „K‚ƒ'Š '‚‡qŠ )‚‰€O ‹‚Œ|€u /¡@ Ž‚›resourcesplayer_invention_state_required(tech, AR_ONE)==A_LAST
     && advance_required(tech, AR_TWO)_name_translation(advance_by_number(tech))_required(tech, AR_ONE)!=A_NONE)
      create_tech_tree(tree, l, advance_required(tech, AR_ONE), levels);
    if(advance_required(tech, AR_TWO)!=A_NONE)
      create_tech_tree(tree, l, advance_required(tech, AR_TWO), levels);
  }
  
  
}
resources =
      XtVaCreateManagedWidget
      (
       "help_terrain_resourcesstruct impr_type *imp = improvement_by_number(which);
  
  create_help_page(HELP_IMPROVEMENT);
  
  if (imp) {
    char req_buf[512];
    int i_name_translation(advance_by_number(imp->tech_req))                    universal_name_translation(&preq->source,
        advance, 3);
*/
  } else {struct impr_type *imp = improvement_by_number(which);
  
  create_help_page(HELP_WONDER);

  if (imp) {
    char req_buf[512];
    int i;
    struct advance *vap universal_name_translation(&preq->source,
        vap = valid_advance(imp->obsolete_by);
    if (vap) {
      xaw_set_label(help_wonder_obsolete_data,
		    advance_name_translation(vap)advanceadvance_count())
{
  char *buf = &long_buffer[0];
  struct unit_type *punittype = find_unit_type_by_translated_name(title)utype_by_number(int)sqrt((double)punittype->vision_radius_sq)A_NEVER == punittype->require_advanceadvance_name_for_player(game.player_ptr,
				  advance_number(punittype->require_advance)));
    }
    create_tech_tree(help_tech_tree, 0, advance_number(punittype->require_advance)utype_name_translation(punittype->obsoleted_by)advance_count())
{
  char buf[4096];
  int i;
  struct advance *padvance = find_advance_by_translated_name(title);

  create_help_page(HELP_TECH);
  set_title_topic(pitem);

  if (padvance  &&  !is_future_tech(i = advance_number(padvance))) {
    create_tech_tree(help_tech_tree, 0, i, 3);
    helptext_tech(buf, sizeof(buf)improvement_by_number(impr_t)->reqs, preq) {
	if (VUT_IMPROVEMENT == preq->source.kind
	    && preq->source.value.building == i) {
	  sprintf(buf+strlen(buf), _("Allows %s.\n"),
		  improvement_name_translation(impr_t));
        }
      } requirement_vector_iterate_end;
      if (padvance == improvement_by_number(impr_t)->obsolete_by)
	sprintf(buf+strlen(buf), _("Obsoletes %s.\n"),
		improvement_name_translation(impr_t));
    } impr_type_iterate_end;

    unit_type_iterate(punittype) {
      if (padvance != punittype->require_advance) {
	continue;
      }
      sprintf(buf + strlen(buf), _("Allows %s.\n"),
	      utype_name_translation(punittype));
    } unit_type_iterate_end;

    advance_iterate(A_NONE, ptest) {
      if (padvance == advance_requires(ptest, AR_ONE)) {
	if (advance_by_number(A_NONE) == advance_requires(ptest, AR_TWO))
	  sprintf(buf+strlen(buf), _("Allows %s.\n"), 
		  advance_name_translation(ptest));
	else
	  sprintf(buf+strlen(buf), _("Allows %s (with %s).\n"), 
		  advance_name_translation(ptest),
		  advance_name_translation(advance_requires(ptest, AR_TWO)));
      }
      if (padvance == advance_requires(ptest, AR_TWO)) {
	sprintf(buf+strlen(buf), _("Allows %s (with %s).\n"), 
		advance_name_translation(ptest),
		advance_name_translation(advance_requires(ptest, AR_ONE)));
      }
    } advance_iterate_end;
    if (strlen(buf)) strcat(buf, "\n");
/**/
  } else {
    create_help_page(HELP_TECH);
    create_tech_tree(help_tech_tree, 0, advance_count())
{
  char buf[4096];
  struct terrain *pterrain = find_terrain_by_translated_name(title)sizeof(buf)buf[0] = '\0';
    if (*(pterrain->resources)) {
      struct resource **r;

      for (r = pterrain->resources; *r; r++) {
	sprintf (buf + strlen (buf), " %s,", resource_name_translation(*r));
      }
      buf[strlen (buf) - 1] = '.';
    } else {
      /* TRANS: (none) as in "Resources: (none)". */
      sprintf (buf + strlen (buf), _("(none)"));
    }
    xaw_set_label(help_terrain_resources, buf);terrain_name_translation(pterrain->irrigation_result)terrain_name_translation(pterrain->mining_result)terrain_name_translation(pterrain->transform_result))
{
  char buf[4096];
  struct government *pgovernment = find_government_by_translated_name(title);

  if (!pgovernment) {
    strcat(buf, pitem->text);
  } else {
    helptext_government(buf, sizeof(buf), pgovernmenttranslatedtranslated);
    break;
  case HELP_TECH:
    help_update_tech(pitem, top);
    break;
  case HELP_TERRAIN:
    help_update_terrain(pitem, top);
    break;
  case HELP_GOVERNMENT:
    help_update_government(pitem, top_required(tech, AR_ONE)!=A_NONE)
      create_tech_tree(help_tech_tree, w, advance_required(tech, AR_ONE), 1);
    if(advance_required(tech, AR_TWO)!=A_NONE)
      create_tech_tree(help_tech_tree, w, advance_required(tech, AR_TWO), 1);
  }
  
}
ENDREP
DELTA 13046 37847 5645
SVN  ƒ›Jƒ4e‹s –] Ž Y–e¢ uÑ? …[¥Q€@ a«dŽ „m¬M€@ b±rŽ Š`²\¢ uÑ? ƒ5¾O¢ |Ñ? ƒ/Ã¢ |Ñ? „sÇg¢ uÑ? ƒ4Ím¢ ˆÑ?¦ A¦@ …xÚ#¥ {Ñ@ …tá7€C SÙ- °fè9€‚ ƒ`›” „ž|€‚= r¥” ƒž| u©› ªgª€@ ¹)Õ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);
  
int flag = A_NONE;
    
    advance_index_iterate(A_FIRST, i) {
      if (player_invention_state(pPlayer0, i) == TECH_KNOWN &&
         player_invention_is_ready(pPlayer1, i) &&
	(player_invention_state(pPlayer1, i) == TECH_UNKNOWN || 
	 player_invention_stateadvance_by_number(i)++i;
	     break;
      }
    } advance_index_iterate_end;
    
    if(flag > A_NONE) {
      advance_index_iterate(flag, i) {
	if (player_invention_state(pPlayer0, i) == TECH_KNOWN &&
	   player_invention_is_ready(pPlayer1, i) &&
	  (player_invention_state(pPlayer1, i) == TECH_UNKNOWN || 
	   player_invention_stateadvance_by_number(i) advance_index_iterate_end;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 10369 1694 2005
SVN  Ÿò;$áE † €° ‚p€‡ ‚“H€` „7•[‹ ‚š€©Lactions.h"
$#include "api_find.h"
$#include "api_intl.h"
$#include "api_methods.h"
$#include "api_notify.h"
$#include "api_utilities.h"
$#include "script.h"

/* Classes. */
struct Player_ai {
   bool control;
};

struct Player {
  const char *name;
  Nation_Type *nation;

  Player_ai ai;

  const int player_no @ id;
};

struct City {
  const char *name;
  Player *owner;
  Tile *tile;

  const int id;
};

struct Unit {
  Unit_Type *utype;
  Player *owner;
  int homecity @ homecity_id;
  Tile *tile;

  const int id;
};

struct Tile {
  const int nat_x;
  const int nat_y;

  Terrain *terrain;

  const int index @ id;
};

struct Government {
  const int item_number @ id;
};

struct Nation_Type {
  const int item_number @ id;
};

struct Building_Type {
  int build_cost;

  const int index @ id;
};

struct Unit_Type {
  int build_cost;

  const int index @ id;
};

struct Tech_Type {
  const int item_number @ id;
};

struct Terrain {
  const int item_number @ id;
};


/* Class methods. */

/* Player */
int api_methods_player_num_cities
	@ methods_player_num_cities (Player *pplayer);
int api_methods_player_num_units
	@ methods_player_num_units (Player *pplayer);

/* Unit */
bool api_methods_unit_city_can_be_built_here
	@ methods_unit_city_can_be_built_here (Unit *punit);

/* Tile */
bool api_methods_tile_city_exists_within_city_radius
	@ methods_tile_city_exists_within_city_radius (Tile *ptile, bool center);

/* Government */
const char *api_methods_government_rule_name
	@ methods_government_rule_name (Government *pgovernment);
const char *api_methods_government_name_translation
	@ methods_government_name_translation (Government *pgovernment);

/* Nation_Type */
const char *api_methods_nation_type_rule_name
	@ methods_nation_type_rule_name (Nation_Type *pnation);
const char *api_methods_nation_type_name_translation
	@ methods_nation_type_name_translation (Nation_Type *pnation);
const char *api_methods_nation_type_plural_translation
	@ methods_nation_type_plural_translation (Nation_Type *pnation);

/* Building_Type */
bool api_methods_building_type_is_wonder
	@ methods_building_type_is_wonder (Building_Type *pbuilding);
bool api_methods_building_type_is_great_wonder
	@ methods_building_type_is_great_wonder (Building_Type *pbuilding);
bool api_methods_building_type_is_small_wonder
	@ methods_building_type_is_small_wonder (Building_Type *pbuilding);
bool api_methods_building_type_is_improvement
	@ methods_building_type_is_improvement (Building_Type *pbuilding);
const char *api_methods_building_type_rule_name
	@ methods_building_type_rule_name (Building_Type *pbuilding);
const char *api_methods_building_type_name_translation
	@ methods_building_type_name_translation (Building_Type *pbuilding);

/* Unit_Type */
bool api_methods_unit_type_has_flag
	@ methods_unit_type_has_flag (Unit_Type *punit_type, const char *flag);
bool api_methods_unit_type_has_role
	@ methods_unit_type_has_role (Unit_Type *punit_type, const char *role);
const char *api_methods_unit_type_rule_name
	@ methods_unit_type_rule_name (Unit_Type *punit_type);
const char *api_methods_unit_type_name_translation
	@ methods_unit_type_name_translation (Unit_Type *punit_type);

/* Tech_Type */
const char *api_methods_tech_type_rule_name
	@ methods_tech_type_rule_name (Tech_Type *ptech);
const char *api_methods_tech_type_name_translation
	@ methods_tech_type_name_translation (Tech_Type *ptech);

/* Terrain */
const char *api_methods_terrain_rule_name
	@ methods_terrain_rule_name (Terrain *pterrain);
const char *api_methods_terrain_name_translation
	@ methods_terrain_name_translation (Terrain *pterrain);

$[
-- Player methods.
function Player:is_human()
  return not self.ai.control
end

function Player:num_cities()
  return methods_player_num_cities(self)
end

function Player:num_units()
  return methods_player_num_units(self)
end

-- Unit methods.
function Unit:homecity()
  return find.city(self.owner, self.homecity_id)
end

function Unit:is_on_possible_city_tile()
  return methods_unit_city_can_be_built_here(self)
end

-- Tile methods
function Tile:city_exists_within_city_radius(center)
  return methods_tile_city_exists_within_city_radius(self, center)
end

-- Government methods
function Government:rule_name()
  return methods_government_rule_name(self)
end

function Government:name_translation()
  return methods_government_name_translation(self)
end

-- Nation_Type methods
function Nation_Type:rule_name()
  return methods_nation_type_rule_name(self)
end

function Nation_Type:name_translation()
  return methods_nation_type_name_translation(self)
end

function Nation_Type:plural_translation()
  return methods_nation_type_plural_translation(self)
end

-- Building_Type methods.
function Building_Type:build_shield_cost()
  return self.build_cost
end

function Building_Type:is_wonder()
  return methods_building_type_is_wonder(self)
end

function Building_Type:is_great_wonder()
  return methods_building_type_is_great_wonder(self)
end

function Building_Type:is_small_wonder()
  return methods_building_type_is_small_wonder(self)
end

function Building_Type:is_improvement()
  return methods_building_type_is_improvement(self)
end

function Building_Type:rule_name()
  return methods_building_type_rule_name(self)
end

function Building_Type:name_translation()
  return methods_building_type_name_translation(self)
end

-- Unit_Type methods.
function Unit_Type:build_shield_cost()
  return self.build_cost
end

function Unit_Type:has_flag(flag)
  return methods_unit_type_has_flag(self, flag)
end

function Unit_Type:has_role(role)
  return methods_unit_type_has_role(self, role)
end

function Unit_Type:rule_name()
  return methods_unit_type_rule_name(self)
end

function Unit_Type:name_translation()
  return methods_unit_type_name_translation(self)
end

-- Tech_Type methods
function Tech_Type:rule_name()
  return methods_tech_type_rule_name(self)
end

function Tech_Type:name_translation()
  return methods_tech_type_name_translation(self)
end

-- Terrain methods
function Terrain:rule_name()
  return methods_terrain_rule_name(self)
end

function Terrain:name_translation()
  return methods_terrain_name_translation(selfGovernment *api_find_government
		@ government (int government_id);
  Government *api_find_government_by_name
		@ government (const char *name_orig);
  Nation_Type *api_find_nation_type_by_name
		@ nation_type (const char *name_orig);
  Nation_Type *api_find_nation_type
		@ nation_type (int nation_type_id);
  Building_Type *api_find_building_type_by_name
		@ building_type (const char *name_orig);
  Building_Type *api_find_building_type
		@ building_type (int building_type_id);
  Unit_Type *api_find_unit_type_by_name
		@ unit_type (const char *name_orig);
  Unit_Type *api_find_unit_type
		@ unit_type (int unit_type_id);
  Tech_Type *api_find_tech_type_by_name
		@ tech_type (const char *name_orig);
  Tech_Type *api_find_tech_type
		@ tech_type (int tech_type_id);
  Terrain *api_find_terrain_by_name
		@ terrain (const char *name_orig);
  Terrain *api_find_terrain
		@ terrain (int terrain then
      local rvalue = tostring(v)

      res = res .. k .. '=' .. rvalue .. '\n'
    elseif
				      
				int n);

/* Notify module. */
module notify {
  void api_notify_embassies_msg @ embassies_msg (Player *pplayer,
						 Tile *ptile,
						 int event,
						 const char *message);
  void api_notify_event_msg @ event_msg (Player *pplayer, Tile *ptile,
					 int event, const char *message);
}

/* Notify events module. */
module E {
  enum event_type {
    E_CITY_CANTBUILD @ CITY_CANTBUILD,
    E_CITY_LOST @ CITY_LOST,
    E_CITY_LOVE @ CITY_LOVE,
    E_CITY_DISORDER @ CITY_DISORDER,
    E_CITY_FAMINE @ CITY_FAMINE,
    E_CITY_FAMINE_FEARED @ CITY_FAMINE_FEARED,
    E_CITY_GROWTH @ CITY_GROWTH,
    E_CITY_MAY_SOON_GROW @ CITY_MAY_SOON_GROW,
    E_CITY_AQUEDUCT @ CITY_AQUEDUCT,
    E_CITY_AQ_BUILDING @ CITY_AQ_BUILDING,
    E_CITY_NORMAL @ CITY_NORMAL,
    E_CITY_NUKED @ CITY_NUKED,
    E_CITY_CMA_RELEASE @ CITY_CMA_RELEASE,
    E_CITY_GRAN_THROTTLE @ CITY_GRAN_THROTTLE,
    E_CITY_TRANSFER @ CITY_TRANSFER,
    E_CITY_BUILD @ CITY_BUILD,
    E_CITY_PRODUCTION_CHANGED @ CITY_PRODUCTION_CHANGED,
    E_WORKLIST @ WORKLIST,
    E_UPRISING @ UPRISING,
    E_CIVIL_WAR @ CIVIL_WAR,
    E_ANARCHY @ ANARCHY,
    E_FIRST_CONTACT @ FIRST_CONTACT,
    E_NEW_GOVERNMENT @ NEW_GOVERNMENT,
    E_LOW_ON_FUNDS @ LOW_ON_FUNDS,
    E_POLLUTION @ POLLUTION,
    E_REVOLT_DONE @ REVOLT_DONE,
    E_REVOLT_START @ REVOLT_START,
    E_SPACESHIP @ SPACESHIP,
    E_MY_DIPLOMAT_BRIBE @ MY_DIPLOMAT_BRIBE,
    E_DIPLOMATIC_INCIDENT @ DIPLOMATIC_INCIDENT,
    E_MY_DIPLOMAT_ESCAPE @ MY_DIPLOMAT_ESCAPE,
    E_MY_DIPLOMAT_EMBASSY @ MY_DIPLOMAT_EMBASSY,
    E_MY_DIPLOMAT_FAILED @ MY_DIPLOMAT_FAILED,
    E_MY_DIPLOMAT_INCITE @ MY_DIPLOMAT_INCITE,
    E_MY_DIPLOMAT_POISON @ MY_DIPLOMAT_POISON,
    E_MY_DIPLOMAT_SABOTAGE @ MY_DIPLOMAT_SABOTAGE,
    E_MY_DIPLOMAT_THEFT @ MY_DIPLOMAT_THEFT,
    E_ENEMY_DIPLOMAT_BRIBE @ ENEMY_DIPLOMAT_BRIBE,
    E_ENEMY_DIPLOMAT_EMBASSY @ ENEMY_DIPLOMAT_EMBASSY,
    E_ENEMY_DIPLOMAT_FAILED @ ENEMY_DIPLOMAT_FAILED,
    E_ENEMY_DIPLOMAT_INCITE @ ENEMY_DIPLOMAT_INCITE,
    E_ENEMY_DIPLOMAT_POISON @ ENEMY_DIPLOMAT_POISON,
    E_ENEMY_DIPLOMAT_SABOTAGE @ ENEMY_DIPLOMAT_SABOTAGE,
    E_ENEMY_DIPLOMAT_THEFT @ ENEMY_DIPLOMAT_THEFT,
    E_CARAVAN_ACTION @ CARAVAN_ACTION,
    E_TUTORIAL @ TUTORIAL,
    E_BROADCAST_REPORT @ BROADCAST_REPORT,
    E_GAME_END @ GAME_END,
    E_GAME_START @ GAME_START,
    E_MESSAGE_WALL @ MESSAGE_WALL,
    E_NATION_SELECTED @ NATION_SELECTED,
    E_DESTROYED @ DESTROYED,
    E_REPORT @ REPORT,
    E_TURN_BELL @ TURN_BELL,
    E_NEXT_YEAR @ NEXT_YEAR,
    E_GLOBAL_ECO @ GLOBAL_ECO,
    E_NUKE @ NUKE,
    E_HUT_BARB @ HUT_BARB,
    E_HUT_CITY @ HUT_CITY,
    E_HUT_GOLD @ HUT_GOLD,
    E_HUT_BARB_KILLED @ HUT_BARB_KILLED,
    E_HUT_MERC @ HUT_MERC,
    E_HUT_SETTLER @ HUT_SETTLER,
    E_HUT_TECH @ HUT_TECH,
    E_HUT_BARB_CITY_NEAR @ HUT_BARB_CITY_NEAR,
    E_IMP_BUY @ IMP_BUY,
    E_IMP_BUILD @ IMP_BUILD,
    E_IMP_AUCTIONED @ IMP_AUCTIONED,
    E_IMP_AUTO @ IMP_AUTO,
    E_IMP_SOLD @ IMP_SOLD,
    E_TECH_GAIN @ TECH_GAIN,
    E_TECH_LEARNED @ TECH_LEARNED,
    E_TREATY_ALLIANCE @ TREATY_ALLIANCE,
    E_TREATY_BROKEN @ TREATY_BROKEN,
    E_TREATY_CEASEFIRE @ TREATY_CEASEFIRE,
    E_TREATY_PEACE @ TREATY_PEACE,
    E_TREATY_SHARED_VISION @ TREATY_SHARED_VISION,
    E_UNIT_LOST_ATT @ UNIT_LOST_ATT,
    E_UNIT_WIN_ATT @ UNIT_WIN_ATT,
    E_UNIT_BUY @ UNIT_BUY,
    E_UNIT_BUILT @ UNIT_BUILT,
    E_UNIT_LOST @ UNIT_LOST,
    E_UNIT_WIN @ UNIT_WIN,
    E_UNIT_BECAME_VET @ UNIT_BECAME_VET,
    E_UNIT_UPGRADED @ UNIT_UPGRADED,
    E_UNIT_RELOCATED @ UNIT_RELOCATED,
    E_UNIT_ORDERS @ UNIT_ORDERS,
    E_WONDER_BUILD @ WONDER_BUILD,
    E_WONDER_OBSOLETE @ WONDER_OBSOLETE,
    E_WONDER_STARTED @ WONDER_STARTED,
    E_WONDER_STOPPED @ WONDER_STOPPED,
    E_WONDER_WILL_BE_BUILT @ WONDER_WILL_BE_BUILT,
    E_DIPLOMACY @ DIPLOMACY,
    E_TREATY_EMBASSY @ TREATY_EMBASSY,
    E_BAD_COMMAND @ BAD_COMMAND,
    E_SETTING @ SETTING,
    E_CHAT_MSG @ CHAT_MSG,
    E_CHAT_ERROR @ CHAT_ERROR,
    /* 
     * Note: If you add a new event, make sure you make a similar change
     * to the events array in client/options.c using GEN_EV and to
     * data/stdsounds.spec.
     */
    E_LAST @ LAST
  };
}

$[
-- Notify module implementation.

function notify.all(...)
  notify.event_msg(nil, nil, E.NOEVENT, string.format(unpack(arg)))
end

function notify.player(player, ...)
  notify.event_msg(player, nil, E.NOEVENT, string.format(unpack(arg)))
end

function notify.event(player, tile, event, ...)
  notify.event_msg(player, tile, event, string.format(unpack(arg)))
end

function notify.embassies(player, ptile, event, ...)
  notify.embassies_msg(player, ptile, event, string.format(unpack(arg)))
end
$]

/* Utilities module. */
int api_utilities_random @ random (int min, int max);

/* Actions module. */
Unit *api_actions_create_unit @ create_unit (Player *pplayer, Tile *ptile,
					     Unit_Type *ptype,
					     int veteran_level,
					     City *homecity, int moves_left);
void api_actions_create_city @ create_city (Player *pplayer, Tile *ptile,
					    const char *name);
void api_actions_change_gold @ change_gold (Player *pplayer, int amount);
Tech_Type *api_actions_give_technology @ give_technology (Player *pplayer,
						    Tech_Type *ptech,
						    const char *reason);
bool api_actions_unleash_barbarians @ unleash_barbarians (Tile *ptile);
ENDREP
DELTA 13046 45359 2063
SVN  êë‚4 ­e   /­h€2 ‚HÏB€f DÒ&œ –0Ójadvance_index_iterate(A_FIRST, i) {
      if(player_invention_state(p, i) == TECH_KNOWN &&
        player_invention_is_ready(game.player_ptr, i) &&
        player_invention_state
                           advance_name_translation(advance_by_number(i)),
                            advance_index_iterate_end;ENDREP
DELTA 13219 24632 958
SVN  ‚’‚”`Ž ©! ¥ „©7­ „T­b­ ©.²S€| ‚Ý}€‡ æ€o ßé– fÈ0– 'Ê#– ËW€c ˜Û/¥ „ióF­ †SøL­ ’Iÿ:advance_number(unit->require_advance)&& advance_number(preq->source.value.advance)&& advance_number(preq->source.value.advance)int j;
  struct tree_node *nodes[advance_count()];

  nodes[A_NONE] = NULL;
  advance_index_iterate(A_FIRST, tech) {
    if (!valid_advance_by_number(tech)) {
      nodes[tech] = NULL;
      continue;
    }
    if (pplayer && !player_invention_is_readyadvance_index_iterate_end;

  advance_index_iterate(A_FIRST, tech) {
    struct advance *padvance = valid_advance_by_number(tech);

    if (!padvance) {
      continue;
    }
    if (nodes[tech] == NULL) {
      continue;
    }

    /* Don't include redundant edges */
    if (A_NONE != advance_required(tech, AR_ONE)
     && A_LAST != advance_required(tech, AR_TWO)) {
      if (A_NONE == advance_required(tech, AR_TWO)
       || !is_tech_a_req_for_goal(game.player_ptr,
				  advance_required(tech, AR_ONE),
				  advance_required(tech, AR_TWO))) {
	add_requirement(nodes[tech], nodes[advance_required(tech, AR_ONE)]);
      }

      if (A_NONE != advance_required(tech, AR_TWO)
       && !is_tech_a_req_for_goal(game.player_ptr,
				  advance_required(tech, AR_TWO),
				  advance_required(tech, AR_ONE))) {
	add_requirement(nodes[tech], nodes[advance_required(tech, AR_TWO)]);
      }
    }
  } advance_indexcalloc(advance_count(), sizeof(*tree->nodes));
  j = 0;
  advance_index_iterate(A_FIRST, tech) {
    if (nodes[tech]) {
      assert(valid_advance_by_number(nodes[tech]->tech));
      tree->nodes[j++] = nodes[tech];
    }
  } advance_indexplayer_invention_stateplayer_invention_stateplayer_invention_stateplayer_invention_state(game.player_ptr, node->tech) == TECH_KNOWN) {
    if (player_invention_stateadvance_number(unit->require_advance)&& advance_number(preq->source.value.advance)&& advance_number(preq->source.value.advance)ENDREP
DELTA 13024 45414 9884
SVN  ƒº,ƒ½R‚o‘  ( ¦ ¯ =œ …{Ïm· „CÕh° ‘
ÚVš iì!¡ …&íG˜ ‰%ò|€a 
üh° Œxþ˜ Oò| ´`‹s• †CÀg• IÇ>€] yÕ5™ iä7€V å:¯ yÕ5• iä7 vÏLŽ yÕ5– iä7¶ å:© ‚ Õ-˜ W×=‹ |Õ5‡ uÖ8 oÛƒ ‚pÝ	´ å:€u yÕ5 ‚\ä Œ „-çƒ ‚ë/ |Õ5 uÖ8ž aïlª ˜Nñi• …t‚ŠK€g  9‚‘"€U ˆ|‚²$´ v‚» » r‚¼» „‚½  z‚Á@€! q‚ÄK» M‚Æ<§ H‚È"€q R‚ÊY  —*‚ÌQ Š{‚ä¤ ¤‚ï1 ‡<ƒ“\ 9ƒ› €c 5ƒ¬(,ƒº 
		       improvement_name_translationimprovement_name_translation,
                                          RPT_CERTAIN
			pcity->name,
			improvement_name_translationspecialist_type_iterate(sp specialist_type_iterate_end;
  }game_find_city_by_number, RPT_CERTAIN) > 0
        || get_current_construction_bonus(pcity, EFT_SIZE_UNLIMIT, RPT_CERTAIN
			pcity->name,
			improvement_name_translationgame_find_city_by_numberimprovement_by_numberimprovement_by_number, RPT_POSSIBLE)) {
	    known = TRUE;
	    switch (preq->source.kind) {
	    case VUT_ADVANCEtech %s not yet availableadvance_name_for_player(pplayer,
					     advance_number(preq->source.value.advance))tech");
	      break;
	    case VUT_IMPROVEMENTneed to have %s firstVUT_GOVERNMENTit needs %s governmentgovernment_name_translation(preq->source.value.govern)government");
	      break;
	    case VUTspecial_name_translationVUT_TERRAINterrainVUTnation_plural_translation(preq->source.value.nation)nation");
	      break;
	    case VUT_UTYPE:
	    case VUT_UTFLAG:
	    case VUT_UCLASS:
	    case VUT_UCFLAG:
	    case VUT_OTYPE:
	    case VUT_SPECIALIST:
	      /* Will only happen with a bogus ruleset. */
	      break;
	    case VUT_MINSIZEVUT_AI_LEVELai_VUT_TERRAINCLASSterrain classterrain_class_name_translationVUT_NONE:
	    case VUT_LAST:
	    defaultimprovement_by_numberimprovement_name_translation(pcity->production.value),
		     improvement_name_translation(upgrades_to)improvement_by_number(id);

  if (!pcity->production.is_unit
      && improvement_has,
                                       RPT_CERTAIN,
                                              RPT_CERTAIN,
                                              RPT_CERTAINnation_plural_for_player(pplayer
		     pcity->name,
		     improvement_name_translation(id));
    script_signal_emit("building_built", 2,
		       API_TYPE_BUILDING_TYPE, improvement_by_number,
                                              RPT_CERTAINimprovement_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 13007 17119 16328
SVN  ƒõkƒù„²c ¢g   ”<£µ ˆ[·qŽ 8ÀY€C †~ÂR“ cÉ]€O ˆpÌŽ …Õ €S ƒ[Úe€f Nß€l …î> ˆ.óe¡ Kü9¡ Hþ*¨ R‚ë  ‹<€q€Z †Ž¡ „n”T€L „j›• =Ÿ~¡ Z¡b¡ m£c• ‡K¤b€I h­€I †¯?€r „¶6€, jƒš6 ·Q¼P yô-€i ƒj÷— /û€{ S‚ê Lý=€N v‚Œ€C …0‚A– )‚“– ‚q‚”@– †‚—D€8 ƒF‚žx€ „‚£<– ‚ ‚§V€‚< S‚ê„ FØ@ “O‚­<• ‚r‚Á– S‚ê P‚Äs¹ †<‚Ætª ‚ÍYª ‡‚Ï€‚& Œq‚ØB€‚D ‚è€_ ‚0‚ê» Z‚íh€J S‚ê ‚C‚ï_Ž 0‚ò4Ž k‚óvŽ Žv‚ôs¸ …/ƒ„7€:  ƒ‹€‚/ fƒŽ€‚( ƒ!ƒ‘~€R ˆ'ƒ•cŽ yƒž™ ƒ	ƒŸ$™ }ƒ¢<™ #ƒ£HŽ }ƒ¤}€…> †Eƒ«€s ƒwƒ²B€D ¡aƒ·cŽ ‚ƒÙVŽ ™sƒÛxnation_plural_for_player(pplayer
                  government_name_for_player(pplayerovernment_rulenation_plural_for_player(pplayer),
		   government_name_translationovernment_by_numberovernment_rule_name(gov),
	  government_rule_name(government_of_player(pplayer)overnment_rulenation_plural_for_player(pplayer),
		     turns,
		     government_name_translationovernment_rule_name(pplayer->target_government),
	  government_rule_name(government_of_player(pplayer)overnment_rule_name(government_of_player(pplayer)),
	  pplayer->target_government
	  ? government_rule_name(pplayer->target_government)
	  : "(none)",
	  pplayer->revolution_finishes, game.info.turn);
  if (government_of_player(pplayer)government_of_player(pplayer)overnment_name_for_player(pplayerovernment_name_for_player(pplayerovernment_name_for_player(pplayer));
  }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].typenation_plural_for_player(pplayer2layer_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)nation_plural_for_player(pplayer2nation_plural_for_player(pplayer2layer_index(pplayer2)nation_plural_for_player(pplayer),
		   nation_plural_for_player(pplayer2nation_plural_for_player(pplayer2),
		   nation_plural_for_player(pplayerlayer_index(pplayer)].has_reason_to_cancel = 1;
        handle_diplomacy_cancel_pact(other, player_number(pplayer)nation_plural_for_player(pplayer2),
                         pplayer2->name);
        handle_diplomacy_cancel_pact(other, player_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) : -1;
  packet->is_ready = plr->is_ready;
  if (city_styles != NULL) {
    packet->city_style = city_style_of_player/*improvement_count()*/government_of_player(plr)
                       ? government_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)player_index(receiver)advance_index_iterate(A_FIRST, i) {
      packet->inventions[i] = 
        research->inventions[i].state + '0';
    } advance_index_iterate_end;
    packet->inventions[advance_count()]advance_index_iterate(A_FIRST, i) {
      packet->inventions[i] = '0';
    } advance_index_iterate_end;
    packet->inventions[advance_count()]player_index(receiver)         || A_UNSET == research->researching
	 || is_future_tech(research->researching)
	 || (A_NONE != research->researching
	     && valid_advance_by_number(research->researching)));
  assert(A_UNSET == research->tech_goal
	 || (A_NONE != research->tech_goal
	     && valid_advance_by_number(research->tech_goal)))...
layer_number(pplayer)layer_number(pplayer))layer_number(pplayer1), player2 = player_number(pplayer2)nation_plural_for_player(pplayer2),
		    nation_plural_for_player(pplayer1),
		    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(); i++) {
    shuffled_plr[i] = &game.players[i];
  }

  /* Now shuffle them: */
  for(i = 0; i < player_count() - 1; i++) {
    /* for each run: shuffled[ <i ] is already shuffled [Kero+dwp] */
    pos = i + myrand(player_count()player_count(); i++) {
    freelog(LOG_DEBUG, "Shuffling player %d as %d.",
	    i, player_number(shuffled_plr[i]));
  }
#endif

  /* Record how many players there were when shuffled: */
  shuffled_nplayers = player_count()player_count(); i++) {
    shuffled_plr[i] = player_by_numbplayer_number(shuffled_plr[i]));
  }

  shuffled_nplayers = player_count()player_count()player_count()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_of_player(pplayer), ignore_conflicts);
	if (x < 0) {
	  nations_used[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()nation_of_player(pplayer)nation_of_player(cplayer)nation_of_player(cplayer)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)advance_index_iterate(A_NONE, i) {
    new_research->inventions[i] = old_research->inventions[i];
  } advance_indexadvance_index_iterate(A_NONE, i) {
    cplayer->ai.tech_want[i] = pplayer->ai.tech_want[i];
  } advance_index_iterate_end;
  
  /* change the original player */
  if (government_of_player(pplayer)player_count()player_count()ENDREP
DELTA 13219 175 1705
SVN  ƒ‹Rƒ‹ro†G « ° »«€B hög 3çE Âké‘ ¬£ $­Zµ ‚ °© Y² ´­ ä<µ3€ƒ ‚‚œ3™ ƒr‚žL¢ ‹‚¢S– 	‚®” H‡  Ûb‚¯p
					 advance_number(req->source.value.advance)advance_index_iterate(A_FIRST, i) {
	    if (valid_advance_by_numbadvance_indexvalid_advance(imp		 advance_number(imp->obsolete_by) = get_role_unit(F_NUCLEAR, 0);
    CHECK_UNIT_TYPE(u
					 advance_number(u->require_advance)A_NEVER != u->require_advance
					     advance_number(u->require_advance)advance *vap = valid_advance_by_number(i);
  struct universal source = {
    .kind = VUT_ADVANCE,
    .value.advance = vap
  };

  assert(buf&&user_text);
  strcpy(buf, user_text);

  if (NULL == vap) {
    freelog(LOG_ERROR, "Unknown tech %d.", i);
    strcpy(buf, user_text);
    return;
  }

  if (player_invention_state(game.player_ptr, i) != TECH_KNOWN) {
    if (player_invention_stateplayer_invention_is_ready
     && player_invention_is_readyvap->helptext && vap->vap->helptext));
  }ENDREP
DELTA 13276 0 1401
SVN  ¦k£Z  ’  ‘C•(ENDREP
DELTA 13133 13487 104
SVN  ÙÙuM Ë$ €! ‹rËsŸ t×wØt    if (A_NEVER == u_type->require_advance) {
      continue;
    }

    /* assign tech for paratroopers */
    tech_req = advance_index(u_type->require_advance)advance_index_iterate(A_FIRST, advance_indexENDREP
DELTA 10471 442 816
SVN  ˆ2Âi°# …e €= G €k G €^ G €[ G €ƒ# G €ƒ# G €‚] G €g G €y G €y G €s G €j G €~ G €a G €u G €‚  G €w G €‚C G €` G €t G €X G €l G €X G €kgovernment.h"
#include "improvement.h"
#include "nation.h"
#include "tech.h"
#include "terrain.h"
#include "unitlist.h"
#include "unittype.h"

#include "api_methods.h"
#include "script.h"

****
  Can punit found a city on its tile?
**************************************************************************/
bool api_methods_unit_city_can_be_built_here(Unit *punit)
{
  return city_can_be_built_here(punit->tile, punit);
}

****
  Return the number of cities pplayer has.
**************************************************************************/
int api_methods_player_num_cities(Player *pplayer)
{
  return city_list_size(pplayer->cities);
}

****
  Return the number of units pplayer has.
**************************************************************************/
int api_methods_player_num_units(Player *pplayer)
{
  return unit_list_size(pplayer->units);
}

****
  Return TRUE if punit_type has flag.
**************************************************************************/
bool api_methods_unit_type_has_flag(Unit_Type *punit_type, const char *flag)
{
  enum unit_flag_id id = find_unit_flag_by_rule_name(flag);

  if (id != F_LAST) {
    return utype_has_flag(punit_type, id);
  } else {
    script_error("Unit flag \"%s\" does not exist", flag);
    return FALSE;
  }
}

****
  Return TRUE if punit_type has role.
**************************************************************************/
bool api_methods_unit_type_has_role(Unit_Type *punit_type, const char *role)
{
  enum unit_role_id id = find_unit_role_by_rule_name(role);

  if (id != L_LAST) {
    return utype_has_role(punit_type, id);
  } else {
    script_error("Unit role \"%s\" does not exist", role);
    return FALSE;
  }
}

****
  Return TRUE there is a city inside city radius from ptile
**************************************************************************/

bool api_methods_tile_city_exists_within_city_radius(Tile *ptile, 
                                              bool may_be_on_center)
{
  return city_exists_within_city_radius(ptile, may_be_on_center);
}

****
  Return TRUE if pbuilding is a wonder.
**************************************************************************/
bool api_methods_building_type_is_wonder(Building_Type *pbuilding)
{
  return is_wonder(pbuilding->index);
}

****
  Return TRUE if pbuilding is a great wonder.
**************************************************************************/
bool api_methods_building_type_is_great_wonder(Building_Type *pbuilding)
{
  return is_great_wonder(pbuilding->index);
}

****
  Return TRUE if pbuilding is a small wonder.
**************************************************************************/
bool api_methods_building_type_is_small_wonder(Building_Type *pbuilding)
{
  return is_small_wonder(pbuilding->index);
}

****
  Return TRUE if pbuilding is a building.
**************************************************************************/
bool api_methods_building_type_is_improvement(Building_Type *pbuilding)
{
  return is_improvement(pbuilding->index);
}

****
  Return rule name for Government
**************************************************************************/
const char *api_methods_government_rule_name(Government *pgovernment)
{
  return government_rule_name(pgovernment);
}

****
  Return translated name for Government
**************************************************************************/
const char *api_methods_government_name_translation(Government *pgovernment)
{
  return government_name_translation(pgovernment);
}

****
  Return rule name for Nation_Type
**************************************************************************/
const char *api_methods_nation_type_rule_name(Nation_Type *pnation)
{
  return nation_rule_name(pnation);
}

****
  Return translated name for Nation_Type
**************************************************************************/
const char *api_methods_nation_type_name_translation(Nation_Type *pnation)
{
  return nation_name_translation(pnation);
}

****
  Return translated plural name for Nation_Type
**************************************************************************/
const char *api_methods_nation_type_plural_translation(Nation_Type *pnation)
{
  return nation_plural_translation(pnation);
}

****
  Return rule name for Building_Type
**************************************************************************/
const char *api_methods_building_type_rule_name(Building_Type *pbuilding)
{
  return improvement_rule_name(pbuilding->index);
}

****
  Return translated name for Building_Type
**************************************************************************/
const char *api_methods_building_type_name_translation(Building_Type 
                                                       *pbuilding)
{
  return improvement_name_translation(pbuilding->index);
}

****
  Return rule name for Unit_Type
**************************************************************************/
const char *api_methods_unit_type_rule_name(Unit_Type *punit_type)
{
  return utype_rule_name(punit_type);
}

****
  Return translated name for Unit_Type
**************************************************************************/
const char *api_methods_unit_type_name_translation(Unit_Type *punit_type)
{
  return utype_name_translation(punit_type);
}

****
  Return rule name for Tech_Type
**************************************************************************/
const char *api_methods_tech_type_rule_name(Tech_Type *ptech)
{
  return advance_rule_name(ptech);
}

****
  Return translated name for Tech_Type
**************************************************************************/
const char *api_methods_tech_type_name_translation(Tech_Type *ptech)
{
  return advance_name_translation(ptech);
}

****
  Return rule name for Terrain
**************************************************************************/
const char *api_methods_terrain_rule_name(Terrain *pterrain)
{
  return terrain_rule_name(pterrain);
}

****
  Return translated name for Terrain
**************************************************************************/
const char *api_methods_terrain_name_translation(Terrain *pterrain)
{
  return terrain_name_translation(pterrain);
}
ENDREP
DELTA 11249 2513 8448
SVN  ƒØoƒç:…nÂn ˆ? ’ •ˆ;€[ Až— ŠEŸt€{ LƒÕ@ †E«z– ‚²L– ‰4´[˜ b¾• À• ‚2Á – Ã_– †`Åk• „Ì] kÔ?® QÑx• IÑx  Ô$€ …PÖL• 
Ü.• †}ÝJ• †$äY› yä^ Žì• –>ú!– †:q• \—=¦ ¨;€C ƒ©• ˆ­(½ ‚d¶ˆ b¸~ˆ =º_ „¼7€s *Àr‡ „/Â"• †Æc” ˆ+Í€ LƒÕ@ z×¾ SÙ € TƒÂ= ˆÛ4€- oäg– ‡æh• Gî˜ Eõ} ð&€> òq• Xô• ƒVõz• ‚#ùb€$ ƒüt• ‡‚€"€J ‚2‚‰– ‚#‚‹W€ …‚Žz¬ XƒÕ4 W‚”}€~ {‚˜V€Z w‚š€„ †[‚[€N ‘‚¤e€R ‚z‚·,€‚& K‚•@ s‚ºo” ƒR‚¼s€‚" J‚Ê Q‚Â'€ƒ? d‚Åp€‚ J‚Ê )‚È5€‚4 ‚‚Ê€…D †?‚Ñ€& ƒ ‚Ød• ‚Ü¤ …‚Ý4– H‚âV• ‚ä0• „%‚åD• … ‚é{• f‚ï-• ‚ð%” O‚ñP” ‚ó0” ƒk‚ô@• …3‚ø=€h …‚þ• 6ƒƒ– ƒbƒ“e€‚ ‡Fƒ™o€5 xƒ¢`€ Mƒª:ž ‚oƒ¦j€ Mƒª:­ ‚jƒ¬€s Mƒª:¢ [ƒ³ ƒ´] „5ƒµt „Sƒº5– gƒ¿€ ƒ|ƒÁ{€| …VƒÆm€` pƒÍ€g ƒÎn€= ‡ƒÑ$¯#include "unitlist  enum tech_state state = player_invention_state(pplayer, tech);

  if (TECH_KNOWN == stateTECH_REACHABLE == state_index(player2)] > - (MAX_AI_LOVE * 4 / 10)
          && ai->diplomacy.player_intel[player_index(player2)].countdown == -1)player_invention_stateplayer_invention_state                        player_index(aplayer)player_index(aplayer)player_invention_stateadvance_name_by_playerplayer_index(aplayer)= greed(pplayer->ai.love[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)].countdown != -1nullified");
      ai->diplomacy.player_intel[player_index(aplayer)player_index(aplayer)mprovement_obsolete(pplayer, id)) {
        continue;
      }has_typehas_typetype_has_flag(utype_by_numberplayer_index(target)].distance = distance;

  /* Worry a bit if the other player has extreme amounts of wealth
   * that can be used in cities to quickly buy an army. */
  fear += (target->economic.gold / 5000) * city_list_size(target->cities)pplayerplayer_index(eplayer)player_index(target)player_number(aplayer));
  handle_diplomacy_create_clause_req(pplayer, player_number(aplayer),
				     player_number(pplayer), what, value)if (pplayer->ai.control && !ai_handicap(pplayer, H_AWAY)) {
    "while we get to know each other better?"),
           pplayer->name, aplayer->name);
    ai_diplomacy_suggest(pplayer, aplayer, CLAUSE_CEASEFIRE, 0)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)] / 2;
      }
      amount -= ai->diplomacy.love_incr * 6;
      pplayer->ai.love[player_index(aplayer)player_index(aplayer)player_index(aplayer)player_index(aplayer)if (!NEVER_MET(pplayer, aplayer)) {
      pplayer->ai.love[player_index(aplayer)] +=
        get_player_bonus(aplayer, EFT_GAIN_AI_LOVE) * MAX_AI_LOVE / 1000;
    }player_index(aplayer)advance_count()];
  bool is_dangerous;
    
  worth[A_NONE] = 0;

  advance_index_iterate(A_FIRST, tech) {
    if (player_invention_state(player1, tech) == TECH_KNOWN) {
      if (player_invention_stateplayer_invention_stateadvance_index_iterate_end;
    
  advance_index_iterate(A_FIRST, tech) {
    if (worth[tech] <= 0) {
      continue;
    }
    advance_index_iterate(A_FIRST, advance_index_iterate_end;
  } advance_indexbool gives_vision;

  /* Only share techs with team mates */
  if (players_on_same_team(pplayer, aplayer)) {
    advance_index_iterate(A_FIRST, index) {
      if ((player_invention_state(pplayer, index) != TECH_KNOWN)
          && (player_invention_stateplayer_invention_state(pplayer, index) == TECH_KNOWN)
          && (player_invention_state advance_index_iterate_end;
  }

  /* Only give shared vision if safe. Only ask for shared vision if fair. */
  gives_vision = gives_shared_vision(pplayer, aplayer);
  if (!gives_vision
      && shared_vision_is_safe(pplayer, aplayer)) {
    ai_diplomacy_suggest(pplayer, aplayer, CLAUSE_VISION, 0);
    gives_vision = TRUE;
  }
  if (gives_vision
      && !gives_shared_vision(aplayer, pplayer)
      && (!aplayer->ai.control || shared_vision_is_safe(aplayer, pplayer))) {
    ai_diplomacy_suggest(aplayer, pplayer, CLAUSE_VISION, 0);
  }
player_index(target)];

  assert(pplayer != target);
  assert(target->is_aliveplayer_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)
  When the adip->coundown variable is set to a positive value, it 
  counts down to a declaration of war. When it is set to a value 
  smaller than -1, it is a countup towards a "neutral" stance of -1,
  in which time the AI will refuse to make treaties. This is to make
  the AI more stubbornplayer_index(target)PL_("*%s (AI)* We will be launching an all-out war "
		       "against %s in %d turn to stop the spaceship "
		       "launch.",
		       "*%s (AI)* We will be launching an all-out war "
		       "against %s in %d turns to stop the spaceship "
		       "launch.",
		       countdown),
	    PL_("*%s (AI)* %s has grossly violated his treaties "
		       "with us for own gain.  We will answer in force in "
		       "%d turn and expect you to honour your alliance "
		       "with us and do likewise!",
		       "*%s (AI)* %s has grossly violated his treaties "
		       "with us for own gain.  We will answer in force in "
		       "%d turns and expect you to honour your alliance "
		       "with us and do likewise!", countdown),
	    PL_("*%s (AI)* We intend to pillage and plunder the rich "
		       "civilization of %s. We declare war in %d turn.",
		       "*%s (AI)* We intend to pillage and plunder the rich "
		       "civilization of %s. We declare war in %d turns.",
		       countdown), 
	    PL_("*%s (AI)* We have had it with %s. Let us tear this "
		       "pathetic civilization apart. We declare war in "
		       "%d turn.",
		       "*%s (AI)* We have had it with %s. Let us tear this "
		       "pathetic civilization apart. We declare war in "
		       "%d turns.",
		       countdown),
	    PL_("*%s (AI)* We will honour our alliance and declare "
			 "war on %s in %d turn.  Hold on - we are coming!",
			 "*%s (AI)* We will honour our alliance and declare "
			 "war on %s in %d turns.  Hold on - we are coming!",
			 countdown),
			pplayer->name, target->name, countdown);
      } else if (adip->at_war_with_ally) {
        notify(ally, PL_("*%s (AI)* We will honour our alliance with %s and "
			 "declare war on %s in %d turns.  We expect you to "
			 "do likewise.",
			 "*%s (AI)* We will honour our alliance with %s and "
			 "declare war on %s in %d turns.  We expect you to "
			 "do likewise.",
			 countdown),
	       pplayer->name, 
	       adip->at_war_with_ally->name, target->name,
	player_index(aplayer)] < 0
        && pplayer->diplstates[player_index(aplayer)].has_reason_to_cancel >= 2
        && ai->diplomacy.player_intel[player_index(aplayer)player_index(aplayer)  /* already counting down to war */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)];

    if (!aplayer->is_alive) {
      adip->countdown = -1;
      continue;
    }player_index(aplayer)player_number(eplayer)player_index(aplayer)] > MAX_AI_LOVE / 2)) {
        /* Share techs only with team mates and allies we really like. */
        ai_share(pplayer, aplayer);
      }
      if (!target || !target->is_alive) {
        adip->ally_patience = 0;
        break; /* No need to nag our ally */player_number(aplayer),
				       CLAUSE_ALLIANCE);
          pplayer->ai.love[player_index(aplayer)] = 
                                 MIN(pplayer->ai.love[player_index(aplayer)clause.type = CLAUSE_ALLIANCE;
      if (adip->at_war_with_ally
          || (!aplayer->ai.control && adip->asked_about_alliance > 0)
          ||    ai, FALSE, DS_ALLIANCE) < 0clause.type = CLAUSE_PEACE;
      if (adip->at_war_with_ally
          || (!aplayer->ai.control && adip->asked_about_peace > 0)
          ||    ai, FALSE, DS_PEACE) < 0) {
        break;  clause.type = CLAUSE_CEASEFIRE;
      if ((!aplayer->ai.control && adip->asked_about_ceasefire > 0)
          ||    ai, FALSE, DS_CEASEFIRE) < 0) {Wayer_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 13258 1302 269
SVN  ×i×  Še  š2‹" ±m¥|ENDREP
DELTA 13133 164756 1724
SVN  Æ5ÆQL »   Ž7»)€1 ‚EË› øiÍLadvance_index_iterate(A_FIRST, i) {
      if(player_invention_state(pvictim, i)==TECH_KNOWN && 
	 (player_invention_state(pplayer, i)==TECH_UNKNOWN || 
	  player_invention_state advance_index_iterate_end;ENDREP
DELTA 13247 6814 12842
SVN  ‚º‚»?‚, ˜j €P —V™6€H [™6 ’±^¥ Ú!Ä– ¿<ž;© ®eÞ¢ ~‚‡ '‚ž‡ ŽM‚«;advance = find_advance_by_rule_name(value);
    if (source.value.advance != NULLadvance = advance_by_number(value);
    if (source.value.advance != NULLadvance_number(source->value.advance)player_invention_stateadvance_number(req->source.value.advance)advance == psource2->value.advanceadvanceadvanceENDREP
DELTA 13190 761 602
SVN  ¼¼%‚m ”x €R ‹M–'€ ˜s£advance_index_iterate(A_FIRST, index) {
    if ((player_invention_state(pplayer, index) != TECH_KNOWN)
        && (player_invention_state(tplayer, index) == TECH_KNOWN)) {
      count++;
    }
  } advance_indexpplayer->ai.tech_want[advance_index(ut->require_advance)] += DIPLO_DEFENSE_WANT;
        TECH_LOG(LOG_DEBUG, pplayer, ut->require_advance,
                ENDREP
DELTA 13002 253356 17175
SVN  ‚î‚öa™} ¸  u¸?Ÿ w¹2¬ »7¨ Y½¬ p¾y¹ ^ý0€D HÁ:€W ‘YÂ €x yÕ^€‚ pˆi€| aŠ+® ŠPÛP€E ƒXæ+€E ‹)ê ƒ
õE¬ T»7€` ‚ ú!¬ fü/¹ ý0€g ‚eÿf€‚  s„&œ n…€% ˆi€W qŠ+œ ³'‹¡ ©@¾S ‰è  *ñ: -òq€H 
ô@€†5 „‚‡• ‚‹3€X Ñ‚œ  int num_list, j = 0, flag = 0_name_translation(advance_by_number(A_NONE))advance_name_researching(game.player_ptr_name_translation(advance_by_number(A_NONE))_name_translation(advance_by_number(research->tech_goal))advance_index_iterate(A_FIRST, i) {
      if (player_invention_state_name_translation(advance_by_number(i));
	j++;
      }
    } advance_index_iterate_end;advance_index_iterate(A_FIRST, i) {
      if (player_invention_state(game.player_ptr, i) == TECH_REACHABLE) {
	Widget entry =
	  XtVaCreateManagedWidget(advance_name_translation(advance_by_number(i)),
				  smeBSBObjectClass,
				  popupmenu,
				  advance_index_iterate_end;

    if (!flag) {
      XtSetSensitive(science_change_menu_button, FALSE);
    }

    flag = 0;
    advance_index_iterate(A_FIRST, i) {
      if (player_invention_is_ready(game.player_ptr, i)
	  && player_invention_state(game.player_ptr, i) != TECH_KNOWN =
	  XtVaCreateManagedWidget(advance_name_translation(advance_by_number(i)),
				  smeBSBObjectClass,
				  goalmenu,
				  = 1;
      }
    } advance_index_iterate_end;_name_translation(advance_by_number(to)),
                           _name_translation(advance_by_number(to)),
                           _name_translation(advance_by_number(A_NONE))text, sizeof(text),
		  _("Researching %s: %d/%d"),
		  advance_name_researching(game.player_ptr_name_translation(advance_by_number(A_NONE))_name_translation(advance_by_number(research->tech_goal))j=0;
    advance_index_iterate(A_FIRST, i) {
      if(player_invention_state(game.player_ptr, i)==TECH_KNOWN) {
	tech_list_names_ptrs[j]=advance_name_translation(advance_by_number(i));
	j++;
      }
    } advance_index_iterate_end;flag=0;
    advance_index_iterate(A_FIRST, i) {
      if(player_invention_state(game.player_ptr, i)==TECH_REACHABLE) {
	Widget entry=
	  XtVaCreateManagedWidget(advance_name_translation(advance_by_number(i)),
				  smeBSBObjectClass,
				  popupmenu,
				 } advance_index_iterate_end;lag=0;
    advance_index_iterate(A_FIRST, i) {
      if (player_invention_is_ready(game.player_ptr, i)
	  && player_invention_state(game.player_ptr, i) != TECH_KNOWN_name_translation(advance_by_number(i)),
				  smeBSBObjectClass,
				  goalmenu,
				 } advance_index_iterate_end;
		  improvement_name_translationutype_by_numberutype_by_numberutype_by_numberutype_name_translation(punittype1),
		utype_name_translation(punittype2)
    city_list_iterate(game.player_ptr->cities, pcity) {
      int free_upkeep[O_COUNT];

      output_type_iterate(o) {
        free_upkeep[o] = get_city_output_bonus(pcity, get_output_type(o),
                                               EFT_UNIT_UPKEEP_FREE_PER_CITY);
      } output_type_iterate_end;

      unit_list_iterate(game.player_ptr->units, punit) {
        int upkeep_cost[O_COUNT];
        Unit_type_id uti = utype_index(unit_type(punit));

        city_unit_upkeep(punit, upkeep_cost, free_upkeep);
        (unitarray[uti].active_count)++;
        if (punit->homecity) {
          /* TODO: upkeep for generic output types. */
          unitarray[uti].upkeep_shield += upkeep_cost[O_SHIELD];
          unitarray[uti].upkeep_food += upkeep_cost[O_FOOD];
        }
      } unit_list_iterate_end;
    } citytype_name_translationnation_name_for_player(player_by_number(packet->id[i])),
                 player_by_numbENDREP
DELTA 13133 21414 1152
SVN  ‹M‹Y Èe € Á_Énadvance_index_iterate(A_FIRST, i) {
    if (player_invention_state(pplayer, i) == TECH_KNOWN) {
      pplayer->score.techs++;
    }
  } advance_indexENDREP
DELTA 13194 1768 2949
SVN  ƒ¹=ƒ¼:'„2 Ð-  ¸Ð.‡ g‚ˆ=€‚n ­^‚‹_ G €Z N£@€bj = 0;
advance_index_iterate(A_FIRST, i) {
      if(player_invention_state(pvictim, i)==TECH_KNOWN && 
         (player_invention_state(pplayer, i)==TECH_UNKNOWN || 
          player_invention_state(pplayer, i)==TECH_REACHABLE)) {
	ListBox_AddString(lb,advance_name_translation(advance_by_number(i)));
        advance_type[j++] = i;
      }
    } advance_index_iterate_end;
****
  Tileset (modpack) has suggested loading certain theme. Confirm from
  user and loadbool popup_theme_suggestion_dialog(const char *theme_name)
{
  /* Don't load */
  return FALSE;
}
ENDREP
DELTA 13038 781929 5295
SVN  ƒ‡‡[ ’s  I’w “D‘ t”R‘ †G–NŽ ‰k˜ ƒ§˜ …Zª-Ž ˆ<°Ž ‡<¸S€a SÀ^˜ …/Î@Ž tÓw‰ •mÔtŽ ‹ êiŽ \õq— pöX€‚N Yùx” tú^€h ü*– …YýD G ¸ C@€tile_special_typetile_special_typeplayer_by_numbgame_find_unit_by_numbergame_find_unit_by_numberplayer_by_numbplayer_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_numbvalid_advance_by_numberplayer_invention_set(pplayer, tech, TECH_KNOWN);
     research->techs_researched++;
     break;
   case ETECH_REMOVE:
     player_invention_set(pplayer, tech, TECH_UNKNOWN);
     research->techs_researched--;
     break;
   case ETECH_TOGGLE:
     if (player_invention_state(pplayer, tech) == TECH_KNOWN) {
       player_invention_setplayer_invention_setplayer_research_update(pplayer);

  if (research->researching != A_UNSET
      && player_invention_stateplayer_invention_state
******
  Client editor requests us to regenerate water.
*********/
void handle_edit_regenerate_water(struct connection *pc)
{
  if (can_conn_edit(pc)) {
    map_regenerate_water();
  }
}
ENDREP
DELTA 13227 9062 1318
SVN  †  †  #ƒ å/ €_ ƒ°æD€‚ e…˜3¤ O‚€ …t…™vadvance_iterate(A_FIRST, padvance) {
    tileset_setup_tech_type(tileset, padvance);
  } advanc
			     struct advance *padvance)
{
  if (valid_advance(padvance)) {
    t->sprites.tech[advance_index(padvance)]
      = lookup_sprite_tag_alt(t, padvance->graphic_str,
			      padvance->graphic_alt,
			      FALSE, "technology",
			      advance_rule_name(padvanceadvance_index(padvance)] = NULL;
  }†  ƒÄBƒÄL%– ‚ø  Ì‚ø0{
      ADD_SPRITE_FULadvance_count()ENDREP
DELTA 7565 4843 1737
SVN  ØÙ17Œ{ “ €D m“K€D ‚•t€z ‚Y™a€D "œv€ƒ <¼l‘ M¾5ª …J¿– |Ä{‘ ˜ZÇ ‰8ßd€% Š	ê5€U Ÿõ‡ ƒZ”"‘ ‚˜	‘ „š(‘ f®@ )Ÿ5‘ P²z ’q¡;€ ;µ€ ·;€7 .ºK‘ ¼‘ …;½&‘ BÂn‘ “]Ä=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)bool flag = FALSE;
  Object *entry;

  advance_index_iterate(A_FIRST, i)
  {
    if (player_invention_state(plr0, i) == TECH_KNOWN
        && player_invention_is_ready(plr1, i)
        && (player_invention_state(plr1, i) == TECH_UNKNOWN
            || player_invention_state(plr1, i) == TECH_REACHABLE))
    {
      entry = MUI_MakeObject(MUIO_Menuitem,advance_name_translation(advance_by_number(i))ayer_number(plr0)TRUE;
    }
  } advance_index_iterate_end; (!is_capital(pcity)) 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)prependayer_number(plr0)ayer_number(plr0)ayer_number(plr1)ayer_number(plr1)
             nation_name_for_player(plr0));
    settextf(plr1_text,_("The %s offerings"),
             nation_name_for_player(plr1
             nation_name_for_player(plr0));
    settextf(plr1_view_text, _("%s view:"),
             nation_name_for_player(plr1nation_name_for_player(plr0),
             ruler_title_translation(plr0),
             plr0->name,
             nation_name_for_player(plr1),
             ruler_title_translation(plr1ayer_number(plr0)ayer_number(plr1)ayer_number(plr0)ayer_number(plr1)ENDREP
DELTA 13283 0 3740
SVN  Í]ÌvK†] –h €K N›v †*™'™ „OŸb– ´X¤>– …vÙ#¡ ±3ß2€0 ‡2’B€0 ’Y›Q€g ‚s®s€e šk²rbool *player_accept, *other_accept;
  enum dipl_reason diplcheck;
  bool worker_refresh_required = FALSE;
  struct player *pother = valid_player_by_number(counterpart);

  if (NULL == pother || pplayer =player_invention_is_readyplayer_invention_stateplayer_invention_stateadvance_by_number(pclause->value) = valid_player_by_number(giver);
  struct player *pother = valid_player_by_number(counterpart);

  if (NULL == pother || pplayer == pother || NULL == pgiver) {
    return;
  } = valid_player_by_number(giver);
  struct player *pother = valid_player_by_number(counterpart);

  if (NULL == pother || pplayer == pother || NULL == pgiver) {
    return;
  }struct player *pother = valid_player_by_number(counterpart);

  if (NULL == pother || pplayer == pother = valid_player_by_number(counterpart);

  if (NULL == pother || pplayer == pother) {
    return;
  }ENDREP
DELTA 13169 59101 67
SVN  ÈhÉ
!   ¡ ¨Z 
			     struct advance *padvanceENDREP
DELTA 13219 38701 171
SVN  éé
 ÝO  ‹,ÝZvalid_advanceENDREP
DELTA 13038 790651 2397
SVN  ¯
¯T‚ ”. « Œ
”; †$ P€X ‚E¨0› „ªu_name_translation(advance_by_number(*tech))advance_index_iterate(A_FIRST, i)
    {
      if (player_invention_state(p, i) == TECH_KNOWN)
      {
	Object *tech = ColorTextObject,
	    MUIA_ColorText_Contents,
	    advance_name_translation(advance_by_number(i)) advance_index_iterate_end;ENDREP
DELTA 13247 20192 201
SVN  ýnþ  Ì  QÌ"€s ¯0Î>valid_advanceadvance_index(impr->obsolete_by)];
  }

  return (player_invention_state(pplayer, advance_number(impr->obsolete_by)ENDREP
DELTA 13046 58633 471
SVN  ‚Òy‚Ö
‚• ˜! ¦ •˜;€F ƒl­n– †w±g€n G  ;ºo€1 G  \Ù= á6Ê_š „¬#š ƒ°H€N ˆJ´+š |½ w¾€n l¿^€ ƒ+Â[€Z ‡
Æ3€g Î€‚ ˆJÐ}… ÙFŠ YÒ+ …HÛ$€_ áa€O ƒAï:ˆ „%ò|¦ ƒ ÷A€ ~þn Nÿ~ž ‚þj Rÿ~• pÿ|€T Rÿ~ ‚„ ­ u‚…0 N‚†;• l‚†9€R N‚†; ‚Š+• ‚‚‹;€Y –|‚{€Z ‰ ‚¥#€O ¡j‚±LABEL_NONE _("None")
#define REQ_LABEL_required(tech, AR_ONE) == A_LAST
   && advance_required(tech, AR_TWO)player_invention_state_required(tech, AR_ONE) != A_NONE)
      create_tech_tree(advance_required(tech, AR_ONE), levels, &l);
    if (advance_required(tech, AR_TWO) != A_NONE)
      create_tech_tree(advance_required(tech, AR_TWO), levels, &l);
  }
  return;
}

LABEL_NEVER) != 0
      && strcmp(s, REQ_LABEL_NONE) != 0
      && strcmp(s, advance_name_translation(advance_by_number(A_NONE))) != 0)
    select_help_item_string(s, type);
}

onst char *req = REQ_LABELuniversal_name_translationLABEL_NEVER);
/*    create_tech_tree(help_improvement_tree, 0, advance_count()universal_name_translationvalid_advanceadvance_number(imp->obsolete_by)));
    } else {
      gtk_label_set_text(GTK_LABEL(help_wlabel[5]), REQ_LABELLABEL_NEVER);
    gtk_label_set_text(GTK_LABEL(help_wlabel[5]), REQ_LABEL_NONE);
/*    create_tech_tree(help_improvement_tree, 0, advance_count())
{
  char buf[8192];
  struct unit_type *utype = find_unit_type_by_translated_name(title) (A_NEVER == utype->require_advance) {
      gtk_label_set_text(GTK_LABEL(help_ulabel[4][1]), REQ_LABELadvance_number(utype->require_advance)));
    }
/*    create_tech_tree(help_improvement_tree, 0, advance_number(utype->require_advance), 3);*/
    if (utype->obsoleted_by == U_NOT_OBSOLETED) {
      gtk_label_set_text(GTK_LABEL(help_ulabel[4][4]), REQ_LABELLABELLABEL_NONE)
{
  int i, j;
  GtkWidget *w, *hbox;
  char buf[8192];
  struct advance *padvance = find_advance_by_translated_name(title);

  create_help_page(HELP_TECH);

  if (padvance  &&  !is_future_tech(i = advance_number(padvance)VUT_ADVANCE == preq->source.kind
	    && preq->source.value.advance == padvancepadvancepadvance != punittype->require_advanceadvance_iterate(A_NONE, ptest) {
      if (padvance == advance_requires(ptest, AR_ONE)) {
	if (advance_by_number(A_NONE) == advance_requires(ptest, AR_ONE))translation(ptest), HELP_TECHgtk_widget_show_all(hbox);
	} translation(ptest), HELP_TECHgtk_label_new(_("withtranslation(advance_requires(ptest, AR_TWO)),
                             HELP_TECH (padvance == advance_requires(ptest, AR_TWO)translation(ptest), HELP_TECHgtk_label_new(_("withtranslation(advance_requires(ptest, AR_ONE)),
                           HELP_TECH advance_iterate_end;)
{
  char buf[8192];
  struct terrain *pterrain = find_terrain_by_translated_name(title))
{
  char buf[8192];
  struct government *gov = find_government_by_translated_name(title));
    break;
  case HELP_TECH:
    help_update_tech(pitem, top);
    break;
  case HELP_TERRAIN:
    help_update_terrain(pitem, top);
    break;
  case HELP_GOVERNMENT:
    help_update_government(pitem, topENDREP
DELTA 13134 0 937
SVN  ƒ˜4ƒ˜Dƒx ±) – Ä±6€g Rÿ@š ‡÷€C -þ`€G ‚^€H vƒC ‰/…T€ oh› ‚…]’Wplayer_invention_stateadvance_index_iterate(A_FIRST, i) {
    if ((player_invention_state(game.player_ptr, i)==TECH_KNOWN)) {advance_index_iterate_end;advance_index_iterate(A_FIRST, i) {
      if(player_invention_state advance_index_iterate_end;
  } else {
    int value = (advance_count() advance_count()advance_count()advance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(game.player_ptr, i)
        && player_invention_state(game.player_ptr, i) != TECH_KNOWN advance_index_iterate_end;ENDREP
DELTA 13112 269 1188
SVN  ˜d›K4‚2 …e Œ w…Zµ AŠ@€e G š AŠ@ ‹jˆ%• 5”– z•] e–h— v—M barbarian.h"Unleash barbarians on a tile, for example from a hut
*********/
bool api_actions_unleash_barbarians(Tile *ptile)
{
  return unleash_barbarians(ptile);
}

****
  Create a new unit.
advance_number(ptech)player_invention_statedvance_by_number
                      dvance_by_number(A_NONE);
  }
}
ENDREP
DELTA 13046 59249 1232
SVN  ¨t¨x
( ’& ¨ –*’Jstruct advance *obsolete_by;		/* A_NEVERENDREP
DELTA 13219 5483 3879
SVN  ‚„‚„6l §* €C ‡§U© Õ¯ player_invention_state(p,advance_number(punittype->require_advance)advance_index(punittype->require_advance)ENDREP
DELTA 12413 4739 74
SVN  ‚×/‚Ú…r»q †  Œ?†€W „“€W „—X€W „/œ#€Y J¡7 ‚£ €W †k¥_€W äj „Z® ‘ $³€‚M R¶H ƒt¸5” d¼:ž M‹x€B ¾3… ‚l¿M£ rÂa  ƒÄ€ƒ ‚NÊv€J ‚`ÎM †ÑH€m Ú€„, bÞ¤ ƒá€W „=äj€[ ê§ R¯  ‚mët€` „Hï/€` ôd§ R¯  S~‘ ]‚¯ Œ÷™ {„œ c¹;€Q ƒ‡"€s t‹V€` ƒoŒE¯ `š7 ‚!‘4¯ ‚i“u¯ ƒ–~¯ ƒš7° d s„ L‘= ;Ÿ° ‚u s¯ „-¤	² ƒ
¨Y² ‚¬« 	®/€‚P r±Xœ Š³(€G …$¾\‡ JÄ €S b¹< ƒÆ,€ M‹x€@ Ë9… ƒRÌH« Ð6€ ‚&ÒJ’ „,Ôx… ‚Ù$« ‚lÛZ€ƒ$ 8àq uân€q ƒEå€w ‚éR€ ˆFí]€U ‹5öf¢ s‚‚<½ ‚‚ƒo ‚†>” b‚‡d j‚ˆs€^ J‚‰V… ƒP‚‹ €@ T‚Ã4 Y‚u® ƒ‚m­ k‚Í? (‚•€O A‚”@ ‚—*­ $‚Çk… t‚‹  ‚2‚›{­ 4‚Í?€@ x‚ 0€‚L ‚£D q‚¥œ †X‚¦k€U Š(‚®¢ ‚¸Ož ‚‚º3 ‚½” _‚¾?€F ‚Q‚À.­ k‚Í? )‚Ä€O A‚”@ ‚Æ2­ $‚Çk… „‚É­ F‚Í?­ w‚Ï#€‚\ ‚£F q‚¥© h³8 O‚Ö`#include "loggame_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_numberif (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
     && game_find_city_by_number
  popdown_diplomat_dialog();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_number;
  SDL_Rect areaadvance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(game.player_ptr, i)
      && player_invention_state(pVictim, i)==TECH_KNOWN
      && (player_invention_state(game.player_ptr, i)==TECH_UNKNOWN
      || player_invention_state(game.player_ptr, i)==TECH_REACHABLE)) {
	count++;
      }
  } advance_index_iterate_end;advance_count()_skeleton(NULL, pStr
  add_to_gui_list(ID_DIPLOMAT
  area = pWindow->area;
  area.w = MAX(area.w, adj_size(8));  
  area.(pWindow->size.w - pWindow->area.w)pWindow->size.h - pWindow->area.advance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(game.player_ptr, i)
      && player_invention_state(pVictim, i)==TECH_KNOWN
      && (player_invention_state(game.player_ptr, i)==TECH_UNKNOWN
      || player_invention_state(game.player_ptr, i)==TECH_REACHABLE)) {
    
      count++;  
      copy_chars_to_string16(pStr, advance_name_translation(advance_by_number(i))(col * max_row)) {
        set_wflag(pBuf, WF_HIDDEN);
      }
    }
  } advance_index_iterate_end;
  
  /* get spy tech */
  i = advance_number(unit_type(game_find_unit_by_number(id))->require_advance)advance_count()area.w = MAX(area.w, (col * pBuf->size.w + adj_size(2) + i));
  area.h = count * pBuf->size.h + adj_size(2);

                    (pWindow->size.w - pWindow->area.w) + area.w,
                    (pWindow->size.h - pWindow->area.h) + area.h))
  {
    FREESURFACE(pSurf);
  }
  
  area = pWindow->area;
  
  widget_set_position(pWindow,
                      (Main.screen->w - pWindow->size.w) / 2,
                      (Main.screen->h - pWindow->size.h) / 2);
  
    /* exit button */
  pBuf = pWindow->prev;
  pBuf->size.x = area.x + area.w - pBuf->size.w - 1;
  pBuf->size.y = pWindow->size.y + 1;
  
  setup_vertical_widgets_position(col, area.x + 1,
		  area.yarea.x + area.w, area.y,
    	area.hgame_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_numberif (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number  
    popdown_diplomat_dialog();
  }  game_find_unit_by_number(pDiplomat_Dlg->diplomat_id))
        && (pcity=game_find_city_by_number
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_unit_by_number  
    popdown_diplomat_dialog();
  }  spy_sabotage_unitbool spy;
  SDL_Rect areahas_type_flag(pUnit, F_SPY);pUnit->id;
  pDiplomat_Dlg->pdialog = fc_calloc(1, sizeof(struct ADVANCED_DLG));
_skeleton(NULL, pStr, 0);
    
  pWindow->action = diplomat_dlg_window_callback;
  set_wstate(pWindow, FC_WS_NORMALarea = pWindow->area;
  area.w = MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2));
area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w , pBuf->size.w);
      area.INCIarea.w = MAX(area.w , pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w , pBuf->size.w);
        area.area.w = MAX(area.w , pBuf->size.w);
        area.area.w = MAX(area.w, pBuf->size.w);
  area.
  resize_window(pWindow, NULL, NULL, 
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area;
  
  auto_center_on_focus_unit();
  put_window_near_map_tile(pWindow, pWindow->size.w, pWindow->size.h,
                           pUnit->tile);
area.x,
  	area.y + 1, area.game_find_unit_by_number(diplomat_id)
      && game_find_city_by_number, area2has_type_flag(pUnit, F_SPY)) {
    return;
  }
  
  is_unit_move_blocked = TRUE;
  _skeleton(NULL, pStr, 0);
    
  pWindow->action = diplomat_dlg_window_callback;
  set_wstate(pWindow, FC_WS_NORMAL);
  
  add_to_gui_list(ID_TERRAIN_ADV
  area = pWindow->area;
  area.h = MAX(area.h, adj_size(2));
  area.area.w = MAX(area.w, pBuf->size.w);
  area.area.h += pBuf->next->size.h;
  /* ------------------ */
  n = 0;
  built_impr_iterate(pCity, imp) {
    if (improvement_by_numberarea.w = MAX(area.area.area.w = MAX(area.w, pBuf->size.w);
  area.area.w += n;
  }
  /* ---------- */
  
  
  area.h += imp_h;

  resize_window(pWindow, NULL, NULL, 
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area;
  
  auto_center_on_focus_unit();
  put_window_near_map_tile(pWindow, pWindow->size.w, pWindow->size.h,
                           pUnit->tile);        
  
  w = area.warea.x + area.w - pBuf->size.area.x;
  pBuf->size.y = area.y + 1;
  pBuf->size.w = w;
  h = pBuf->size.h;
  
  area2.x = adj_size(10);
  area22.y = pBuf->size.h / 2 - 1;
      area2.w = pBuf->size.w - adj_size(20);
      
      SDL_FillRect(pBuf->theme , &area2area.x + area.w,
    	pDiplomat_Dlg->pdialog->pEndActiveWidgetList->size.y,
    	area.y - pDiplomat_Dlg->pdialog->pEndActiveWidgetList->size.y +
	    area.game_find_unit_by_number(pIncite_Dlg->diplomat_id)
       && game_find_city_by_numberbool exit = FALSE;
  SDL_Rect area
  if (!pUnit || !is_diplomat_unit(pUnit)) {
    return;
  }
_skeleton(NULL, pStrarea = pWindow->area;
  area.w  =MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2))area.area.w = MAX(area.w , pBuf->size.w);
    area.h += pBuf->size.h;area.w = MAX(area.w , pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.h += pBuf->size.h;
    /* ------- area.w = MAX(area.w, pBuf->size.w);
    area.area.area.w = MAX(area.w, pBuf->size.w);
    area. , pBuf);
    
    area.w = MAX(area.w, pBuf->size.w);
    area.
  resize_window(pWindow, NULL, NULL,
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area;
  
  auto_center_on_focus_unit();
  put_window_near_map_tile(pWindow, pWindow->size.w, pWindow->size.h,
                           pCity->tilearea.x + area.w - pBuf->size.area.x,
  	area.y + 1, area.game_find_unit_by_number(pIncite_Dlg->diplomat_id)
       && game_find_city_by_numberbool exit = FALSE;
  SDL_Rect areais_diplomat_unit(pDiplomatUnit_skeleton(NULL, pStr
  add_to_gui_list(ID_BRIBE_DLG_WINDOW, pWindow);
  pBribe_Dlg->pdialog->pEndWidgetList = pWindow;
  
  area = pWindow->area;
  area.w = MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2))area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.h += pBuf->size.h;
    /* ------- area.w = MAX(area.w, pBuf->size.w);
    area.area.area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.
  resize_window(pWindow, NULL, NULL,
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area;
  
  auto_center_on_focus_unit();
  put_window_near_map_tile(pWindow, pWindow->size.w, pWindow->size.h,
                           pDiplomatUnit->tile);      area.x + area.w - pBuf->size.area.x,
  	area.y + 1, area.w, 0,
	pBribeENDREP
DELTA 13046 66239 6290
SVN  Ð ïƒnº ‡| € ‰ b‹4€ OÎ@¢ Z”v€# DÊ¬ Z”v€H DÊ€ D¶ €v DÊ¨ D¶ €v [° ª D¶ €j DÊ€e ~:º ƒ}g€_ _”$€  {•G DÊ …e—› D¶ €‚T DÊ© D¶ €T DÊ ƒ%œ\€H s 8€D ;¢Z€m DÊ ƒ%¥4– ƒ¨f¬ ‚u¬* ƒF¯(€‚* ƒ_´L® D¶ £ P¹2€‡  ÀE€d pÂ-™ U’? hÄ€„6 U’?€‚0 D¶ €Z DÊ€! D¶ €w DÊ€_ D¶ €x DÊ IÒ@– D¶ €‚ DÊ ‚ÖŸ DÊ …FØ€ bÕ? uàF– ‰&ðH– ƒù{– Jÿ} þW– ’ÿ}— {’'€l DÊ F”@ž |–¼ d—@š DÊ Š1™~ Q¤3€I DÊ ‰&§"€W DÊ …8±m€‚" DÊ hºo€K DÊ „v½^Š ‰lÂX€T FÊ Íl€D/* the advances array is now setup in:
 * server/ruleset.c (for the server)
 * client/packhand.c (for the client)
 */
struct advance advances[A_LAST];static const char *flag_names[] = {
  "Bonus_Tech",
  "Bridge",
  "Railroad",
  "Population_Pollution_Inc", 
  "Farmland",
  "Build_Airborne"
};
 Return the last item of advances/const struct advance *advance_array_last(void)
{
  if (game.control.num_tech_types > 0) {
    return &advances[game.control.num_tech_types - 1];
  }
  return NULL;***********
  Return the number of advances/Tech_type_id advance_count(void)
{
  return game.control.num_tech_types;***********
  Return the advance index.

  Currently same as advance_number(), paired with advance_count()
  indicates use as an array index.
******/
Tech_type_id advance_index(const struct advance *padvance)
{
  assert(padvance);
  return padvance - advances;***********
  Return the advance index.
******/
Tech_type_id advance_number(const struct advance *padvance)
{
  assert(padvance);
  return padvance->item_numb the advance for the given advance index.
******/
struct advance *advance_by_number(const Tech_type_id atype)
{
  if (atype < 0 || atype >= game.control.num_tech_types) {
    /* This isn't an error; some callers depend on it. */
    return NULL;
  }
  return &advances[atype];***********
  Returns state of the tech for current pplayer.
  This can be: TECH_KNOWN, TECH_UNKNOWN,player_invention_state(const struct player *pplayer,
				 enum tech_state player_invention_set(struct player *pplayer,
				     Tech_type_id tech,
				    enum tech_state old = research->inventions[tech].state;

  if (old == value) {
    return old;
  }
  assert(tech != A_FUTURE);  return old;Accessor for requirements.
******/
Tech_type_id advance_required(const Tech_type_id tech,
			      enum tech_req require)
{
  assert(require >= 0 && require < AR_SIZE);
  assert(tech >= A_NONE || tech < A_LAST);
  if (A_NEVER == advances[tech].require[require]) {
    /* out of range */
    return A_LAST;
  }
  return advance_number(advances[tech].require[require]);***********
  Accessor for requirements.
******/
struct advance *advance_requires(const struct advance *padvance,
				 enum tech_req require)
{
  assert(require >= 0 && require < AR_SIZE);
  assert(NULL != padvance);
  return padvance->require[require];player_invention_is_ready(pplayer, tech)
      || player_invention_state_required(tech, AR_ONE) == goal
   || advance_required(tech, AR_TWO)_required(tech, AR_ONE), goal);
  build_required_techs_helper(pplayer, advance_required(tech, AR_TWO), goal);player_invention_stateadvance_index_iterate(A_FIRST, i) {
    if (advance_indexplayer_invention_is_ready(const struct player *pplayer,
			       const Tech_type_id tech)
{
  Tech_type_id root;

  if (!valid_advance_by_number(tech)) {
    return FALSE;
  }

  root = advance_required(tech, AR_ROOT);
  if (A_NONE != root
   && TECH_KNOWN != player_invention_state(pplayer, root)always be called after player_invention_set()
******/
void player_research_update/* This is set when the game starts, but not everybody finds out
   * right away. */
  player_invention_set(pplayer, A_NONE, TECH_KNOWN);

  advance_index_iterate(A_FIRST, i) {
    if (!player_invention_is_ready(pplayer, i)) {
      player_invention_set(pplayer, i, TECH_UNKNOWN);
    } else {
      if (player_invention_state(pplayer, i) == TECH_REACHABLE) {
	player_invention_set(pplayer, i, TECH_UNKNOWN);
      }

      if (player_invention_state(pplayer, i) == TECH_UNKNOWN
	  && player_invention_state(pplayer, advance_required(i, AR_ONE)) == TECH_KNOWN
	  && player_invention_state(pplayer, advance_required(i, AR_TWO)) == TECH_KNOWN) {
	player_invention_set(pplayer, i, TECH_REACHABLE);
	researchable++;
      }
    }
    build_required_techs(pplayer, i);
  } advance_index_iterate_end;
  
  /* No techs we can research? Mark A_FUTURE as researchable */
  if (researchable == 0) {
    player_invention_setadvance_index_iterate(A_NONE, i) {
      if (player_invention_state(pplayer, i) == TECH_KNOWN
      advance_index_iterate_endplayer_research_step(const struct player *pplayer,
				  Tech_type_id goal)
{
  Tech_type_id sub_goal;

  if (!player_invention_is_ready(pplayer, goal)) {
    return A_UNSET;
  }
  switch (player_invention_state(pplayer, goal)) {
  case TECH_KNOWN:
    return A_UNSET;
  case TECH_REACHABLE:
    return goal;
  case TECH_UNKNOWN:
  default:
    break;
  };
  sub_goal = player_research_step(pplayer, advance_required(goal, AR_ONE));
  if (sub_goal != A_UNSET) {
    return sub_goal;
  } else {
    return player_research_step(pplayer, advance_required(goal, AR_TWO))  Returns pointer when the advance "exists" in this game,
  returns NULL otherwise.

  A tech doesn't exist for any of:
   - the tech has been flagged as removed by setting its require values
     to A_LAST (this function returns 0 if either req is A_LAST, rather
     than both, to be on the safe side)
******/
struct advance *valid_advance(struct advance *padvance)
{
  if (NULL == padvance
   || A_NEVER == padvance->require[AR_ONE]
   || A_NEVER == padvance->require[AR_TWO]) {
    return NULL;
  }

  return padvance;***********
  Returns pointer when the advance "exists" in this game,
  returns NULL otherwise.

  In addition to valid_advance(), tests for id is out of range.
******/
struct advance *valid_advance_by_number(const Tech_type_id id)
{
  return valid_advance(advance_by_number(id));***********
 Does a linear search of advances[].name.translated
 Returns NULL when none match.
******/
struct advance *find_advance_by_translated_name(const char *name)
{
  advance_iterate(A_NONE, padvance) {
    if (0 == strcmp(advance_name_translation(padvance), name)) {
      return padvance;
    }
  } advance_iterate_end;

  return NULL;NULL when none match.
******/
struct advance *find_advance_by_rule_name(const char *name)
{
  const char *qname = Qn_(name);

  advance_iterate(A_NONE, padvance) {
    if (0 == mystrcasecmp(advance_rule_name(padvance), qname)) {
      return padvance;
    }
  } advance_iterate_end;

  return NULL;_by_number(tech)->flags, flag);Tech_type_id index, enum tech_flag_id flag)
{
  advance_index_iterate(index, i)
  {
    if(advance_has_flag(i,flag)) return i;
  } advance_index_iterate_endplayer_invention_stateplayer_invention_stateplayer_invention_stateplayer_invention_statevalid_advance_by_number_required(tech, AR_ONE), counted)+ 
      precalc_tech_data_helper(advance_required(tech, AR_TWO), counted);advance_index_iterate(A_NONE, advance_index_iterate_end;

  advance_index_iterate(A_NONE, advance_index_iterate_end;&advances[tech]&advances[tech]);
    }
  case A_UNKNOWN:
  case A_UNSET:
    return advance_rule_name(&advances[tech]);
  default:
    /* Includes A_NONE */
    return advance_rule_name(advance_by_number(tech));
  };&advances[tech]);
    }
  case A_UNKNOWN:
  case A_UNSET:
    return advance_name_translation(&advances[tech]);
  default:
    /* Includes A_NONE */
    return advance_name_translation(advance_by_number(tech));
  };struct advance *padvance)
{
  if (NULL == padvance->name.translated) {
    /* delayed (unified) translation */
    padvance->name.translated = ('\0' == padvance->name.vernacular[0])
				? padvance->name.vernacular
				: Q_(padvance->name.vernacular);
  }
  return padvance->name.translated;const struct advance *padvance)
{
  return Qn_(padvance->name.vernacular); tem_numberadvance_index_iterate(A_FIRST, i) {
    tech_free(i);
  } advance_index_iterate_end;researching = A_UNSET;
  research->researching_saved = A_UNKNOWN;
}
ENDREP
DELTA 13219 22679 377
SVN  ä7äK
2 ¸[ ² «>¸ystruct advance *require_advance;	/* may be NULL */ENDREP
DELTA 13133 68761 2557
SVN  ƒ—Pƒ™C†y Ë ¸ Š
Ë4 |Õy€ ’EØ6€‚ Uìq …4ídª ‹Có3€} ‚€€	 ‡m‚cadvance_number(punittype->require_advance)) / 4
		      advance_index(punittype->require_advance)] += desire;
      TECH_LOG(LOG_DEBUG, pplayer, punittype->require_advance,
              ;
    int tech_dist;
    int move_type = get_unit_move_type(punittype);
    
    if (A_NEVER == punittype->require_advance) {
      continue;
    }
    tech_req = advance_number(punittype->require_advance);
    tech_dist = num_unknown_techs_for_goal(pplayer, tech_req);
advance_number(punittype->require_advance)
      if (victim_unit_type) {
        vuln = unittype_def_rating_sq(punittype, victim_unit_type,
                                      victim_player,
                                      ptile, FALSE, veteran);
      } else {
        vuln = 0;
      }advance_index(punittype->require_advance)] += want;
          TECH_LOG(LOG_DEBUG, pplayer, punittype->require_advance,
                  ENDREP
DELTA 13133 78020 1036
SVN  º[ÄHz™a † ¤ k†€] 4‡x– J‰*€? VŒ€G ‚ge‚ ‚wN€ ”&¤ …]–€ 	œU ‚f€8 ƒ :– ‚8£c– j¦*€„} x¨*€^ ?ªa€† ƒ'°‡ ‚³>€…  [kept for amusement and posterity]/* [more accurately]
 * Unlike most other indices, the Tech_type_id is widely used, because it 
 * so frequently passed to packet and scripting.  The client menu routines 
 * sometimes add and substract these numbers.
 */#define A_NEVER (NULL)ndicates that no tech is selected (for research).

   A_FUTURE indicates that the player is researching a future tech.

   A_UNKNOWN may be passed to other players instead of the actual value
   A_NEVER is the pointer equivalent replacement for A_LAST flag valueatREACHABLE = 1,
  TECH_KNOWN = 2,
};

enum tech_req {
  AR_ONE = 0,
  AR_TWO = 1,
  AR_ROOT = 2,
  AR_SIZE
};

struct advance {
  Tech_type_id item_number;
  struct advance *require[AR_SIZE];(not A_NONE)
   *  - A_FUTURE
   *  - A_UNSET (indicates need for choosing new research)
   * For enemies, A_UNKNOWN is sent to the client, but not on server
   *
   * Has the same values as researching, plus A_UNKNOWN used between turns
   * (not -1 anymore) for savegames. */
  Tech_type_id researching_saved;
  int bulbs_researching_savedplayer_research_updateplayer_research_updateTech_type_id advance_count(void);
Tech_type_id advance_index(const struct advance *padvance);
Tech_type_id advance_number(const struct advance *padvance);

struct advance *advance_by_number(const Tech_type_id atype);

struct advance *valid_advance(struct advance *padvance);
struct advance *valid_advance_by_number(const Tech_type_id atype);

struct advance *find_advance_by_rule_name(const char *name);
struct advance *find_advance_by_translated_name(const char *name);

const char *advance_name_by_player(const struct player *pplayer,
				   Tech_type_id tech);
const char *advance_name_for_player(const struct player *pplayer,
				   const struct advance *padvance);
const char *advance_name_translation(struct advance *padvance
/* FIXME: oddball function used in one place */
Tech_type_id find_advance_by_flag(Tech_type_id index, enum tech_flag_id flag);

/* Ancillary routines */
enum tech_state player_invention_state(const struct player *pplayer,
				       Tech_type_id tech);
enum tech_state player_invention_set(struct player *pplayer,
				     Tech_type_id tech,
				     enum tech_state value);
bool player_invention_is_ready(const struct player *pplayer,
			       const Tech_type_id tech);

Tech_type_id player_research_step(const struct player *pplayer,
				  Tech_type_id goal);
void player_research_update(struct player *pplayer);

Tech_type_id advance_required(const Tech_type_id tech,
			      enum tech_req require);
struct advance *advance_requires(const struct advance *padvance,
				 enum tech_req require
			   /* This iterates over almost all technologies.  It includes non-existent
 * technologies, but not A_FUTURE. */
#define advance_index_iterate(_start, _index)				\
{									\
  Tech_type_id _index = (_start);					\
  for (; _index < advance_count(); _index++) {

#define advance_index_iterate_end					\
  }									\
}

const struct advance *advance_array_last(void);

#define advance_iterate(_start, _p)					\
{									\
  struct advance *_p = advance_by_number(_start);			\
  if (NULL != _p) {							\
    for (; _p <= advance_array_last(); _p++) {

#define advance_iterate_end						\
    }									\
  }									\
}
#endif  /* FC__TECH_H */
ENDREP
DELTA 13133 190981 331
SVN  ñð|4ƒe ”v €p g•f †—V€J ƒOž€E ƒF¢9€/ „§e Œ«z ¹¸ advance_index_iterate(A_FIRST, tech_id) {
    if (player_invention_state(game.player_ptr, tech_id) == TECH_KNOWNadvance_indexadvance_index_iterate(A_FIRST, tech_id) {
      if (player_invention_stateadvance_index_iterate_end;
  } else {
      tech_id = advance_count()advance_index_iterate(A_FIRST, tech_id) {
    if (player_invention_is_ready(game.player_ptr, tech_id)
        && player_invention_state(game.player_ptr, tech_id) != TECH_KNOWNadvance_indexadvance_by_number(to)),
					ENDREP
DELTA 13219 24055 547
SVN  ç`én7o ¥` ™ Ã¥f€m ‡&é| ƒñ=€h …xé| PûF ‚iý1€Z žj€I€] †Ÿb€‚d ˆ§~€` „4±€N ƒ¶· ƒ¹-€ U½5€‚ dÂ… ‚ÂG… 2Äd˜ Æ!« ¹R€] ,É/˜ Êf› N¹¹ @š  |Í@€] ˆÎl€O {Ùeadvance_by_number(A_NONE) struct impr_type *imp = improvement_by_number(which);
 
  create_help_page(HELP_IMPROVEMENT);
 
  if (imp) {advance_count() struct impr_type *imp = improvement_by_number(which);
 
  create_help_page(HELP_WONDER);
 
  if (imp) {advance_count())
{
  char buf[64000];
  struct terrain *pterrain = find_terrain_by_translated_name(title))
{
  char buf[64000];
  struct unit_type *utype = find_unit_type_by_translated_name(title);
 (A_NEVER == utype->require_advance) {
      SetWindowText(help_ulabel[4][1], _("(Never)"));
    } else {
      SetWindowText(help_ulabel[4][1],
                    advance_name_for_player(game.player_ptr,
				       advance_number(utype->require_advance)));
    }
    /*    create_tech_tree(help_improvement_tree, 0, advance_number(utype->require_advance))
{
  struct fcwin_box *hbox;
  char buf[64000];
  int i;
  struct advance *padvance = find_advance_by_translated_name(title);

  create_help_page(HELP_TECH);

  if (padvance  &&  !is_future_tech(i = advance_number(padvance)
	if (VUT_IMPROVEMENT == req->source.kind
	 && req->source.value.building == j requirement_vector_iterate_end;
      if (padvance == 
    } impr_type_iterate_end;

    unit_type_iterate(punittype) {
      if (padvance != punittype->require_advance) {
	continue;
      }
			   utype_name_translation(punittype),
			   ID_HELP_UNIT_LINK,
			   0,FALSE,FALSE,5);
    } unit_type_iterate_end;

    advance_iterate(A_NONE, ptest) {
      if (padvance == advance_requires(ptest, AR_ONE)) {
	if (advance_by_number(A_NONE) == advance_requires(ptest, AR_TWO))ptestptest_requires(ptest, AR_TWO)padvance == advance_requires(ptest, AR_TWO)Allows "),0,SS_LEFT,FALSE,FALSE,5);
	fcwin_box_add_button(hbox,advance_name_translation(ptest_requires(ptest, AR_ONE) advance_iterate_end;
  }
}  This is currently just a text page, with special text:
)
{
  char buf[64000];
  struct government *gov = find_government_by_translated_name(title);
);
    break;
  case HELP_TECH:
    help_update_tech(pitem, top);
    break;
  case HELP_TERRAIN:
    help_update_terrain(pitem, top);
    break;
  case HELP_GOVERNMENT:
    help_update_government(pitem, topENDREP
DELTA 13046 75202 1960
SVN  ®e®$7 ‡| — ^¬  wˆk› d¬ ‚ l¢v€S y¤7 ƒNª?°player_by_number(playeradvance_by_number(tech_typechTech_Type *api_find_tech_type_by_name(const char *name_orig)
{
  return find_advancreturn find_terrain_by_rule_name(name_orig);
}

ENDREP
DELTA 13133 85023 258
SVN  ÔdÕ]‚R ŠK § ož>€V Œ€U ¢7 Ä@$
              struct advance *padvanceTECH, level);

  if (!valid_advance(padvance) || advance_by_number(A_NONE) == padvance
              advance_name_by_player(pplayer, advance_number(padvance)), 
              pplayer->ai.tech_want[advance_index(padvance)], 
              num_unknown_techs_for_goal(pplayer, advance_number(padvance))ENDREP
DELTA 13219 25620 96
SVN  ÏrÒoa’! —+ €C O—UŸ q™6€< ›BŸ ^œp ƒXW€…f 0¦ €I „¶€Y …ºk€B GÀB® _Â5€[ ‚Å>€… nÌ” ,Í€[ pÏadvance_index_iterate(A_FIRST, i) {
    if (valid_advance_by_numberadvance_index_iterate(A_FIRST, advance_index_iterate_end;
      }
    }
  } advance_index_iterate_end;

  /* Fill in the values for the tech goals */
  advance_index_iterate(A_FIRST, i) {
    if (valid_advance_by_numberadvance_index_iterate(A_FIRST, advance_indexadvance_index_iterate_end;

  newtech = A_UNSET;
  newgoal = A_UNSET;
  advance_index_iterate(A_FIRST, i) {
    if (valid_advance_by_number(i)) {
      if (values[i] > values[newtech]
	  && player_invention_is_ready(pplayer, i)
	  && player_invention_state(pplayer, i) == TECH_REACHABLE) {
	newtech = i;
      }
      if (goal_values[i] > goal_values[newgoal]
	  && player_invention_is_ready(pplayer, i)) {
	newgoal = i;
      }
    }
  } advance_index_iterate_end;
#ifdef REALLY_DEBUG_THIS
  advance_index_iterate(A_FIRST, id) {
    if (values[id] > 0 && player_invention_state(pplayer, id) == TECH_REACHABLE) {
      TECH_LOG(LOG_DEBUG, pplayer, advance_by_number(id),
              "turn end want: %d", values[id]);
    }
  } advance_indexadvance_by_number(choice.choice), 
               "new research, was %s, 
	    advance_name_by_player(pplayer, research->tech_goal), 
	    goal.current_want,
	   int best_cost = FC_INFINITY;
  struct advance *best_tech = A_NEVERstruct advance *itech = iunit->require_advanceA_NEVER != itech
       && player_invention_state(pplayer, advance_number(itech)) != TECH_KNOWN) {
        /* See if we want to invent this. */
        cost = total_bulbs_required_for_goal(pplayer, advance_number(itech)) {
	    int iimprtech = advance_number(preq->source.value.advance);

	    if (TECH_KNOWN != player_invention_state(pplayer, iimprtech)) {
	      int imprcost = total_bulbs_required_for_goal(pplayer, iimprtech);

	      if (imprcost < cost || cost == 0) {
	        /* If we already have the primary tech (cost==0),
	         * or the building's tech is cheaper,
	         * go for the building's required tech. */
	        itech = preq->source.value.advance;
	        cost = 0;
	      }
	      cost += imprcost;
	    }
	  }
	} requirement_vector_iterate_end;
      }

      if (cost < best_cost
       && player_invention_is_ready(pplayer, advance_number(itech)A_NEVER != best_techadvance_index(best_tech)] += want;
    TECH_LOG(LOG_DEBUG, pplayer, best_tech,
            ENDREP
DELTA 13219 26436 11848
SVN  †  †  ‚?œ Š( ’ ˆyŠ$€ ‡5”#‡ ‹i›W °§M€[ Târ€% 'Û €X RÈ  ™eÝ`… ‡L÷Q€T  ò:› (€? UÈ  »ƒw Èz T…»< „Àz€E ÅQ j„”t† D‘ €P YÈv² kÉK€…. 0Ð/€w .Ò-€D ƒWÔ® ƒ`×x 6Û`€` hÞ€‚Y rá`€W å€C è€ ê€q d…¶& Q· † D‘  ÀYî€B ®‚¯,  E‚Ýgµ ¦]‚ßb« 9ƒ†w… Mƒˆ4€K ‡;ƒ‰ €D |ƒ‘3… ‚5ƒ“3‡ ‘ƒ•g‡ ‚ö
ƒ¦x#include "srv_mainstruct advance *lookup_tech(struct section_file *file,
				   const char *prefix, const char *entry,
				   bool required, const char *filename,
				terrainstruct advance *struct advance *lookup_tech(struct section_file *file,
				   const char *prefix, const char *entry,
				   bool required, const char *filename,
				   const char *description)
{
  char *sval;
  struct advance *padvance!sval || (!required && strcmp(sval, "Never") == 0)) {
    padvance = A_NEVER;
  } else {
    padvance = find_advance_by_rule_name(sval);

    if (A_NEVER == padvance);
      if (required) {
        exit(EXIT_FAILURE);
      }
    }
  }
  return padvanceexiststruct advance *padvance = find_advance_by_rule_name(sval);

    if (NULL == padvancif (!valid_advance(padvanceadvance_number(padvance);
    freelog(LOG_DEBUG, "\"%s\" %s.%s (%d): %s (%d)",
            filename, prefix, entry, i, sval,
            advance_number(padvance));
  }
  free(slist);
  returnA_FIRST; /* includes A_NONE */

  i = 0;
  advance_iterate(A_FIRST, ai++;
  } advance  ...
******/
static void load_ruleset_techs(struct section_file *file)
{
  char **secstruct advance *a_none = advance_by_number(A_NONE)_none->require[AR_ONE] = a_none;
  a_none->require[AR_TWO] = a_none;
  a_none->require[AR_ROOT] = A_NEVER;
  a_none->flags = 0;

  i = 0;
  advance_iterate(A_FIRST, a) {
    char *sval, **slist;
    int j,ival,nval;

    a->require[AR_ONE] = lookup_tech(file, sec[i], "req1", FALSE,
				     filename, a->name.vernacular);
    a->require[AR_TWO] = lookup_tech(file, sec[i], "req2", FALSE,
				     filename, a->name.vernacular);
    a->require[AR_ROOT] = lookup_tech(file, sec[i], "root_req", FALSE,
				      filename, a->name.vernacular);

    if ((A_NEVER == a->require[AR_ONE] && A_NEVER != a->require[AR_TWO])
     || (A_NEVER != a->require[AR_ONE] && A_NEVER == a->require[AR_TWO]uire[AR_ONE] = a->require[AR_TWO] = A_NEVER;
    }
    if (a_none == a->require[AR_ONE] && a_none != a->require[AR_TWO]uire[AR_ONE] = a->require[AR_TWO];
      a->require[AR_TWO] = a_none else {
        a->flags |= (1<<ival);
      }i++;
  } advance_iterate_end;advance_iterate(A_FIRST, a) {
    if (valid_advance(a)
     && A_NEVER != a->require[AR_ROOT]) {s
       * root_req. */
      advance_iterate(A_FIRST, b) {
        if (valid_advance(b)
         && A_NEVER == b->require[AR_ROOT]
         && (a == b->require[AR_ONE] || a == b->require[AR_TWO])) {
          b->require[AR_ROOT] = a->require[AR_ROOT];
	  if (b < a) {
	    out_of_order = TRUE;
          }
        }
      } advance_iterate_end; advance_iterate_end;

  /* Now rename A_NEVER to A_NONE for consistency */
  advance_iterate(A_NONE, a) {
    if (A_NEVER == a->require[AR_ROOT]) {
      a->require[AR_ROOT] = a_none;
    }
  } advance_iterate_end;advance_iterate(A_FIRST, a) {
    if (!valid_advance(a)) {
      /* We check for recursive tech loops later,
       * in build_required_techs_helper. */
      if (!valid_advance(a->require[AR_ONEa),
                advance_rule_name(a->require[AR_ONE]));
        exit(EXIT_FAILURE);
      } 
      if (!valid_advance(a->require[AR_TWOa),
                advance_rule_name(a->require[AR_TWO]));
        exit(EXIT_FAILURE);
      }
    }
  } advance...  
require_advance = lookup_tech(file, sec[i], "tech_req", TRUE,
				valid_advance(u->require_advancerequire_advance));
      u->require_advance = A_NEVERadvance_by_number(A_NONE) == b->obsolete_byNEVER (Test for valid_advance() later.)
       */
      b->obsolete_by = A_NEVERA_NEVER != b->obsolete_by
          && !valid_advance(b->obsolete_byNEVERterrainterrain†  ®A·\Ž1€‚~ ŽL €W “FŽ\¾ £€‚M ‚¤~† jÉy †¨¿ Ò[®	€C ˆ#€_‡ „I‰» ‹cC R™3” R›	” †œ_€@ £ €< Q¥: Y­= D§h€G W­=€y f¥:‘ W¦4 ­=ile, &game.info.num_teams, "teams.names");
  game.info.num_teams = MIN(MAX_NUM_TEAMS, game.info.num_teams);
  if (game.info.num_teams <= 0) {
    freelog(LOG_FATAL, "Missing team names in game.ruleset.");
    exit(EXIT_FAILURE);
  }
  for (i = 0; i < game.info.num_teams; i++) {
    sz_strlcpy(game.info.team_names_orig[i], svec[i]);
  }
  free(svec);

  section_file_check_unused(&require_advance
                              ? advance_number(u->require_advance) : -1advance_iterate(A_NONE, a) {
    packet.id = advance_number(a)
    packet.req[AR_ONE] = a->require[AR_ONE]
                         ? advance_number(a->require[AR_ONE]) : -1;
    packet.req[AR_TWO] = a->require[AR_TWO]
                         ? advance_number(a->require[AR_TWO]) : -1;
    packet.root_req = a->require[AR_ROOT]
                      ? advance_number(a->require[AR_ROOT]) : -1;
advanc
                         ? advance_number(b->obsolete_by) : -1/* We cannot use player_set_nation() here since this is
     * called before nations are loaded. Player pointers
     * from nations will be initialized to NULL when nations are
     * loaded. */terrain/* Init nations we just loaded. */
  init_available_nationsstruct advance *advance_number(tech)advance_number(tech)struct advance *a = valid_advance_by_number(tech);

      if (!aadvance_by_number(tech)));
        exit(EXIT_FAILURE);
      }
      if (advance_by_number(A_NONE) != a->require[AR_ROOT]
          && !nation_has_initial_tech(pnation, a->require[AR_ROOT]astruct advance *a = valid_advance_by_number(tech);

      if (!a) {
        freelog(LOG_FATAL, "Tech %s does not exist, but is tech for %s.",
                advance_rule_name(advance_by_number(tech)  if (advance_by_number(A_NONE) != a->require[AR_ROOT]
          && !nation_has_initial_tech(pnation, a->require[AR_ROOT]%s, but they haveaENDREP
DELTA 11697 2078 676
SVN  “b“k
( Ž ¨ …8Ž*
              struct advance *padvance,ENDREP
DELTA 13133 197021 273
SVN  ²R²^
 ¦ — Œ3¦valid_advance_by_numberENDREP
DELTA 13046 88301 581
SVN  ñ	ò ˆg ®F ¦ G¦8 e°-¦ j¦8 ƒ^³Ž „:·€‚ K½=€A g¾/€
 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_numbflag = 0;
  
  advance_index_iterate(A_FIRST, i) {
    if (player_invention_state(plr0, i) == TECH_KNOWN
        && player_invention_is_ready(plr1, i)
        && (player_invention_state(plr1, i) == TECH_UNKNOWN
	    || player_invention_state(plr1, i) == TECH_REACHABLEadvance_by_number(i)),
				smeBSBObjectClass,
				popupmenu,
				ayer_number(plr0) << 24) |
					 (player_number(plr1) << 16) |
					 i));
      flag=1;
    }
  } advance_index_iterate_end;
  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 13007 33474 34229
SVN  †  †  „*À9 Ô" €I „}ÔjŽ ¹!Ùu‰ ×#“Ž •RêJ€K ‡5‚€a€O (‚‰š $‚
 ‡}‚™h” ¹\‚¡vŽ ƒ5‚Û_  ‚à-‹ q‚â‹ „,‚ã`• ‚è%€a I× €ƒ „Qƒ…f G  ‚qƒV¥ Yƒœk 4ƒ”0€ mƒ•h€‚ Sƒ }· I×  ‚2ƒ›0§ jƒ}£ LƒŸx Sƒ¡  @ƒ¨l€q ƒ¶{€ƒz ƒTƒ»&€3 lƒ¿^˜ ƒÀY’ ©ƒÍg’ ‚_ƒö ‰ƒùd‰ ‘„ƒ	€„? ‰>„”€ n„Ÿ!‰ ,„¡™ C„¢S€C ‚ „¤R€B ‚g„§.€„) ˜]„¬" p„Å€‚E „i„Çx€Q M„Ìc€ƒ n„Ï>€M „?„Ñ™ ‚v„Õj¾ ‡b„ÙŽ –*„á€s ‚)„ø$® ˆx„úe‰ ]…Œ2 …„C‰ †^……K‰ […Œ2‰ Ž+…Ž€L o…œH‰ R…­@‰ ƒ…¯€„e …²€ˆ4 "…·„ ‚…¸(€S ‚!…»€1 n…¾@¿ Pƒ¯? ¤6…À+Ž ‚R…äi‰ 7…çD€ F…÷z€I …û8€K ƒ/…ý	” “M†€P‰ ‚†”&‘ ˆ)†–=€‚find_terrain_by_identifier plus fatal error */
  if (ch == TERRAIN_UNKNOWTERRAIN_UNKNOWrule_nameplayer_by_numblayer_index(pplayer))) {
	  BV_SET(ptile->tile_known, player_index(pplayer)secfile_insert_str(file, nation_rule_name(map.start_positions[i].nation),
			  layer_number(ptile->owner)layer_index(pplayer)type_rule_nameif (id < 0) {
    return NULLreturn NULLreturn NULLimprovement_rule_nameConvert an old-style technology id into a tech name.
  Caller uses -1 to indicate missing value.
***/
static const char* old_tech_name(int id)
{
  /* Longstanding value (through 2.1) for A_LAST at 200,
   * and A_UNSET at 199 */
  if (id == -1 || id >= 199) {
    return "A_UNSET";
  }

  /* This was 1.14.1 value for A_FUTURE */
  if (id == 198) {
    return "A_FUTURE";
  }
  
  if (id == 0) {
    return "A_NONE";
  }
  
  if (id < 0 || id >= ARRAY_SIZE(old_default_techs)) {
    return NULL
struct advance *padvance;
  int id;
   if (!name) {
      freelog(LOG_FATAL, "%s: value (%d) out of range.",
              path, id);
      exit(EXIT_FAILURE);
    }
  }
used by researching_saved */
    return A_UNKNOWN;
  }

  padvance = find_advance_by_rule_name(name);
  if (NULL == padvance) {
    freelog(LOG_FATAL, "%s: unknown technology \"%s\".",
            path_with_name, name);
    exit(EXIT_FAILURE);    
  }
  return advance_number(padvance*
  Save technology in secfile entry called path_name.
A_UNKNOWN: /* used by researching_saved_rule_name(advance_by_number(tech))
                                           "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_name/* Avoid warning when loading pre-2.1 saves containing foul status */
    secfile_lookup_bool_default(file, FALSE, "player%d.u%d.foul",
                                plrno, i);
game_find_city_by_numberbase_number(pbase)base_number(pbase)by_numberrule_name(p);

  if (pnation != NO_NATION_SELECTED) {

    /* 2.1 and earlier savegames have same nation for both barbarian players.
     * Reassign correct nations for such barbarians. */
    enum barbarian_type nat_barb_type = nation_barbarian_type(pnation);

    if ((is_sea_barbarian(plr) && nat_barb_type != SEA_BARBARIAN)
        || (is_land_barbarian(plr) && nat_barb_type != LAND_BARBARIAN)) {
      freelog(LOG_ERROR, "Reassigning barbarian nation for %s", plr->name);
      plr->nation = NO_NATION_SELECTED;
    } else {
      player_set_nation(plr, pnation);
    }rule_name(name);
  if (gov == NULL) {
    freelog(LOG_FATAL, "Player%d: unsupported government \"%s\".",
                       plrno,
                      rule_namegovernment_of_player(plr)layer_number(pother))) {
	BV_SET(plr->embassy, player_index(pother)layer_index(pother))) {
	BV_SET(plr->embassy, player_index(pother)freelog(LOG_ERROR, "Player%d: unsupported city_style %d."
                         " Changed to \"%s\".",
                         plrno,
                         c_s,
                         old_order[0]);
      c_s = 0;
    }
    p = old_order[c_s];
  }
  c_s = find_city_style_by_rule_name(p);
  if (c_s < 0) {
    freelog(LOG_ERROR, "Player%d: unsupported city_style_name \"%s\"."
                       " Changed to \"%s\".",
                       plrno,
                       p,
                       city_style_rule_name(0));
    c_s = 0;
  }ing_saved, researching_saved, But the local variables have
   * changed to reflect such minor differences. */
  research->bulbs_researched
    = secfile_lookup_int(file, "player%d.researched", plrno);
  research->bulbs_researching_saved =
	  secfile_lookup_int_default(file, 0,
				     "player%d.researched_before", plrno);
  research->researching_saved
  /* For new savegames using the technology_order[] list, any unknown
   * inventions are ignored.  Older games are more strictly enforced,
   * as an invalid index is probably indication of corruption.
   */const char *name = old_tech_name(k);
      if (!name) {
        freelog(LOG_FATAL, "player%d.invs: value (%d) out of range.",
                plrno, k);
        exit(EXIT_FAILURE);
      }
      if (p[k] == '1') {
        struct advance *padvance = find_advance_by_rule_name(name);
        if (padvance) {
          player_invention_set(plr, advance_number(padvance), TECH_KNOWN);
                struct advance *padvance =
               find_advance_by_rule_name(technology_order[k]);
        if (padvance) {
          player_invention_set(plr, advance_number(padvance), TECH_KNOWN);
        government_of_player(plr)player_research_update(plr);

  for (i = 0; i < player_count()player_count()player_count()) {
      pcity->original = player_by_number(id);
    } else {
      pcity->original = player_by_numbspecialist_rule_name(specialist_by_number(sp))rule_namerule_namerule_namerule_name);
    vision_reveal_tiles(pcity->server.vision, game.info.city_reveal_tilesrule_namerule_name/* avoid myrand recalculations on subsequent reload. */
    pcity->ai.next_recalc = secfile_lookup_int_default(file, 0, 
				"player%d.c%d.ai.building_turn", plrno, i);

    /* avoid myrand and expensive recalculations on subsequent reload. */
    pcity->ai.next_founder_want_recalc = secfile_lookup_int_default(file, 0, 
				"player%d.c%d.ai.founder_turn", plrno, i);
    pcity->ai.founder_want = secfile_lookup_int_default(file, 0, 
				"player%d.c%d.ai.founder_want", plrno, i);
    pcity->ai.founder_boat = secfile_lookup_bool_default(file,
				(pcity->ai.founder_want < 0), 
				"player%d.c%d.ai.founder_boat/* Toss any existing attribute_block (should not exist) */
  if (plr->attribute_block.data) {
    free(plr->attribute_block.data);
    plr->attribute_block.data = NULL;
  }

  /* This is a big heap of opaque data for the client, check everything! */
  plr->attribute_block.length = secfile_lookup_int_default(
      file, 0, "player%d.attribute_v2_block_length", plrno);

  if (0 > plr->attribute_block.length) {
    freelog(LOG_ERROR, "player%d.attribute_v2_block_length=%d too small",
            plrno,
            plr->attribute_block.length);
    plr->attribute_block.length = 0;
  } else if (MAX_ATTRIBUTE_BLOCK < plr->attribute_block.length) {
    freelog(LOG_ERROR, "player%d.attribute_v2_block_length=%d too big (max %d)",
            plrno,
            plr->attribute_block.length,
            MAX_ATTRIBUTE_BLOCK);
    plr->attribute_block.length = 0;
  } else if (0 < plr->attribute_block.length) {
    int part_nr, parts;
    size_t actual_length;
    size_t quoted_length;
    char *quoted;

    plr->attribute_block.data = fc_malloc(plr->attribute_block.length)'\0' {
        freelog(LOG_ERROR, "attribute_v2_block_parts=%d actual=%d",
                parts,
                part_nr);
	break;
      }
      freelog(LOG_DEBUG, "attribute_v2_block_length_quoted=%lu have=%lu parFATAL, "attribute_v2_block_length_quoted=%lu actual=%lu",
	      (unsigned long) quoted_length,
	      (unsigned long) strlen(quoted));
      assert(0);
    }

    actual_lengthactual_length == plr->attribute_block.length);
    free(quoted)player_by_numbrule_namenation_rule_name(nation_of_player(plr)),
		     "player%d.nation", plrno);

  secfile_insert_int(file, plr->team ? team_index(plr->team)government_rule_name(government_of_player(plr)),
		     "player%d.government_name", plrno);

  if (plr->target_government) {
    secfile_insert_str(file, government_rule_name(government_of_player(plr))layer_index(pother)),
			"player%d.embassy%d", plrno, player_number(pother)city_style_rule_nameing_savedresearching_saved/* removed after 2.1 */

  /* Save technology lists as bytevector. Note that technology order is 
   * saved in savefile.technology_order */
  advance_index_iterate(A_NONE, tech_id) {
    invs[tech_id] = (player_invention_state(plr, tech_id) == TECH_KNOWN) ? '1' : '0';
  } advance_†  ƒÂ/ƒÔC‚>¡\… ˆ5‚:Ž Ž=Šw wš€v 6œr‰ ›;ž6‰ “^¹ ‚DÍv® …"ÐR 0ÖŽ ‚×>• ‘WÙ\ 0ë@Ž ‚ì}• Š<ï,€„+ •?ùZ› „W0€‚9 ” €r •z€ƒ& a˜,€N U›+€\ %™%€C U›+„ Lœ €y  [ ™ …K½s€‚ gÁ{ XÄ5€ ñeÅ‰ ]‚¶z‰ t‚¸`€p „‚º® † ‚¾:€W ƒl‚Å+Ž ƒy‚É)• /‚Í3• †‚Ît€^ ƒ_‚Õ5˜ x‚Ù#€ ‹7‚Û-š „	‚æb€n †T‚ë$• ƒ5‚ò€z ‚S‚öm‘ Ç‚ùU€X1ƒÁ~indexplayer_by_numbunit_type(punit)),
		       "player%d.u%d.type",
		       plrno, i);
    secfile_insert_str(file, unit_rule_name(punitby_numberby_numberlayer_number(pcity->original)specialist_rule_name(specialist_by_number(sp))utype_by_numbertype_rule_nameimprovement_rule_nameutype_by_numbertype_rule_nameimprovement_rule_name
    /* avoid myrand recalculations on subsequent reload. */
    secfile_insert_int(file, pcity->ai.next_recalc,
		       "player%d.c%d.ai.building_turn", plrno, i);

    /* avoid myrand and expensive recalculations on subsequent reload. */
    secfile_insert_int(file, pcity->ai.next_founder_want_recalc,
		       "player%d.c%d.ai.founder_turn", plrno, i);
    secfile_insert_int(file, pcity->ai.founder_want,
		       "player%d.c%d.ai.founder_want", plrno, i);
    secfile_insert_bool(file, pcity->ai.founder_boat,
		       "player%d.c%d.ai.founder_boatlayer_number(pdcity->owner)  /* This is a big heap of opaque data from the client.  Although the binary
   * format is not user editable, keep the lines short enough for debugging,
   * and hope that data compression will keep the file a reasonable size.
   * Note that the "quoted" format is a multiple of 3.
   */
#define PART_SIZE (3*256*quoted_at = strchr(quoted, ':');
    size_t bytes_left = strlen(quoted);
    size_t bytes_at_colon = 1 + (quoted_at - quoted);
    size_t bytes_adjust = bytes_at_colon % 3;
    int current_part_nr;
    int parts;
    char part[PART_SIZE + 1]bytes_left,
		       "player%d.attribute_v2_block_length_quoted", plrno);

    /* Try to wring some compression efficiencies out of the "quoted" format.
     * The first line has a variable length decimal, mis-aligning triples.
     */
    if ((bytes_left - bytes_adjust) > PART_SIZE) {
      /* first line can be longer */
      parts = 1 + (bytes_left - bytes_adjust - 1) / PART_SIZE;
    } else {
      parts = 1;
    }if (parts > 1) {
      size_t size_of_current_part = PART_SIZE + bytes_adjust;

      /* first line can be longer */
      memcpy(part, quoted, size_of_current_part);
      part[size_of_current_part] = '\0'
			 plrno,
			 0);
      bytes_left -= size_of_current_part;
      quoted_at = &quoted[size_of_current_part];
      current_part_nr = 1;
    } else {
      quoted_at = quoted;
      current_part_nr = 0;
    }

    for (_at, size_of_current_part);
      part[size_of_current_part] = '\0'
			  quoted_at = &quoted_at[size_of_current_part];
    }
    assert(bytes_left == 0);
    free(quoted);
  }
#undef PART_SIZEfind_special_by_rule_namegame.meta_info.user_message_set = secfile_lookup_bool_default(file,
                                                                  FALSE,
                                                "game.user_metamessage");
    if (game.meta_info.user_message_set) {
      set_user_meta_message    } else {
      /* To avoid warnings when loading pre-2.1 savegames */
      secfile_lookup_str_default(file, "", "game.metamessage");
    }rule_namerule_name/* Initialize nations we loaded from rulesets. This has to be after
     * map loading and before we seek nations for players */
    init_available_nations();

    players_iterate(pplayer) {
      player_load(pplayer, player_number(pplayer)
		nation_rule_name(nation_of_player(pplayer))player_index(aplayer)].type = DS_PEACE;
          aplayer->diplstates[player_index(plr)player_count()layer_number(pplayer)layer_index(pplayer2)player_count()];

    /* players_iterate() not used here */
    for (i = 0; i < player_count()game_find_unit_by_number"Removing %s's unferried %s in %s at (%d, %d)",
                pplayer->name,
                unit_rule_name(punit),
                terrain_rule_name  const char *user_messagebool(file, game.meta_info.user_message_set,
                      "game.user_metamessage");
  user_message = get_user_meta_message_string();
  if (user_message != NULL) {
    secfile_insert_str(file, user_message, "game.metamessage");
  }improvement_rule_namebuf[A_NONE] = "A_NONE";
    advance_iterate(A_FIRST, a) {
      buf[advance_index(a)] = advance_rule_name(a);
    } advancspecial_rule_namelayer_number(pplayer), file);
    } players_iterate_end;

    /* shuffled_players_iterate() not used here */
    for (i = 0; i < player_count(); i++) {
      secfile_insert_int(file, player_number(shuffled_player(i))ENDREP
DELTA 13128 0 63
SVN  ±,±=[ §= €[ ‰%¨player_invention_is_ready(game.player_ptr, tech_id))
  {
    switch (player_invention_stateENDREP
DELTA 13133 90306 107
SVN  ÿ	ÿM‚. ¨Z … –x¨^€y vÁ>” QÂ5œ ¼Ãj = 0advance_index_iterate(A_FIRST, i) {
    if (player_invention_state(pdialog->pplayer, i) == TECH_KNOWN) {
      if(player_invention_state(game.player_ptr, i)==TECH_KNOWN) {
	sz_strlcpy(tech_list_names[j], advance_name_translation(advance_by_number(i)advance_by_number(i)} advance_index_iterate_end;ENDREP
DELTA 13151 3188 7601
SVN  ƒØYƒÞz‚2Ÿv Ó š }Ó+€ ‚yÕ€s x±/ Ú€| Ô1Ûe€h y¶v JÙ>€~ Ûe „_µ¦ ´4º— î=€‚O ‚Rò´ bƒ€~ õP€„ „aú€] ‡ÿ6€] ‡P‚‡	ª Z‚Žt€D •U‚Ÿw— D‚µZ— M‚ºt ‚·y— m‚µZ e‚¸!— •,‚ºt— M‚Ð.€ M‚Ò}— ˜0‚ÔX€ c‚í~€‚r ƒ†a‚ ‚[‚ó:€ƒ  ‚øj r‚ú"€$ C‚ö} v‚ýmŠ k¹/ ó@› ‚ƒ€e€ƒ C‚ö}” ¨wƒ…c Šrƒ®]€9 ƒ	ƒºi› šgƒ½runiversal_name_translationadvance_number(preq->source.value.advance);
      pBuf->string16->fgcol = *get_tech_color(advance_number(preq->source.value.advance) (A_NEVER == pImpr_type->obsolete_by)
  {
    pBuf = create_iconlabel_from_chars(NULL,
		    pWindow->dst, _("Neveradvance_number(pImpr_type->obsolete_by);
    pBuf->string16->fgcol = *get_tech_color(advance_number(pImpr_type->obsolete_by) (A_NEVER == pUnitType->require_advance
   || advance_by_number(A_NONE) == pUnitType->require_advance)
 advance_name_translation(pUnitType->require_advance),
	  adj_font(12),
			  WF_RESTORE_BACKGROUND);
    pBuf->ID = MAX_ID - advance_number(pUnitType->require_advance);
    pBuf->string16->fgcol = *get_tech_color(advance_number(pUnitType->require_advance)advance_number(utype->require_advance)advance_by_number(tech)advance_index_iterate(A_FIRST, i)
  {
    if ((targets_count < 6)
        && (advance_required(i, AR_ONE) == tech
           || advance_required(i, AR_TWO) == tech))
    {
      pBuf= create_iconlabel_from_chars(NULL, pWindow->dst,
              advance_name_translation(advance_by_number(i)),
              adj_font(12),
              advance_index_iterate_end;
  if (targets_count < 6)_required(sub_tech, AR_ONE) == tech
       && advance_required(sub_tech, AR_TWO) != A_NONE)
      {
        sub_tech = advance_required(sub_tech, AR_TWO);
      } else if (advance_required(sub_tech, AR_TWO) == tech
              && advance_required(sub_tech, AR_ONE) != A_NONE)
      {
        sub_tech = advance_required(sub_tech, AR_ONE);
      } else {
        continue;
      }
      pBuf= create_iconlabel_from_chars(NULL, pWindow->dst,
              advance_name_translation(advance_by_number(sub_tech)),
              adj_font(12),
   VUT_ADVANCE == preq->source.kind
       && advance_number(preq->source.value.advance) == techVUT_ADVANCE == preq->source.kind
       && advance_number(preq->source.value.advance) == techadvance_number(pUnitType->require_advance)_required(t0, AR_ONE) == t1
         || advance_required(t0, AR_TWO)_required(tech, AR_ONE)_required(tech, AR_TWO)_required(tech, AR_ONE)_required(tech, AR_TWO)_required(tech, AR_ONE)_required(tech, AR_ONE))
        {
	  pSub0 = pStore->pSub_Targets[j];
	  break;
        }
      }
    }
    
    if (advance_required(tech, AR_TWO)_required(tech, AR_TWO)advance_by_number(tech)));
  pSurf = create_sellect_tech_icon(pStr, tech, FULL_MODE);
  pBuf = create_icon2(pSurf, pWindow->dst,
                AR_ONE; i <= AR_TWO; i++)
  {
    Tech_type_id ar = advance_required(tech, i);
    struct advance *vap = valid_advance_by_number(ar);

    if (NULL != vap && A_NONE != ar)
    {
      copy_chars_to_string16(pStr, advance_name_translation(vap));
      pSurf = create_sellect_tech_icon(pStr, ar, SMALL_MODE);
      pBuf = create_icon2(pSurf, pWindow->dst,
                arAR_ONE; i <= AR_TWO; i++)
      {
        Tech_type_id ar = advance_required(sub_tech, i);
        struct advance *vap = valid_advance_by_number(ar);

        if (NULL != vap && A_NONE != ar)
        {
          copy_chars_to_string16(pStr, advance_name_translation(vap));
          pSurf = create_sellect_tech_icon(pStr, ar, SMALL_MODE);
          pBuf = create_icon2(pSurf, pWindow->dst,
                radvance_index_iterate(A_FIRST, i)
  {
    if ((targets_count<6)
      && (advance_required(i, AR_ONE) == tech
       || advance_required(i, AR_TWO) == tech))
    {
_by_number(i)           advance_index_iterate_end;_required(sub_tech, AR_ONE) == tech
       && advance_required(sub_tech, AR_TWO) != A_NONE)
      {
        sub_tech = advance_required(sub_tech, AR_TWO);
      } else if (advance_required(sub_tech, AR_TWO) == tech
              && advance_required(sub_tech, AR_ONE) != A_NONE)
      {
        sub_tech = advance_required(sub_tech, AR_ONE);
      } else {
        continue;
      }
      
_by_number(sub_tech)advance_index_iterate(A_FIRST, i)
    {
      struct advance *vap = valid_advance_by_number(i);;
      if (vap)
      {
        copy_chars_to_string16(pStr, advance_name_translation(vap advance_index_iterate_end;ENDREP
DELTA 13219 1910 454
SVN  †  †  }‰ „Ó6 ª ˆx„ÓM¦ ²0„Ü\ª ƒ…#¦ ’B…’Gª ƒ…¥ ¦ š@…¨O€d …Äb€y …Ó” ‚^…Ô› —K…Öx€ …ð-› Žn…ñ@€ †‚€. ƒ7†„› ‚n…Öx ”]†Š1advance_number(preq->source.value.advance)advance_number(pUnit->require_advance)advance_number(preq->source.value.advance)advance_number(pUnit->require_advance)advance_number(preq->source.value.advance)advance_number(pUnit->require_advance)advance_index_iterate(A_FIRST, i) {
    if (!player_invention_is_ready(game.player_ptr, i)
     || player_invention_state(game.player_ptr, i) != TECH_REACHABLE) {
      continue;
    }
    count++;
  } advance_index_iterate_end;advance_index_iterate(A_FIRST, i) {
    if (!player_invention_is_ready(game.player_ptr, i)
     || player_invention_stateadvance_by_number(i) advance_index_iterate_end;advance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(game.player_ptr, i)
        && player_invention_state(game.player_ptr, i) != TECH_KNOWN advance_index_iterate_end;advance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(game.player_ptr, i)
        && player_invention_state(game.player_ptr, i) != TECH_KNOWN
      count++;
      my_snprintf(cBuf, sizeof(cBuf), "%s\n%d %s",
                  advance_name_translation(advance_by_number(i)),
                  num,
                   advance_index_iterate_end;†  ®,®a‚´ Vš= ƒ ˆvƒ4€P ŸxŽ4EFT) {
    popdown_science_dialog();
  }
  return -1advance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(game.player_ptr, i)
     && player_invention_state(game.player_ptr, i) != TECH_KNOWN) {
	count++;	  
    }
  }  advance_index_iterate_end;ENDREP
DELTA 13247 5796 749
SVN  ƒûHƒü$G‚I Œ;  ¾ŒG– ƒKÊa€L S¦  ¡OÏ(€ ¾ñr‡ ¸|°‡ ‹6é ŠôM Rþt¢ ûpÿXstruct advance *const struct advance *if (tech) {
    pplayer->ai.tech_want[advance_index(tech)] += tech_want;
  }valid_advance(pimpr->obsolete_by)) {
	  turns = MIN(turns, 
		      total_bulbs_required_for_goal(aplayer, advance_number(pimpr->obsolete_by)advanceadvancevalid_advancevalid_advanceadvance_number(pimpr->obsolete_by)ENDREP
DELTA 13024 161350 3433
SVN  ²S³u„Q 6 ² …af¤ ƒU–h¤ †hš^€  >¢H³ 9¤0 ƒ1¥r” ˆ©4ˆ ‡h±=” “-¹6ˆ §sÌkŽ £ôf” …˜” „M8€S S@ 5£%” f¤k‘ U¥m‘ ‹u¦^universal source = {
      .kind = VUT_IMPROVEMENTVUT_IMPROVEMENT == preq->source.kindVUT_IMPROVEMENT == preq->source.kindadvance_index_iterate(A_FIRST, tech) {
    int players_having;

    if (!player_invention_is_ready(pplayer, tech)
        || TECH_KNOWN == player_invention_statTECH_KNOWN == player_invention_state(aplayer, tech)advance_indexlayer_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 13027 50654 23238
SVN  ƒ¬:ƒ¯@RŒS Äq €C „Å"€@ Dñ@‚ Q¦ †<ËV pÒ€2 ,Ô5€s †PÖD€A ¦HÝC€H ƒA„A€H ƒ?ˆ8€G ƒ6Œ,€G „+€N ƒH”~€G „/˜{€O †g€F „
¤:€G …>¨y˜ Ô`®F˜ ‘;‚ƒ5˜ ºs‚”€ "‚Ð;š H¬@‚ Q¦ |‚ß š‚á” „‚û Œsƒ€/¡ ƒ2˜ ŽuƒEgame_find_unit_by_number(diplomat_id) && 
	game_find_city_by_numberadvance_count()) {
      *array = _("At Spy's Discretion");
    } else {
      *array = advance_name_translation(advance_by_number(tech));
    }
  } else {
    *array = _("Technology");
  }
}
..advance_index_iterate(A_FIRST, i)
      {
        if(player_invention_state(pvictim, i)==TECH_KNOWN && (player_invention_state(pplayer, i)==TECH_UNKNOWN || player_invention_state advance_index_iterate_end;

      if (any_tech)
	DoMethod(listview, MUIM_NList_InsertSingle, 100+advance_count(), 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_numbergame_find_unit_by_number(diplomat_id) && 
     (pcity=game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_unit_by_numbergame_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_number
                    utype_name_translation(punittemp),
                    (punit->veteran) ? _(" (veteran)") : "",
                   translated_name(nationname..nation_by_number_name_translation(i)nation_by_numbernation_name_translation(/*FIXME*/game_find_unit_by_numberENDREP
DELTA 13219 22222 270
SVN  Šz‹IR ä ª ‰Sä%ª †Oî– …"ôk€h %úUadvance_number(preq->source.value.advance)advance_number(preq->source.value.advance)player_invention_statedvance_by_number(ai->goal.govt.req), 
             "+ %d for %s in ai_manage_government()",
            ENDREP
DELTA 13133 95769 1382
SVN  ãã:‚D º% €‚) ‚`¼L› £q¿, = FALSE;

    menu = gtk_menu_new();

    advance_index_iterate(A_FIRST, i) {
      if (player_invention_state(plr0, i) == TECH_KNOWN
          && player_invention_is_ready(plr1, i)
	  && (player_invention_state(plr1, i) == TECH_UNKNOWN
	      || player_invention_state(plr1, i) == TECH_REACHABLE advance_index_iterate_end;ENDREP
DELTA 13000 144816 3347
SVN  ÝKÝQ ‚p Æ{ š ˆUÇ€C 	Ð3€ fÒ&€ ˆ"Õ)
	nation_name_for_player(padvance_index_iterate(A_FIRST, i) {
      if(player_invention_stateplayer_invention_state(game.player_ptr, i)!=TECH_KNOWN),
			   1, advance_name_for_player(p, i),
			   -1);
      }
    } advance_index_iterate_end;ruler_title_translation(p),
		p->name);
	    break;
	  case LABEL_GOVERNMENT:
	    sz_strlcpy(buf, government_name_for_player(pENDREP
DELTA 13261 0 1137
SVN  ƒó0ƒó> ±  ‚Â±researching_saved = A_UNKNOWNENDREP
DELTA 13164 760 179
SVN  «Z«~‚.  ` €‚. ˆp¢jboattype = get_role_unit(L_FERRYBOAT, 0);

        if (NULL != boattype
         && A_NEVER != boattype->require_advance) {
          pplayer->ai.tech_want[advance_index(boattype->require_advance)] += FERRY_TECH_WANT;
          TECH_LOG(LOG_DEBUG, pplayer, boattype->require_advance,
                  ENDREP
DELTA 13169 45572 10943
SVN  …åF…ìX,Š_ ‚Ïy ˜ •‚Ðž ‚V‚å6€i º‚èj€g \Ô>‚ LÛ@ Œ?„¥» Š&„±m¥ f„¼_ S„½]€" &„¿uƒ P‚í@‚ LÛ@ …„Â@¡ ƒ„ÇS€8 ¢P„Ì` o„ð
™ Ù)„ÿl€L Y„Ð ¿ R‚í@¥ LÛ@€L …Ú+€J Y„Ð » R‚í@£ Y„Ð º ‰…Ü@handle_unit_short_info()advance_index_iterate(A_NONE, advance_index_iterate_end;

  if (need_effect_update) {
    update_menus();
  }

  player_research_update
  if (packet->prefered_tileset[0] != '\0') {
    /* There is tileset suggestion */
    if (strcmp(packet->prefered_tileset, tileset_get_name(tileset))) {
      /* It's not currently in use */
      popup_tileset_suggestion_dialog(..require_advance    = advance_by_number(p->tech_requirement) = advance_by_number(p->id);

  if(!auire[AR_ONE] = advance_by_number(p->req[AR_ONE]);
  a->require[AR_TWO] = advance_by_number(p->req[AR_TWO]);
  a->require[AR_ROOT] = advance_by_number(p->root_req)a);..advance_by_number(p->obsolete_by)improvement_rule_name(id));
      if (A_NEVER != b->obsolete_by) {
	freelog(LOG_DEBUG, "  obsolete_by %2d \"%s\"",
		advance_number(b->obsolete_by),
		advance_rule_name(b->obsolete_by)build_time = p->build_tim  We have received PACKET_FREEZE_HINT. It is packet internal to network codefreeze_hint(void)
{
  freelog(LOG_DEBUG, "handle_freeze_hint");We have received PACKET_FREEZE_CLIENT/
void handle_freeze_client(void)
{
  freelog(LOG_DEBUG, "handle_freeze_clie  We have received PACKET_THAW_HINT. It is packet internal to network codethaw_hint(void)
{
  freelog(LOG_DEBUG, "handle_thaw_hint");We have received PACKET_THAW_CLIENTthaw_client(void)
{
  freelog(LOG_DEBUG, "handle_thaw_clieENDREP
DELTA 11234 211 6184
SVN  ÏÑ^-‰x ˆ5 ’ dˆ1€A ‚k–Dˆ ‰!™.€G pÏ‚ N§| ¥D€H ƒQ§€H †4«€H ƒ?±|€G mÉr‡ E§| ‘¸)€G „kÉr€G ƒ}Ï gÓ„ ˆ~Ôz€‚5 	à› ˆ%á„ ‰~é4• ˆYóF˜ Šü.€G a†f€A ŽM–v€O ˆ!¦ ¼ –7®Lˆ ŠÅ#include "unitlistgame_find_unit_by_number(diplomat_id) && game_find_unit_by_numberhas_typegame_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_numberA_UNSETgame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numbergame_find_unit_by_number(diplomat_id) && 
     game_find_city_by_numberNULLadvance_index_iterate(A_FIRST, i) {
      if(player_invention_state(pvictim, i)==TECH_KNOWN && 
         (player_invention_state(pplayer, i)==TECH_UNKNOWN || 
          player_invention_state(pplayer, i)==TECH_REACHABLE)) {
      
        advances_can_steal[j] = advance_name_translation(advance_by_number(i)) advance_index_iterate_end;NULLimprovement_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_typehas_typeENDREP
id: 2eg.0.r13286/162882
type: file
pred: 2eg.0.r13133/208863
count: 35
text: 13286 89997 175 17881 ff59eff83d556ecb61686b1e35449a0b
props: 11057 11773 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/server/score.c
copyroot: 0 /

id: vg.0.r13286/163116
type: file
pred: vg.0.r13261/1546
count: 347
text: 13286 159363 55 63934 d0362d1051a4cf5c79e5f56fe803704b
props: 11057 12128 112 0 85dbe778568e34751643d476c23a0d7c
cpath: /trunk/server/srv_main.c
copyroot: 0 /

id: 320.0.r13286/163350
type: file
pred: 320.0.r13133/209329
count: 32
text: 13286 43526 12533 14651 a2330600644bdfc2bebf131a07e3aac4
props: 11091 295 111 0 4b4193808cb95e702a5e5065e4345324
cpath: /trunk/server/scripting/api.pkg
copyroot: 0 /

id: 321.0.r13286/163594
type: file
pred: 321.0.r13133/209571
count: 18
text: 13286 124493 231 5919 6e80372d519f07549e038a617626e105
props: 10755 32341 110 0 a3ee73c7ed0bd397f9f2fedc7793a5b7
cpath: /trunk/server/scripting/api_find.c
copyroot: 0 /

id: 32c.0.r13286/163841
type: file
pred: 32c.0.r13113/14916
count: 10
text: 13286 99755 370 3531 9d9f4871650a923093a3ea13b568851c
props: 10755 32706 110 0 fdfdab56f53d2388a66f6a5ce0985f95
cpath: /trunk/server/scripting/api_actions.c
copyroot: 0 /

id: 33d.0.r13286/164089
type: file
pred: 33d.0.r13113/15160
count: 8
text: 13286 69525 6337 8553 65145ae9d3dee8ed000d12327adf9cbf
props: 10755 33073 110 0 fd27c383f48a4fbbd90a59fbcfc8b3be
cpath: /trunk/server/scripting/api_methods.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 24
file 31z.0.r13002/337245
K 7
api.pkg
V 24
file 320.0.r13286/163350
K 13
api_actions.c
V 24
file 32c.0.r13286/163841
K 13
api_actions.h
V 23
file 32d.0.r13113/14192
K 10
api_find.c
V 24
file 321.0.r13286/163594
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 24
file 33d.0.r13286/164089
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.r13286/165231
type: dir
pred: 31x.0.r13133/210708
count: 65
text: 13286 164337 881 881 fc78a16d9d1a14cd1856577aa08671f2
props: 11108 4390 88 0 1e9d0e3735a93cd0fae3d0e1df53b911
cpath: /trunk/server/scripting
copyroot: 0 /

id: 4i.0.r13286/165463
type: file
pred: 4i.0.r13247/20651
count: 360
text: 13286 58429 2685 57042 d62b0083ba634bd4afea37713f2916a0
props: 10955 1971 112 0 e17e3e5087e98ab1d6f041bdc6ae85ee
cpath: /trunk/server/cityturn.c
copyroot: 0 /

id: 8w.0.r13286/165698
type: file
pred: 8w.0.r13261/1775
count: 346
text: 13286 127636 5941 125916 524f777ec5e06770c1ce7ddef322ed7f
props: 11085 367 112 0 7f6d12fc80ead5cc285da723cb8caa9d
cpath: /trunk/server/ruleset.c
copyroot: 0 /

id: 3bk.0.r13286/165932
type: file
pred: 3bk.0.r13133/213526
count: 20
text: 13286 90846 1134 17288 cc4fa79d8af98ba133973f7e4f7bc740
props: 12670 12724 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/server/edithand.c
copyroot: 0 /

id: 4m.0.r13286/166169
type: file
pred: 4m.0.r13283/3771
count: 119
text: 13286 94434 950 26230 24fb3850a2ef5b064d587773d293702c
props: 10928 6706 112 0 b2683e5213f79af73eb9759948ba224b
cpath: /trunk/server/diplhand.c
copyroot: 0 /

id: vz.0.r13286/166402
type: file
pred: vz.0.r13190/1456
count: 108
text: 13286 25727 816 46058 9e79e2218d4bf6cb9bb2699433dcd94a
props: 10915 10832 111 0 8ab1a522471ad7dd5014b23b42c49491
cpath: /trunk/server/diplomats.c
copyroot: 0 /

id: 33n.0.r13286/166637
type: file
pred: 33n.0.r13133/214469
count: 42
text: 13286 33481 3134 27704 aeb0578eb04833009341ac239a4c3681
props: 11004 2210 111 0 05a46e497021c8716b647ee1425e21a2
cpath: /trunk/server/techtools.c
copyroot: 0 /

id: vl.0.r13286/166875
type: file
pred: vl.0.r13258/5024
count: 336
text: 13286 135098 13465 162371 030c1d4c8960665c90a4d96177781564
props: 11092 74 112 0 de3988801a325e2d7d51fcbc7209a255
cpath: /trunk/server/savegame.c
copyroot: 0 /

id: 4u.0.r13286/167110
type: file
pred: 4u.0.r13133/215650
count: 452
text: 13286 61144 7041 64666 6fd4e30c2d7db927b8b6a3a2956158b6
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 21
file lw.0.r13220/1225
K 11
barbarian.h
V 21
file lx.0.r13220/1454
K 10
cityhand.c
V 22
file 10.0.r13169/60453
K 10
cityhand.h
V 22
file 4f.0.r10360/45679
K 11
citytools.c
V 22
file 4g.0.r13247/20423
K 11
citytools.h
V 21
file 4h.0.r11131/8041
K 10
cityturn.c
V 23
file 4i.0.r13286/165463
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.r13258/3875
K 10
commands.h
V 22
file 2lz.0.r12738/3399
K 13
connecthand.c
V 22
file 2dw.0.r13258/4106
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.r13286/166169
K 10
diplhand.h
V 20
file 4n.0.r11201/644
K 11
diplomats.c
V 23
file vz.0.r13286/166402
K 11
diplomats.h
V 22
file w0.0.r10755/37952
K 10
edithand.c
V 24
file 3bk.0.r13286/165932
K 10
gamehand.c
V 22
file 4o.0.r13169/62720
K 10
gamehand.h
V 21
file 4p.0.r12456/4365
K 9
generator
V 22
dir 2me.0.r13169/61794
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 21
file 4s.0.r13258/4341
K 6
meta.h
V 21
file 4t.0.r13258/4570
K 9
plrhand.c
V 23
file 4u.0.r13286/167110
K 9
plrhand.h
V 22
file 4v.0.r13169/63658
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.r13286/165698
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.r13286/166875
K 10
savegame.h
V 21
file vm.0.r10073/2584
K 7
score.c
V 24
file 2eg.0.r13286/162882
K 7
score.h
V 22
file 2eh.0.r11430/3487
K 9
scripting
V 23
dir 31x.0.r13286/165231
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 22
file 7s.0.r13217/44370
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.r13286/163116
K 10
srv_main.h
V 19
file vh.0.r12496/49
K 11
stdinhand.c
V 20
file 4z.0.r13267/345
K 11
stdinhand.h
V 21
file 50.0.r12637/7365
K 11
techtools.c
V 24
file 33n.0.r13286/166637
K 11
techtools.h
V 22
file 33o.0.r11130/1173
K 10
unithand.c
V 22
file 18.0.r13169/63190
K 10
unithand.h
V 21
file 19.0.r10368/4183
K 11
unittools.c
V 21
file 1a.0.r13190/1688
K 11
unittools.h
V 21
file 1b.0.r13114/6848
END
ENDREP
id: z.0.r13286/170404
type: dir
pred: z.0.r13283/7048
count: 3323
text: 13286 167346 3045 3045 2815a502bf523016ec8b66ba6553cfae
props: 12883 0 100 0 7e2420dfebc3935e1315279621b1103c
cpath: /trunk/server
copyroot: 0 /

id: vb.0.r13286/170622
type: file
pred: vb.0.r13247/24155
count: 75
text: 13286 95913 157 16152 6add626bc43db88c78792122197570b1
props: 11067 578 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /trunk/common/improvement.c
copyroot: 0 /

id: vc.0.r13286/170857
type: file
pred: vc.0.r13046/115561
count: 57
text: 13286 100153 61 5240 1140ea2e20335212b725f0cfa239a663
props: 10767 58 111 0 9c2dbf68c7baabdec873d497eccc2dc6
cpath: /trunk/common/improvement.h
copyroot: 0 /

id: v9.0.r13286/171091
type: file
pred: v9.0.r13219/42872
count: 101
text: 13286 100244 141 33334 04adf551ad65cd1656b228cf910fd426
props: 10932 10175 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /trunk/common/unittype.c
copyroot: 0 /

id: t.0.r13286/171327
type: file
pred: t.0.r13046/116261
count: 113
text: 13286 108875 8060 30606 1a138a419369c252866ae5d275d61b59
props: 11069 11747 112 0 0ba48eb7b1f123775dc0e292f9b3ab64
cpath: /trunk/common/tech.c
copyroot: 0 /

id: va.0.r13286/171559
type: file
pred: va.0.r13219/43106
count: 91
text: 13286 116965 71 12875 d4115fd319298c1deea3a07e76160c82
props: 10932 10530 111 0 c621529c87aa3e4513ceb9a8b717aa47
cpath: /trunk/common/unittype.h
copyroot: 0 /

id: u.0.r13286/171793
type: file
pred: u.0.r13133/220583
count: 69
text: 13286 118065 3431 8776 886057558ad50accc6700127dad5b7a7
props: 11069 12096 111 0 7f9b5cf6c8fffd7438ed66579e7ad166
cpath: /trunk/common/tech.h
copyroot: 0 /

id: 3r.0.r13286/172023
type: file
pred: 3r.0.r13133/221044
count: 35
text: 13286 133697 44 6494 8589d9aa618694036eb5803a4bec26b3
props: 10411 121637 111 0 b4233197920770c602c29330b7f7c623
cpath: /trunk/common/diptreaty.c
copyroot: 0 /

id: 2ll.0.r13286/172259
type: file
pred: 2ll.0.r13247/25073
count: 47
text: 13286 27737 43 8280 5e6f4682e176cd4f7ea8fcfb46bb8da2
props: 10836 12026 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/common/fc_types.h
copyroot: 0 /

id: 3u.0.r13286/172493
type: file
pred: 3u.0.r13276/1428
count: 273
text: 13286 69208 24 20954 599628d5fa15bed824aca15c66c953f6
props: 11041 20516 112 0 779057fa36f350a13e5c75663a7074d1
cpath: /trunk/common/game.c
copyroot: 0 /

id: 3v.0.r13286/172722
type: file
pred: 3v.0.r13263/48
count: 214
text: 13286 85241 25 11140 3680be8282d8ee260093e9b6e362e2da
props: 11057 32714 112 0 2cf57fb6d11b8ba51814c6d419f0189e
cpath: /trunk/common/game.h
copyroot: 0 /

id: 2wq.0.r13286/172949
type: file
pred: 2wq.0.r13247/25773
count: 51
text: 13286 85566 377 40344 516dfdf1cc29da0c1be3b480aa0a91c0
props: 10865 25397 111 0 1c266b4433d829481714f1852322e965
cpath: /trunk/common/requirements.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file 5h.0.r12525/18946
K 6
aicore
V 22
dir 18t.0.r13169/69842
K 6
base.c
V 23
file 3jw.0.r13247/24390
K 6
base.h
V 23
file 3jx.0.r13193/15954
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 21
file q.0.r13247/24616
K 6
city.h
V 22
file 3q.0.r13169/68779
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.r13286/172023
K 11
diptreaty.h
V 20
file 3s.0.r9582/5141
K 9
effects.c
V 23
file 2eo.0.r13247/24841
K 9
effects.h
V 23
file 2ep.0.r13247/25307
K 8
events.c
V 22
file 33h.0.r13076/3198
K 8
events.h
V 22
file 3t.0.r13169/68553
K 10
fc_types.h
V 24
file 2ll.0.r13286/172259
K 6
game.c
V 23
file 3u.0.r13286/172493
K 6
game.h
V 23
file 3v.0.r13286/172722
K 19
generate_packets.py
V 21
file 2f4.0.r10337/244
K 12
government.c
V 22
file he.0.r13247/25540
K 12
government.h
V 22
file hf.0.r13136/24006
K 6
idex.c
V 23
file qo.0.r13024/189431
K 6
idex.h
V 21
file qp.0.r8119/15235
K 13
improvement.c
V 23
file vb.0.r13286/170622
K 13
improvement.h
V 23
file vc.0.r13286/170857
K 5
map.c
V 22
file r.0.r13046/120832
K 5
map.h
V 22
file 41.0.r13169/70765
K 10
movement.c
V 24
file 2xv.0.r13133/222814
K 10
movement.h
V 21
file 2xw.0.r12837/901
K 8
nation.c
V 22
file il.0.r13136/24703
K 8
nation.h
V 22
file im.0.r13227/10406
K 9
packets.c
V 21
file 43.0.r13232/5599
K 11
packets.def
V 22
file 2f5.0.r13232/5367
K 9
packets.h
V 22
file 44.0.r13068/16022
K 8
player.c
V 22
file 45.0.r13136/24240
K 8
player.h
V 22
file 46.0.r13136/24474
K 14
requirements.c
V 24
file 2wq.0.r13286/172949
K 14
requirements.h
V 23
file 2wr.0.r13247/26013
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.r13169/67171
K 12
specialist.h
V 23
file 33g.0.r13169/67406
K 6
team.c
V 23
file 33i.0.r13136/22843
K 6
team.h
V 23
file 33j.0.r13136/23073
K 6
tech.c
V 22
file t.0.r13286/171327
K 6
tech.h
V 22
file u.0.r13286/171793
K 9
terrain.c
V 23
file 2fp.0.r13219/43570
K 9
terrain.h
V 22
file qs.0.r13219/43804
K 6
tile.c
V 23
file 2ys.0.r13193/16413
K 6
tile.h
V 22
file 2yt.0.r12977/9717
K 6
unit.c
V 19
file v.0.r13209/710
K 6
unit.h
V 20
file 48.0.r13209/929
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.r13286/171091
K 10
unittype.h
V 23
file va.0.r13286/171559
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.r13286/175964
type: dir
pred: p.0.r13276/4417
count: 2339
text: 13286 173189 2762 2762 2232283bbd0d6da364a7d28ee843a62c
props: 12883 2571 96 0 2763e13ff5d021346ae24ff6c9ced232
cpath: /trunk/common
copyroot: 0 /

id: 2ek.0.r13286/176184
type: file
pred: 2ek.0.r13133/230979
count: 112
text: 13286 75889 9323 62394 2d20734dc0e5680b5a4f4dcff6d8b4e5
props: 11095 5259 111 0 09fa8b389220258550f0df17fa730769
cpath: /trunk/ai/advdiplomacy.c
copyroot: 0 /

id: 20.0.r13286/176422
type: file
pred: 20.0.r13247/29235
count: 271
text: 13286 155179 414 65060 5a6f184359aab98d6da7882629ad4d0e
props: 11069 16784 112 0 24b501182e64f7bbc4aaaa8b3f1d9020
cpath: /trunk/ai/aicity.c
copyroot: 0 /

id: 15o.0.r13286/176652
type: file
pred: 15o.0.r13219/48427
count: 92
text: 13286 155621 724 22923 f3d240ba603352cae2d0e7bf580388e5
props: 11074 729 111 0 995497afc7013c9f20b8d3ebef449f37
cpath: /trunk/ai/aidata.c
copyroot: 0 /

id: 16r.0.r13286/176881
type: file
pred: 16r.0.r13190/8864
count: 61
text: 13286 85973 400 24101 73ee3f4f50caa1592d6b03e49c2328fb
props: 10756 119 111 0 93121dcfd7714818c8d46f9c51a886fa
cpath: /trunk/ai/aidiplomat.c
copyroot: 0 /

id: 22.0.r13286/177112
type: file
pred: 22.0.r13219/48655
count: 127
text: 13286 158251 253 17865 14139da8b85e7e5e12788f6346ab9e4a
props: 10865 30805 112 0 8869376353a720fe76c0d512d1b8c326
cpath: /trunk/ai/aihand.c
copyroot: 0 /

id: 1u.0.r13286/177342
type: file
pred: 1u.0.r13144/312
count: 222
text: 13286 117065 970 52381 729decb64242b4f81579ce13dd38e18c
props: 10765 17515 112 0 ecd9c25ffd2014c732acffc1b3aab533
cpath: /trunk/ai/advmilitary.c
copyroot: 0 /

id: 15t.0.r13286/177575
type: file
pred: 15t.0.r13133/232837
count: 37
text: 13286 124754 379 10973 b9c62d6faa9db44a3bd8ae1f4ba2d731
props: 11074 1421 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/ai/ailog.c
copyroot: 0 /

id: 15u.0.r13286/177805
type: file
pred: 15u.0.r11697/14103
count: 17
text: 13286 133608 61 2539 2b8200255c71f25c4edb96a6e9d7545c
props: 11074 1769 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/ai/ailog.h
copyroot: 0 /

id: 36o.0.r13286/178032
type: file
pred: 36o.0.r13133/233066
count: 11
text: 13286 69258 238 11509 412dc567edaaf60a63c01fe31144fd92
props: 12670 94874 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/ai/aiparatrooper.c
copyroot: 0 /

id: 2lh.0.r13286/178269
type: file
pred: 2lh.0.r13164/1194
count: 35
text: 13286 159444 330 22014 cdb4bbfcf160e936d0b1d68a947865ae
props: 10865 31505 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/ai/aisettler.c
copyroot: 0 /

id: 24.0.r13286/178502
type: file
pred: 24.0.r13219/48884
count: 71
text: 13286 125162 2446 10607 fb69142ba5d827f8a8a02017c45d4200
props: 10913 82 111 0 a3a3251698e05efa35962766e5c7e5c1
cpath: /trunk/ai/aitech.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 21
file 5d.0.r11157/7524
K 14
advdiplomacy.c
V 24
file 2ek.0.r13286/176184
K 14
advdiplomacy.h
V 23
file 2el.0.r11249/25602
K 13
advdomestic.c
V 21
file 1m.0.r13167/2263
K 13
advdomestic.h
V 20
file 1n.0.r9681/4085
K 13
advmilitary.c
V 23
file 1u.0.r13286/177342
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.r13286/176422
K 8
aicity.h
V 22
file 21.0.r10755/56718
K 8
aidata.c
V 24
file 15o.0.r13286/176652
K 8
aidata.h
V 22
file 15p.0.r12764/1125
K 12
aidiplomat.c
V 24
file 16r.0.r13286/176881
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 21
file 2iw.0.r13224/540
K 9
aiferry.h
V 22
file 2ix.0.r13146/1787
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.r13286/177112
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.r13286/177575
K 7
ailog.h
V 24
file 15u.0.r13286/177805
K 15
aiparatrooper.c
V 24
file 36o.0.r13286/178032
K 15
aiparatrooper.h
V 23
file 36p.0.r12670/95202
K 11
aisettler.c
V 24
file 2lh.0.r13286/178269
K 11
aisettler.h
V 23
file 2li.0.r10181/11195
K 8
aitech.c
V 23
file 24.0.r13286/178502
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 20
file b.0.r13146/2010
K 8
aiunit.h
V 22
file c.0.r13133/230057
END
ENDREP
id: 8.0.r13286/180459
type: dir
pred: 8.0.r13247/31180
count: 1127
text: 13286 178729 1717 1717 783d0bf402b86ff6017f477737dfb0fd
props: 11108 11315 64 0 abac628483ea4fdfa3bea3a3a56e0532
cpath: /trunk/ai
copyroot: 0 /

id: 2m5.0.r13286/180677
type: file
pred: 2m5.0.r13219/51038
count: 31
text: 13286 95492 34 13448 b189a30e1bcd20659c58eae13c3ae6c5
props: 10836 16751 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/manual/civmanual.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 24
file 2m4.0.r13002/350808
K 11
civmanual.c
V 24
file 2m5.0.r13286/180677
END
ENDREP
id: 2m2.0.r13286/181024
type: dir
pred: 2m2.0.r13219/51384
count: 42
text: 13286 180913 98 98 82c5e1c73259c1bf6f1024691609c07c
props: 8143 8148 62 0 2b9cf7a0db52b94110accde14413565f
cpath: /trunk/manual
copyroot: 0 /

id: 2ym.0.r13286/181242
type: file
pred: 2ym.0.r13219/51600
count: 23
text: 13286 56468 1932 35349 c455caffad48d7de786376d327d464e8
props: 11057 36702 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /trunk/client/reqtree.c
copyroot: 0 /

id: 118.0.r13286/181478
type: file
pred: 118.0.r13134/2463
count: 111
text: 13286 99144 586 52238 e5f4cdfeccff349bd30277516bd91adf
props: 11057 38502 111 0 89e24921275908e1dbda216a065c4859
cpath: /trunk/client/gui-gtk-2.0/repodlgs.c
copyroot: 0 /

id: 36n.0.r13286/181726
type: file
pred: 36n.0.r13133/240215
count: 9
text: 13286 85294 241 25425 94ec4462f018a0f464940bf9a2dd9eba
props: 11088 8800 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/client/gui-gtk-2.0/diplomat_dialog.c
copyroot: 0 /

id: 10a.0.r13286/181980
type: file
pred: 10a.0.r13133/240470
count: 43
text: 13286 158533 357 29114 a41e08c6b5a503860aa608232b52d2fe
props: 11093 473 111 0 7a0697bf766451f41e947e71ce1310bc
cpath: /trunk/client/gui-gtk-2.0/diplodlg.c
copyroot: 0 /

id: 10u.0.r13286/182228
type: file
pred: 10u.0.r13038/2043901
count: 28
text: 13286 158920 412 11985 5284ea0475db9031b709471ef3994c25
props: 11054 96 111 0 0b146d6d431c2ad00452618c43381276
cpath: /trunk/client/gui-gtk-2.0/inteldlg.c
copyroot: 0 /

id: 10q.0.r13286/182476
type: file
pred: 10q.0.r13219/51833
count: 78
text: 13286 96099 3016 43786 c583ca8276ab38dc8916c87bc71494e1
props: 10865 34829 111 0 a3a3251698e05efa35962766e5c7e5c1
cpath: /trunk/client/gui-gtk-2.0/helpdlg.c
copyroot: 0 /

id: 115.0.r13286/182724
type: file
pred: 115.0.r13133/240964
count: 78
text: 13286 27143 562 27916 322e5daeef19004f23c917d583aa7a20
props: 11057 41078 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /trunk/client/gui-gtk-2.0/plrdlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file zu.0.r13227/14742
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 23
file 108.0.r13169/75643
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 24
file 10a.0.r13286/181980
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 24
file 36n.0.r13286/181726
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 23
file 10k.0.r13227/14092
K 10
gui_main.h
V 23
file 10l.0.r13227/14336
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.r13286/182476
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 24
file 10u.0.r13286/182228
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 22
file 10z.0.r13134/2707
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.r13286/182724
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.r13286/181478
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 11
theme_dlg.c
V 23
file 47d.0.r13227/14579
K 8
themes.c
V 23
file 34x.0.r13227/13852
K 13
tileset_dlg.c
V 22
file 45i.0.r13195/1683
K 7
wldlg.c
V 23
file 11e.0.r13247/31630
K 7
wldlg.h
V 21
file 11f.0.r7682/2202
END
ENDREP
id: zs.0.r13286/186342
type: dir
pred: zs.0.r13247/35242
count: 1004
text: 13286 182971 3358 3358 f433b6b3dd32daf6152e45edaee2facb
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-2.0
copyroot: 0 /

id: ay.0.r13286/186578
type: file
pred: ay.0.r13212/4920
count: 88
text: 13286 86400 3565 47899 de547a39ec84aa3143ee7c54fe700881
props: 10957 5571 111 0 04c7a6fe9bf3a5db3539a62041388438
cpath: /trunk/client/gui-xaw/repodlgs.c
copyroot: 0 /

id: 37p.0.r13286/186819
type: file
pred: 37p.0.r13133/246899
count: 8
text: 13286 161394 1460 26846 89e6fe4062685bd2585340e4e6baf6f2
props: 12670 103088 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-xaw/diplomat_dialog.c
copyroot: 0 /

id: a8.0.r13286/187072
type: file
pred: a8.0.r13133/247151
count: 46
text: 13286 133771 1298 31008 4d1ab594f025253f0718045b31179b44
props: 10442 1972 111 0 8ba011ca1ef4e408ab91a853a48e15eb
cpath: /trunk/client/gui-xaw/diplodlg.c
copyroot: 0 /

id: ai.0.r13286/187316
type: file
pred: ai.0.r13133/247635
count: 35
text: 13286 148735 342 16333 84ba362c8f09faa48bc1ed3a241b5725
props: 10696 129 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/client/gui-xaw/inteldlg.c
copyroot: 0 /

id: af.0.r13286/187558
type: file
pred: af.0.r13219/55629
count: 80
text: 13286 36645 5054 37434 d0d4b61227efb8396557f432d31ecc0f
props: 10882 3426 111 0 10d822456e37f81dabb45dad0c15b842
cpath: /trunk/client/gui-xaw/helpdlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file bq.0.r12315/62787
K 9
actions.c
V 22
file nt.0.r13221/16529
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 21
file 9w.0.r13212/4211
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.r13148/376
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 22
file a6.0.r13227/18587
K 9
dialogs.h
V 21
file a7.0.r10882/3191
K 10
diplodlg.c
V 23
file a8.0.r13286/187072
K 10
diplodlg.h
V 20
file a9.0.r2187/7955
K 17
diplomat_dialog.c
V 24
file 37p.0.r13286/186819
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 21
file bm.0.r13181/4259
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.r13286/187558
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.r13286/187316
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.r13212/4446
K 9
mapview.h
V 21
file am.0.r13212/4684
K 6
menu.c
V 22
file an.0.r13221/16765
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.r13286/186578
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.r13286/190792
type: dir
pred: 9o.0.r13227/21815
count: 826
text: 13286 187799 2980 2980 db153ca1cc1f9e10d46140b1053fead0
props: 11108 12237 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-xaw
copyroot: 0 /

id: yq.0.r13286/191023
type: file
pred: yq.0.r13133/252315
count: 63
text: 13286 121526 551 30844 17432ef873ff0e5628c20f212d52f2b8
props: 10883 3315 111 0 93646be3752db5a3cd8e77177837d494
cpath: /trunk/client/gui-win32/repodlgs.c
copyroot: 0 /

id: xu.0.r13286/191268
type: file
pred: xu.0.r13227/23778
count: 90
text: 13286 90202 615 56890 5f215d86c41796f42e59ecfff812ab1c
props: 10989 3964 111 0 8264fa93116f43c430f41dcf0da62390
cpath: /trunk/client/gui-win32/dialogs.c
copyroot: 0 /

id: xw.0.r13286/191510
type: file
pred: xw.0.r13133/253047
count: 32
text: 13286 69 25630 25612 175d600815be4e7f05b37b5d5565b06d
props: 10411 156138 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/client/gui-win32/diplodlg.c
copyroot: 0 /

id: yb.0.r13286/191755
type: file
pred: yb.0.r13046/138495
count: 18
text: 13286 26572 539 5459 d3fe61b57f963789f5645bd1685ad2de
props: 10736 12122 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/gui-win32/inteldlg.c
copyroot: 0 /

id: y7.0.r13286/191999
type: file
pred: y7.0.r13219/59084
count: 55
text: 13286 122107 2357 29934 3315b5c449f00d7c2dd2363bedddd331
props: 10989 4683 111 0 fd48e7132065a890e4a210dc3646defe
cpath: /trunk/client/gui-win32/helpdlg.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.r13286/191268
K 9
dialogs.h
V 21
file xv.0.r10883/4520
K 10
diplodlg.c
V 23
file xw.0.r13286/191510
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.r13140/18950
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.r13286/191999
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.r13286/191755
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.r13286/191023
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.r13286/194992
type: dir
pred: np.0.r13227/26765
count: 597
text: 13286 192243 2736 2736 661ba09dce526143b4cbf0b8c9ae808a
props: 11108 12557 68 0 fbaef5f6348d6ae4b0cc177104ca4ad2
cpath: /trunk/client/gui-win32
copyroot: 0 /

id: n.0.r13286/195225
type: file
pred: n.0.r13232/8814
count: 612
text: 13286 159801 1562 95832 7b736e7db00eb8927b37d122306e1bf4
props: 11088 14698 112 0 2c9d3e41a2f20488aa9cdb8d740d094e
cpath: /trunk/client/packhand.c
copyroot: 0 /

id: 191.0.r13286/195459
type: file
pred: 191.0.r13128/94
count: 47
text: 13286 148594 117 22717 bae00bba864016161ac7a5ef9823739d
props: 10141 49776 111 0 0b146d6d431c2ad00452618c43381276
cpath: /trunk/client/gui-sdl/gui_tilespec.c
copyroot: 0 /

id: 18i.0.r13286/195705
type: file
pred: 18i.0.r13219/62304
count: 95
text: 13286 153542 1609 108385 600dc46b32258499651618c6562bc6d6
props: 10779 68322 111 0 622f1432038f91cce287c1d90e4f7964
cpath: /trunk/client/gui-sdl/repodlgs.c
copyroot: 0 /

id: 3bn.0.r13286/195952
type: file
pred: 3bn.0.r13133/259187
count: 24
text: 13286 100414 8434 44313 349a9cebc6dc7905dbfa06528f03fa6d
props: 12670 114091 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-sdl/diplomat_dialog.c
copyroot: 0 /

id: 17c.0.r13286/196206
type: file
pred: 17c.0.r13133/259441
count: 46
text: 13286 41729 1767 52916 859e58bc53dc08a51e012827891d444b
props: 10411 163500 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /trunk/client/gui-sdl/diplodlg.c
copyroot: 0 /

id: 183.0.r13286/196453
type: file
pred: 183.0.r13046/144655
count: 41
text: 13286 56088 350 13700 1ccef7fd3ada3c1938c7ac38baa8bb00
props: 10411 163869 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/gui-sdl/inteldlg.c
copyroot: 0 /

id: 17z.0.r13286/196699
type: file
pred: 17z.0.r13219/62548
count: 50
text: 13286 149106 4407 61306 ffa0cf8705b8aaecbd593098ec51c6b6
props: 10411 164601 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /trunk/client/gui-sdl/helpdlg.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 23
file 17a.0.r13227/26996
K 9
dialogs.h
V 23
file 17b.0.r12387/13707
K 10
diplodlg.c
V 24
file 17c.0.r13286/196206
K 10
diplodlg.h
V 22
file 17d.0.r11584/2869
K 17
diplomat_dialog.c
V 24
file 3bn.0.r13286/195952
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 23
file 17f.0.r13151/94458
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 22
file 17o.0.r13181/7716
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 24
file 191.0.r13286/195459
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.r13286/196699
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.r13286/196453
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.r13286/195705
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.r13286/201752
type: dir
pred: 16t.0.r13227/32038
count: 441
text: 13286 196945 4794 4794 281996a6f8851b72e501e29253972c6e
props: 11108 12869 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-sdl
copyroot: 0 /

id: h1.0.r13286/201985
type: file
pred: h1.0.r13219/67822
count: 159
text: 13286 68216 964 50674 f465a16e3894e5480496be2b8b9f421a
props: 10865 39466 112 0 7c92b74246787b3b87930d3304880700
cpath: /trunk/client/helpdata.c
copyroot: 0 /

id: ls.0.r13286/202220
type: file
pred: ls.0.r13133/270148
count: 45
text: 13286 31509 1942 27489 b80c6fcba589e55c810df4743299824c
props: 10779 76662 111 0 2e2357461112b5dbc5fe4daab6abde1a
cpath: /trunk/client/gui-mui/repodlgs.c
copyroot: 0 /

id: kx.0.r13286/202464
type: file
pred: kx.0.r13133/270637
count: 68
text: 13286 156376 1844 55232 d8f5e64fd26b0761e68c149412470a71
props: 10411 175880 111 0 e77f29e20031f26b4b1e16b63c7aa55c
cpath: /trunk/client/gui-mui/dialogs.c
copyroot: 0 /

id: kz.0.r13286/202709
type: file
pred: kz.0.r13133/270881
count: 24
text: 13286 92549 1857 27825 391ba6e0c81edfd8f5f4ab22231fa019
props: 10411 176246 111 0 5515c59917848b493fbf45ffb42836b3
cpath: /trunk/client/gui-mui/diplodlg.c
copyroot: 0 /

id: lb.0.r13286/202954
type: file
pred: lb.0.r13046/154646
count: 18
text: 13286 95555 327 6100 57fe7974f902e43c4b0e0cfe6fd7056f
props: 10411 176611 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/gui-mui/inteldlg.c
copyroot: 0 /

id: l9.0.r13286/203197
type: file
pred: l9.0.r13133/271367
count: 50
text: 13286 27809 3670 32802 67cc71868ed880b147261b4750590548
props: 10702 55433 111 0 14533b38c2d22fb145a05b253c8fb2e8
cpath: /trunk/client/gui-mui/helpdlg.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.r13286/202464
K 9
dialogs.h
V 20
file ky.0.r2899/5409
K 10
diplodlg.c
V 23
file kz.0.r13286/202709
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.r13286/203197
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.r13286/202954
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.r13286/202220
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.r13286/206476
type: dir
pred: km.0.r13133/275376
count: 408
text: 13286 203440 3023 3023 61419cba770736b2e3ddb8284bd1f6b3
props: 11108 13513 41 0 a25f21b3aa3ce56d05ef272a98288297
cpath: /trunk/client/gui-mui
copyroot: 0 /

id: hl.0.r13286/206708
type: file
pred: hl.0.r13227/35714
count: 375
text: 13286 92011 509 160332 48a72284871937799843d47ca5f76ca6
props: 11096 3792 112 0 71c6b453a620995957914f193a952f13
cpath: /trunk/client/tilespec.c
copyroot: 0 /

id: i6.0.r13286/206943
type: file
pred: i6.0.r13169/89304
count: 175
text: 13286 95410 54 9346 74c7fb2ed04367d310a209e735078686
props: 11011 1634 112 0 2772e2600f52d1215973b0ec3802f304
cpath: /trunk/client/tilespec.h
copyroot: 0 /

id: 2f.0.r13286/207175
type: file
pred: 2f.0.r13046/158886
count: 247
text: 13286 0 45 23273 8d126469c30ae27668da4c79d9c58c01
props: 11057 49359 112 0 8c6f7f683a6ec7c52de63742b923ac5a
cpath: /trunk/client/civclient.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 21
file 139.0.r13173/478
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 22
file z4.0.r13247/31395
K 16
citydlg_common.h
V 22
file z5.0.r13169/75172
K 13
cityrepdata.c
V 20
file mb.0.r13284/364
K 13
cityrepdata.h
V 21
file mc.0.r9153/21475
K 11
civclient.c
V 23
file 2f.0.r13286/207175
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 22
file gz.0.r13169/75410
K 9
control.h
V 22
file i2.0.r13169/79393
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 22
dir 2k2.0.r13227/35013
K 11
gui-gtk-2.0
V 22
dir zs.0.r13286/186342
K 7
gui-mui
V 22
dir km.0.r13286/206476
K 7
gui-sdl
V 23
dir 16t.0.r13286/201752
K 8
gui-stub
V 21
dir mh.0.r13227/38481
K 9
gui-win32
V 22
dir np.0.r13286/194992
K 7
gui-xaw
V 22
dir 9o.0.r13286/190792
K 10
helpdata.c
V 23
file h1.0.r13286/201985
K 10
helpdata.h
V 22
file i3.0.r11595/12124
K 7
include
V 21
dir b8.0.r13227/23550
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 22
file dc.0.r13227/38711
K 9
options.h
V 22
file i4.0.r13227/13625
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.r13286/195225
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 23
file 11i.0.r13247/35476
K 17
repodlgs_common.h
V 23
file 11j.0.r10846/16483
K 9
reqtree.c
V 24
file 2ym.0.r13286/181242
K 9
reqtree.h
V 22
file 2yn.0.r13134/2234
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 23
file 352.0.r13227/35243
K 15
themes_common.h
V 23
file 353.0.r13227/35479
K 10
tilespec.c
V 23
file hl.0.r13286/206708
K 10
tilespec.h
V 23
file i6.0.r13286/206943
END
ENDREP
id: d.0.r13286/210684
type: dir
pred: d.0.r13284/3861
count: 4136
text: 13286 207407 3264 3264 a8f95d67e5d5c38d8f0d40da02a81996
props: 12883 2898 109 0 732f4656541fb514e4368d9517bdf317
cpath: /trunk/client
copyroot: 0 /

PLAIN
K 9
ABOUT-NLS
V 22
file fu.0.r13215/85704
K 7
AUTHORS
V 19
file 5u.0.r12982/94
K 7
COPYING
V 19
file 1h.0.r9643/400
K 9
ChangeLog
V 22
file 6l.0.r4863/510676
K 7
INSTALL
V 20
file 6.0.r13278/1953
K 11
Makefile.am
V 21
file 59.0.r13243/2336
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.r13286/180459
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.r13286/210684
K 6
common
V 21
dir p.0.r13286/175964
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 23
file 149.0.r13215/85479
K 4
data
V 20
dir w.0.r13193/15736
K 6
debian
V 19
dir 5w.0.r7821/9259
K 12
dependencies
V 21
dir 2yu.0.r13275/3284
K 11
diff_ignore
V 19
file qq.0.r13200/42
K 3
doc
V 20
dir k7.0.r13245/4710
K 4
intl
V 21
dir f4.0.r11105/23499
K 2
m4
V 21
dir 12p.0.r13243/1904
K 6
manual
V 23
dir 2m2.0.r13286/181024
K 2
po
V 22
dir fs.0.r13280/872126
K 7
scripts
V 20
dir 2yo.0.r11849/885
K 6
server
V 21
dir z.0.r13286/170404
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.r13270/4163
K 10
version.in
V 22
file 2lo.0.r13243/2117
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.r13286/212205
type: dir
pred: 3.0.r13284/5370
count: 11139
text: 13286 210905 1287 1287 6f989ebaf83c64cde13090bd1e3edd66
props: 11109 0 255 0 8cbc80e0da9c47b05b8ffee17ea9b0f1
cpath: /trunk
copyroot: 0 /

PLAIN
K 8
branches
V 19
dir 1.0.r13285/6117
K 4
tags
V 19
dir 2.0.r12895/2647
K 5
trunk
V 21
dir 3.0.r13286/212205
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r13286/212579
type: dir
pred: 0.0.r13285/6431
count: 13286
text: 13286 212417 149 149 2be8282272de0ed7ca4ad5188288f8e7
cpath: /
copyroot: 0 /

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

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

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

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

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

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

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

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

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

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

lb.0.t13285-1 modify true false /trunk/client/gui-mui/inteldlg.c

2f.0.t13285-1 modify true false /trunk/client/civclient.c

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

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

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

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

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

t.0.t13285-1 modify true false /trunk/common/tech.c

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

af.0.t13285-1 modify true false /trunk/client/gui-xaw/helpdlg.c

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

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

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

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

2ym.0.t13285-1 modify true false /trunk/client/reqtree.c

24.0.t13285-1 modify true false /trunk/ai/aitech.c

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

191.0.t13285-1 modify true false /trunk/client/gui-sdl/gui_tilespec.c

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

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

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

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

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

33d.0.t13285-1 modify true false /trunk/server/scripting/api_methods.c

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

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

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

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

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

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

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

10u.0.t13285-1 modify true false /trunk/client/gui-gtk-2.0/inteldlg.c

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

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

2m5.0.t13285-1 modify true false /trunk/manual/civmanual.c

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

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

32c.0.t13285-1 modify true false /trunk/server/scripting/api_actions.c

10q.0.t13285-1 modify true false /trunk/client/gui-gtk-2.0/helpdlg.c

vc.0.t13285-1 modify true false /trunk/common/improvement.h

yb.0.t13285-1 modify true false /trunk/client/gui-win32/inteldlg.c

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

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

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

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

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

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

y7.0.t13285-1 modify true false /trunk/client/gui-win32/helpdlg.c

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

183.0.t13285-1 modify true false /trunk/client/gui-sdl/inteldlg.c

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

15u.0.t13285-1 modify true false /trunk/ai/ailog.h

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

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

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

17z.0.t13285-1 modify true false /trunk/client/gui-sdl/helpdlg.c

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

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

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

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


212579 212730
