Complete.Org: Mailing Lists: Archives: freeciv-dev: July 2005:
[Freeciv-Dev] 2.0.3
Home

[Freeciv-Dev] 2.0.3

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Freeciv-Dev <freeciv-dev@xxxxxxxxxxx>
Subject: [Freeciv-Dev] 2.0.3
From: Jason Dorje Short <jdorje@xxxxxxxxxxxx>
Date: Fri, 01 Jul 2005 17:58:48 -0400

Attached is the diff between 2.0.2 and the current S2_0.

As you can see there are lots of bugfixes.  However some of the tech
changes may go to far.  In particular I fear the introduction of bugs
with future techs.

I think a beta release for 2.0.3 is warranted but we need people to
test.  Again, in particular future techs need to be tested so somebody
needs to play through a full game.  There shouldn't be any team issues
but there could be problems with huts, tech trading, etc.  It's
unlikely, but possible.

So, I am making a 2.0.3-beta release.  Please report back successes as
well as failures you find in this release.

-jason
Index: common/tech.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/common/tech.c,v
retrieving revision 1.76.2.6
retrieving revision 1.76.2.7
diff -u -r1.76.2.6 -r1.76.2.7
--- common/tech.c       31 Mar 2005 17:37:58 -0000      1.76.2.6
+++ common/tech.c       29 Jun 2005 08:30:29 -0000      1.76.2.7
@@ -52,7 +52,7 @@
 enum tech_state get_invention(const struct player *pplayer,
                              Tech_Type_id tech)
 {
-  assert(tech >= 0 || tech < game.num_tech_types);
+  assert(tech >= 0);
 
   return pplayer->research.inventions[tech].state;
 }
@@ -186,12 +186,18 @@
 }
 
 /**************************************************************************
-  Marks reachable techs. Calls build_required_techs to update the
-  cache of requirements.
+  Mark as TECH_REACHABLE each tech which is available, not known and
+  which has all requirements fullfiled.
+  If there is no such a tech mark A_FUTURE as researchable.
+  
+  Recalculate research->num_known_tech_with_flag
+  Should be called always after set_invention()
+
 **************************************************************************/
 void update_research(struct player *pplayer)
 {
   enum tech_flag_id flag;
+  int researchable = 0;
 
   tech_type_iterate(i) {
     if (i == A_NONE) {
@@ -209,11 +215,18 @@
          && get_invention(pplayer, advances[i].req[0]) == TECH_KNOWN
          && get_invention(pplayer, advances[i].req[1]) == TECH_KNOWN) {
        set_invention(pplayer, i, TECH_REACHABLE);
+       researchable++;
       }
     }
     build_required_techs(pplayer, i);
   } tech_type_iterate_end;
 
+  /* No techs we can research? Mark A_FUTURE as researchable */
+  if (researchable == 0) {
+    set_invention(pplayer, A_FUTURE, TECH_REACHABLE);
+  }
+
+
   for (flag = 0; flag < TF_LAST; flag++) {
     pplayer->research.num_known_tech_with_flag[flag] = 0;
 
Index: common/unit.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/common/unit.c,v
retrieving revision 1.219.2.5
retrieving revision 1.219.2.6
diff -u -r1.219.2.5 -r1.219.2.6
--- common/unit.c       11 Mar 2005 00:30:32 -0000      1.219.2.5
+++ common/unit.c       17 Jun 2005 22:11:31 -0000      1.219.2.6
@@ -1558,7 +1558,8 @@
     /* 7) */
     if (!is_ocean(ptotile->terrain)
        && ptotile->terrain != T_UNKNOWN
-       && !is_allied_city_tile(ptotile, unit_owner)) {
+       && (!is_allied_city_tile(ptotile, unit_owner)
+           || !is_ocean_near_tile(ptotile))) {
       return MR_DESTINATION_OCCUPIED_BY_NON_ALLIED_CITY;
     }
   }
