[Freeciv-Dev] 2.0.3
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
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"
- [Freeciv-Dev] 2.0.3,
Jason Dorje Short <=
|
|