Index: server/citytools.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/citytools.c,v
retrieving revision 1.276.2.11
retrieving revision 1.276.2.12
diff -u -r1.276.2.11 -r1.276.2.12
--- server/citytools.c  1 Apr 2005 00:42:29 -0000       1.276.2.11
+++ server/citytools.c  29 Jun 2005 02:17:54 -0000      1.276.2.12
@@ -256,7 +256,7 @@
 bool is_allowed_city_name(struct player *pplayer, const char *city_name,
                          char *error_buf, size_t bufsz)
 {
-  struct connection *pconn;
+  struct connection *pconn = find_conn_by_user(pplayer->username);
 
   /* Mode 1: A city name has to be unique for each player. */
   if (game.allowed_city_names == 1 &&
@@ -316,8 +316,7 @@
    * original nation are exhausted and the backup nations have non-ascii
    * names in them. */
   if (!is_ascii_name(city_name)
-      && (pconn = find_conn_by_user(pplayer->username))
-      && pconn->access_level != ALLOW_HACK) {
+      && (!pconn || pconn->access_level != ALLOW_HACK)) {
     if (error_buf) {
       my_snprintf(error_buf, bufsz,
                  _("%s is not a valid name. Only ASCII or "
Index: server/maphand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/maphand.c,v
retrieving revision 1.149.2.3
retrieving revision 1.149.2.4
diff -u -r1.149.2.3 -r1.149.2.4
--- server/maphand.c    15 Feb 2005 17:41:58 -0000      1.149.2.3
+++ server/maphand.c    28 Jun 2005 17:50:03 -0000      1.149.2.4
@@ -1639,6 +1639,12 @@
 *************************************************************************/
 static void map_update_borders_recalculate_position(struct tile *ptile)
 {
+  struct city_list cities_to_refresh;
+  
+  if (game.happyborders > 0) {
+    city_list_init(&cities_to_refresh);
+  }
+  
   if (game.borders > 0) {
     iterate_outward(ptile, game.borders, tile1) {
       struct city *pccity = map_get_closest_city(tile1);
@@ -1651,9 +1657,42 @@
         * before; it's not stored in the playermap. */
        send_tile_info(NULL, tile1);
        tile_update_owner(tile1);
+       /* Update happiness */
+       if (game.happyborders > 0) {
+         unit_list_iterate(tile1->units, unit) {
+           struct city* homecity = find_city_by_id(unit->homecity);
+           bool already_listed = FALSE;
+           
+           if (!homecity) {
+             continue;
+           }
+           
+           city_list_iterate(cities_to_refresh, city2) {
+             if (city2 == homecity) {
+               already_listed = TRUE;
+               break;
+             }
+           } city_list_iterate_end;
+           
+           if (!already_listed) {
+             city_list_insert(&cities_to_refresh, homecity);
+           }
+
+         } unit_list_iterate_end;
+       }
       }
     } iterate_outward_end;
   }
+ 
+  /* Update happiness in all homecities we have collected */ 
+  if (game.happyborders > 0) {
+    city_list_iterate(cities_to_refresh, to_refresh) {
+      city_refresh(to_refresh);
+      send_city_info(city_owner(to_refresh), to_refresh);
+    } city_list_iterate_end;
+    
+    city_list_unlink_all(&cities_to_refresh);
+  }
 }
 
 /*************************************************************************
Index: server/plrhand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/plrhand.c,v
retrieving revision 1.330.2.23
retrieving revision 1.330.2.29
diff -u -r1.330.2.23 -r1.330.2.29
--- server/plrhand.c    10 Jun 2005 02:45:23 -0000      1.330.2.23
+++ server/plrhand.c    29 Jun 2005 03:32:43 -0000      1.330.2.29
@@ -270,7 +270,7 @@
 {
   bool bonus_tech_hack = FALSE;
   bool was_first = FALSE;
-  bool had_embassy[MAX_NUM_PLAYERS];
+  bool had_embassy[MAX_NUM_PLAYERS + MAX_NUM_BARBARIANS];
   struct city *pcity;
 
   players_iterate(aplr) {
@@ -615,11 +615,15 @@
 **************************************************************************/
 void choose_tech(struct player *plr, int tech)
 {
-  if (plr->research.researching==tech)
+  if (plr->research.researching == tech) {
     return;
-  if (get_invention(plr, tech)!=TECH_REACHABLE) { /* can't research this */
+  }
+
+  if (tech != A_FUTURE && get_invention(plr, tech) != TECH_REACHABLE) { 
+    /* can't research this */
     return;
   }
+  
   if (!plr->got_tech && plr->research.changed_from == -1) {
     plr->research.bulbs_researched_before = plr->research.bulbs_researched;
     plr->research.changed_from = plr->research.researching;
@@ -817,6 +821,14 @@
 **************************************************************************/
 void handle_player_research(struct player *pplayer, int tech)
 {
+  if (tech != A_FUTURE && !tech_exists(tech)) {
+    return;
+  }
+  
+  if (tech != A_FUTURE && get_invention(pplayer, tech) != TECH_REACHABLE) {
+    return;
+  }
+
   /* choose_tech and send update for all players on the team. */
   players_iterate(aplayer) {
     if (pplayer == aplayer
@@ -833,6 +845,22 @@
 **************************************************************************/
 void handle_player_tech_goal(struct player *pplayer, int tech)
 {
+  if (tech != A_FUTURE && !tech_exists(tech)) {
+    return;
+  }
+  
+  if (tech != A_FUTURE && !tech_is_available(pplayer, tech)) {
+    return;
+  }
+
+  if (tech == A_NONE) {
+    /* A_NONE "exists" but is not allowed as a tech goal.  A_UNSET should
+     * be used instead.  However the above checks may prevent the client from
+     * ever setting the goal to A_UNSET, meaning once a goal is set it
+     * can't be removed. */
+    return;
+  }
+
   choose_tech_goal(pplayer, tech);
   send_player_info(pplayer, pplayer);
 
Index: server/savegame.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/savegame.c,v
retrieving revision 1.197.2.14
retrieving revision 1.197.2.15
diff -u -r1.197.2.14 -r1.197.2.15
--- server/savegame.c   3 May 2005 03:21:36 -0000       1.197.2.14
+++ server/savegame.c   25 Jun 2005 08:08:32 -0000      1.197.2.15
@@ -482,45 +482,62 @@
 ***************************************************************/
 static void map_startpos_load(struct section_file *file)
 {
-  int i;
-
-  for (i = 0; secfile_lookup_int_default(file, -1, "map.r%dsx", i) != -1;
-       i++) {
+  int savegame_start_positions;
+  int i, j;
+  int nation_id;
+  int nat_x, nat_y;
+  
+  for (savegame_start_positions = 0;
+       secfile_lookup_int_default(file, -1, "map.r%dsx",
+                                  savegame_start_positions) != -1;
+       savegame_start_positions++) {
     /* Nothing. */
   }
+  
+  
+  {
+    struct start_position start_positions[savegame_start_positions];
+    
+    for (i = j = 0; i < savegame_start_positions; i++) {
+      char *nation = secfile_lookup_str_default(file, NULL, "map.r%dsnation",
+                                                i);
+
+      if (nation == NULL) {
+        /* Starting positions in normal games are saved without nation.
+          Just ignore it */
+       continue;
+      }
+      
+      nation_id = find_nation_by_name_orig(nation);
+      if (nation_id == NO_NATION_SELECTED) {
+       freelog(LOG_NORMAL,
+               _("Warning: Unknown nation %s for starting position no %d"),
+               nation,
+               i);
+       continue;
+      }
+      
+      nat_x = secfile_lookup_int(file, "map.r%dsx", i);
+      nat_y = secfile_lookup_int(file, "map.r%dsy", i);
 
-  map.num_start_positions = i;
-  if (map.num_start_positions == 0) {
-    /* This scenario has no preset start positions. */
-    return;
-  }
-
-  map.start_positions = fc_realloc(map.start_positions,
-                                  map.num_start_positions
-                                  * sizeof(*map.start_positions));
-  for (i = 0; i < map.num_start_positions; i++) {
-    int nat_x, nat_y;
-    char *nation = secfile_lookup_str_default(file, NULL, "map.r%dsnation",
-                                             i);
-
-    nat_x = secfile_lookup_int(file, "map.r%dsx", i);
-    nat_y = secfile_lookup_int(file, "map.r%dsy", i);
-
-    map.start_positions[i].tile = native_pos_to_tile(nat_x, nat_y);
-
-    if (nation) {
-      /* This will fall back to NO_NATION_SELECTED if the string doesn't
-       * match any nation. */
-      map.start_positions[i].nation = find_nation_by_name_orig(nation);
-    } else {
-      /* Old-style nation ordering is useless to us because the nations
-       * have been reordered.  Just ignore it and order the nations
-       * randomly. */
-      map.start_positions[i].nation = NO_NATION_SELECTED;
+      start_positions[j].tile = native_pos_to_tile(nat_x, nat_y);
+      start_positions[j].nation = nation_id;
+      j++;
+    }
+    map.num_start_positions = j;
+    if (map.num_start_positions > 0) {
+      map.start_positions = fc_realloc(map.start_positions,
+                                      map.num_start_positions
+                                      * sizeof(*map.start_positions));
+      for (i = 0; i < j; i++) {
+        map.start_positions[i] = start_positions[i];
+      }
     }
   }
+  
 
-  if (map.num_start_positions < game.max_players) {
+  if (map.num_start_positions
+      && map.num_start_positions < game.max_players) {
     freelog(LOG_VERBOSE,
            _("Number of starts (%d) are lower than max_players (%d),"
              " lowering max_players."),
Index: server/sernet.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/sernet.c,v
retrieving revision 1.123.2.6
retrieving revision 1.123.2.7
diff -u -r1.123.2.6 -r1.123.2.7
--- server/sernet.c     16 Dec 2004 23:27:34 -0000      1.123.2.6
+++ server/sernet.c     23 Jun 2005 20:35:46 -0000      1.123.2.7
@@ -577,12 +577,10 @@
       char buf[BUF_SIZE+1];
       char *buf_internal;
       
-      if((didget=read(0, buf, BUF_SIZE))==-1) {
-       die("read from stdin failed");
-      }
-
-      if(didget==0) {
+      didget = read(0, buf, BUF_SIZE);
+      if (didget <= 0) {
         handle_stdin_close();
+       didget = 0; /* Avoid buffer underrun below. */
       }
 
       *(buf+didget)='\0';
Index: server/srv_main.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/srv_main.c,v
retrieving revision 1.201.2.10
retrieving revision 1.201.2.11
diff -u -r1.201.2.10 -r1.201.2.11
--- server/srv_main.c   16 Jan 2005 02:36:35 -0000      1.201.2.10
+++ server/srv_main.c   29 Jun 2005 02:17:54 -0000      1.201.2.11
@@ -1054,6 +1054,8 @@
                                   const char *name,
                                   char *error_buf, size_t bufsz)
 {
+  struct connection *pconn = find_conn_by_user(pplayer->username);
+
   /* An empty name is surely not allowed. */
   if (strlen(name) == 0) {
     if (error_buf) {
@@ -1099,8 +1101,10 @@
   /* To prevent abuse, only players with HACK access (usually local
    * connections) can use non-ascii names.  Otherwise players could use
    * confusing garbage names in multi-player games. */
+    /* FIXME: is there a better way to determine if a *player* has hack
+     * access? */
   if (!is_ascii_name(name)
-      && find_conn_by_user(pplayer->username)->access_level != ALLOW_HACK) {
+      && (!pconn || pconn->access_level != ALLOW_HACK)) {
     if (error_buf) {
       my_snprintf(error_buf, bufsz, _("Please choose a name containing "
                                      "only ASCII characters."));
Index: server/stdinhand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/stdinhand.c,v
retrieving revision 1.354.2.35
retrieving revision 1.354.2.37
diff -u -r1.354.2.35 -r1.354.2.37
--- server/stdinhand.c  26 May 2005 04:49:33 -0000      1.354.2.35
+++ server/stdinhand.c  27 Jun 2005 14:27:13 -0000      1.354.2.37
@@ -2060,7 +2060,7 @@
   int ntokens = 0, i;
   bool res = FALSE;
 
-  if (server_state != PRE_GAME_STATE) {
+  if (server_state != PRE_GAME_STATE || !game.is_new_game) {
     cmd_reply(CMD_TEAM, caller, C_SYNTAX,
               _("Cannot change teams once game has begun."));
     return FALSE;
@@ -2137,7 +2137,7 @@
   if (caller == NULL || caller->player == NULL) {
     cmd_reply(CMD_VOTE, caller, C_FAIL, _("This command is client only."));
     return FALSE;
-  } else if (caller->player->is_observer) {
+  } else if (caller->player->is_observer || caller->observer) {
     cmd_reply(CMD_VOTE, caller, C_FAIL, _("Observers cannot vote."));
     return FALSE;
   } else if (!str || strlen(str) == 0) {
Index: server/unittools.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/unittools.c,v
retrieving revision 1.306.2.14
retrieving revision 1.306.2.15
diff -u -r1.306.2.14 -r1.306.2.15
--- server/unittools.c  6 Jun 2005 19:03:29 -0000       1.306.2.14
+++ server/unittools.c  26 Jun 2005 11:15:08 -0000      1.306.2.15
@@ -2542,7 +2542,7 @@
   struct city *homecity = NULL;
   struct player *pplayer = unit_owner(punit);
   /*  struct government *g = get_gov_pplayer(pplayer);*/
-  bool senthome = FALSE;
+  bool refresh_homecity = FALSE;
 
   if (punit->homecity != 0)
     homecity = find_city_by_id(punit->homecity);
@@ -2566,37 +2566,34 @@
       }
 
       if (homecity) {
-       city_refresh(homecity);
-       send_city_info(pplayer, homecity);
+        refresh_homecity = TRUE;
       }
-      senthome = TRUE;
     }
 
     if (fromcity) { /* leaving a city */
-      if (!senthome && homecity) {
-       city_refresh(homecity);
-       send_city_info(pplayer, homecity);
+      if (homecity) {
+       refresh_homecity = TRUE;
       }
       if (fromcity != homecity && fromcity->owner == punit->owner) {
        city_refresh(fromcity);
        send_city_info(pplayer, fromcity);
       }
-      senthome = TRUE;
     }
 
-    /* entering/leaving a fortress */
-    if (map_has_special(dst_tile, S_FORTRESS)
-       && homecity
-       && is_friendly_city_near(unit_owner(punit), dst_tile)
-       && !senthome) {
-      city_refresh(homecity);
-      send_city_info(pplayer, homecity);
+    /* entering/leaving a fortress or friendly territory */
+    if (homecity) {
+      if ((game.happyborders > 0 && src_tile->owner != dst_tile->owner)
+          ||
+         (map_has_special(dst_tile, S_FORTRESS)
+          && is_friendly_city_near(unit_owner(punit), dst_tile))
+         ||
+          (map_has_special(src_tile, S_FORTRESS) 
+          && is_friendly_city_near(unit_owner(punit), src_tile))) {
+        refresh_homecity = TRUE;
+      }
     }
-
-    if (map_has_special(src_tile, S_FORTRESS)
-       && homecity
-       && is_friendly_city_near(unit_owner(punit), src_tile)
-       && !senthome) {
+    
+    if (refresh_homecity) {
       city_refresh(homecity);
       send_city_info(pplayer, homecity);
     }
Index: server/generator/mapgen.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/generator/mapgen.c,v
retrieving revision 1.12.2.5
retrieving revision 1.12.2.6
diff -u -r1.12.2.5 -r1.12.2.6
--- server/generator/mapgen.c   1 May 2005 05:09:08 -0000       1.12.2.5
+++ server/generator/mapgen.c   23 Jun 2005 15:34:29 -0000      1.12.2.6
@@ -1914,7 +1914,7 @@
   /* no islands with mass >> sqr(min(xsize,ysize)) */
 
   if (game.nplayers < 2 || map.landpercent > 80) {
-    map.generator = 3;
+    map.startpos = 1;
     return;
   }
 
Index: ai/advdiplomacy.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/advdiplomacy.c,v
retrieving revision 1.47.2.11
retrieving revision 1.47.2.13
diff -u -r1.47.2.11 -r1.47.2.13
--- ai/advdiplomacy.c   19 Feb 2005 23:21:37 -0000      1.47.2.11
+++ ai/advdiplomacy.c   27 Jun 2005 18:06:57 -0000      1.47.2.13
@@ -476,6 +476,7 @@
   bool has_treaty = FALSE;
   bool only_gifts = TRUE;
   struct ai_data *ai = ai_data_get(pplayer);
+  int given_cities = 0;
 
   assert(!is_barbarian(pplayer));
 
@@ -485,6 +486,9 @@
     if (is_pact_clause(pclause->type)) {
       has_treaty = TRUE;
     }
+    if (pclause->type == CLAUSE_CITY && pclause->from == pplayer) {
+       given_cities++;
+    }
     if (pclause->type != CLAUSE_GOLD && pclause->type != CLAUSE_MAP
         && pclause->type != CLAUSE_SEAMAP && pclause->type != CLAUSE_VISION
         && (pclause->type != CLAUSE_ADVANCE 
@@ -505,6 +509,13 @@
     return;
   }
 
+  if (given_cities > 0) {
+    /* alway keep at least two cities */
+    if (city_list_size(&pplayer->cities) - given_cities <= 2) {
+      return;
+    }
+  }
+
   /* Accept if balance is good */
   if (total_balance >= 0) {
     handle_diplomacy_accept_treaty_req(pplayer, aplayer->player_no);
@@ -562,7 +573,6 @@
   /* Evaluate clauses */
   clause_list_iterate(ptreaty->clauses, pclause) {
     int balance = ai_goldequiv_clause(pplayer, aplayer, pclause, ai, TRUE);
-
     total_balance += balance;
     gift = (gift && (balance >= 0));
     ai_treaty_react(pplayer, aplayer, pclause);
@@ -1016,7 +1026,8 @@
     ai->diplomacy.countdown = 0; /* cosmetic */
   }
   if (target && !pplayers_at_war(pplayer, target)
-      && ai->diplomacy.countdown <= 0) {
+      && ai->diplomacy.countdown <= 0
+      && !ai_handicap(pplayer, H_AWAY)) {
     if (pplayers_allied(pplayer, target)) {
       PLAYER_LOG(LOG_DEBUG, pplayer, ai, "Went to war against %s, who is "
                  "an ally!", target->name); /* Oh, my. */
Index: client/helpdata.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/helpdata.c,v
retrieving revision 1.81.2.6
retrieving revision 1.81.2.7
diff -u -r1.81.2.6 -r1.81.2.7
--- client/helpdata.c   19 Jan 2005 16:38:43 -0000      1.81.2.6
+++ client/helpdata.c   28 Jun 2005 07:26:20 -0000      1.81.2.7
@@ -622,8 +622,8 @@
   assert(bufsz > 0);
   buf[0] = '\0';
   techs_with_flag_iterate(flag, tech_id) {
-    const char *name = get_tech_name(NULL, tech_id);
-
+    const char *name = get_tech_name(game.player_ptr, tech_id);
+    
     if (buf[0] == '\0') {
       my_snprintf(buf, bufsz, "%s", name);
     } else {
Index: client/packhand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/packhand.c,v
retrieving revision 1.408.2.24
retrieving revision 1.408.2.25
diff -u -r1.408.2.24 -r1.408.2.25
--- client/packhand.c   6 Jun 2005 18:47:40 -0000       1.408.2.24
+++ client/packhand.c   21 Jun 2005 09:11:03 -0000      1.408.2.25
@@ -1179,6 +1179,7 @@
           && (!game.player_ptr->ai.control || ai_popup_windows)
           && punit->owner==game.player_idx
           && !unit_has_orders(punit)
+          && can_client_issue_orders()
           && (unit_can_help_build_wonder_here(punit)
               || unit_can_est_traderoute_here(punit))) {
          process_caravan_arrival(punit);
Index: client/gui-gtk/mapctrl.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/Attic/mapctrl.c,v
retrieving revision 1.102.2.1
retrieving revision 1.102.2.2
diff -u -r1.102.2.1 -r1.102.2.2
--- client/gui-gtk/mapctrl.c    7 Oct 2004 18:04:51 -0000       1.102.2.1
+++ client/gui-gtk/mapctrl.c    28 Jun 2005 18:15:28 -0000      1.102.2.2
@@ -309,7 +309,7 @@
     gdk_window_get_pointer(overview_canvas->window, &x, &y, 0);
     if (x >= 0 && y >= 0
        && x < OVERVIEW_TILE_WIDTH * map.xsize
-       && y < OVERVIEW_TILE_WIDTH * map.ysize) {
+       && y < OVERVIEW_TILE_HEIGHT * map.ysize) {
       overview_update_line(x, y);
     }
   }
Index: client/gui-gtk-2.0/mapctrl.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk-2.0/mapctrl.c,v
retrieving revision 1.43.2.2
retrieving revision 1.43.2.3
diff -u -r1.43.2.2 -r1.43.2.3
--- client/gui-gtk-2.0/mapctrl.c        1 Nov 2004 01:22:18 -0000       1.43.2.2
+++ client/gui-gtk-2.0/mapctrl.c        28 Jun 2005 18:12:31 -0000      1.43.2.3
@@ -333,7 +333,7 @@
     gdk_window_get_pointer(overview_canvas->window, &x, &y, 0);
     if (x >= 0 && y >= 0
        && x < OVERVIEW_TILE_WIDTH * map.xsize
-       && y < OVERVIEW_TILE_WIDTH * map.ysize) {
+       && y < OVERVIEW_TILE_HEIGHT * map.ysize) {
       overview_update_line(x, y);
     }
   }
Index: data/civ1/buildings.ruleset
===================================================================
RCS file: /home/freeciv/CVS/freeciv/data/civ1/buildings.ruleset,v
retrieving revision 1.39.2.1
retrieving revision 1.39.2.2
diff -u -r1.39.2.1 -r1.39.2.2
--- data/civ1/buildings.ruleset 4 Dec 2004 09:27:28 -0000       1.39.2.1
+++ data/civ1/buildings.ruleset 16 Jun 2005 16:52:58 -0000      1.39.2.2
@@ -414,8 +414,8 @@
 upkeep         = 1
 sabotage       = 100
 effect         =
-    { "name"
-      "Growth_Food"
+    { "name", "value"
+      "Growth_Food", 50
     }
 sound          = "b_granary"
 sound_alt      = "b_generic"

[Prev in Thread] Current Thread [Next in Thread]