Complete.Org: Mailing Lists: Archives: freeciv-dev: July 2004:
[Freeciv-Dev] (PR#9311) accessors for city output values
Home

[Freeciv-Dev] (PR#9311) accessors for city output values

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: undisclosed-recipients: ;
Subject: [Freeciv-Dev] (PR#9311) accessors for city output values
From: "Jason Short" <jdorje@xxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 7 Jul 2004 21:35:57 -0700
Reply-to: rt@xxxxxxxxxxx

<URL: http://rt.freeciv.org/Ticket/Display.html?id=9311 >

I'd like to wrap the city output values with wrapper macros.  This 
allows the underlying field names to change without touching lots and 
lots of code.

E.g., instead of "pcity->shield_surplus" we would have 
"shield_surplus(pcity)".

The (large) attached patch does this.  The results can be duplicated 
with the other (city.h) patch and by running the convert.sh script.

jason

Index: common/city.h
===================================================================
RCS file: /home/freeciv/CVS/freeciv/common/city.h,v
retrieving revision 1.150
diff -u -r1.150 city.h
--- common/city.h       7 Jul 2004 07:26:04 -0000       1.150
+++ common/city.h       8 Jul 2004 04:32:29 -0000
@@ -344,6 +344,27 @@
 
 
 /* properties */
+#define food_prod(pcity) (pcity->food_prod)
+#define shield_prod(pcity) (pcity->shield_prod)
+#define trade_prod(pcity) (pcity->trade_prod)
+#define luxury_prod(pcity) (pcity->luxury_total)
+#define science_prod(pcity) (pcity->tax_total)
+#define gold_prod(pcity) (pcity->science_total)
+
+#define food_surplus(pcity) (pcity->food_surplus)
+#define shield_surplus(pcity) (pcity->shield_surplus)
+#define trade_surplus(pcity) (pcity->trade_surplus)
+#define pollution(pcity) (pcity->pollution)
+
+#define shield_waste(pcity) (pcity->shield_waste)
+#define trade_waste(pcity) (pcity->corruption)
+
+#define shield_stock(pcity) (pcity->shield_stock)
+#define food_stock(pcity) (pcity->food_stock)
+
+#define shield_bonus(pcity) (pcity->shield_bonus)
+#define science_bonus(pcity) (pcity->science_bonus)
+#define gold_bonus(pcity) (pcity->tax_bonus)
 
 struct player *city_owner(const struct city *pcity);
 int city_population(const struct city *pcity);

Attachment: convert.sh
Description: Bourne shell script

Attachment: replace.sh
Description: Bourne shell script

? diff
? data/tridenthex
? data/tridenthex.tilespec
Index: ai/advdomestic.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/advdomestic.c,v
retrieving revision 1.111
diff -u -r1.111 advdomestic.c
--- ai/advdomestic.c    25 Jun 2004 23:43:00 -0000      1.111
+++ ai/advdomestic.c    8 Jul 2004 04:32:13 -0000
@@ -376,13 +376,13 @@
   
   /* Base is cost of actual pollution. */
   
-  if (pcity->pollution > 0) {
-    int amortized = amortize(weight, 100 / pcity->pollution);
+  if (pollution(pcity) > 0) {
+    int amortized = amortize(weight, 100 / pollution(pcity));
     
     cost = ((amortized * weight) / (MAX(1, weight - amortized))) / 64;
     
     freelog(LOG_DEBUG, "City: %s, Pollu: %d, cost: %d, Id: %d, P: %d",
-           pcity->name, pcity->pollution, cost, impr_type, pollution);
+           pcity->name, pollution(pcity), cost, impr_type, pollution);
   }
   
   /* Subtract cost of future pollution. */
@@ -413,13 +413,13 @@
 
   /* --- initialize control parameters --- */
   t = pcity->ai.trade_want;  /* trade_weighting */
-  sci = (pcity->trade_prod * pplayer->economic.science + 50) / 100;
-  tax = pcity->trade_prod - sci;
+  sci = (trade_prod(pcity) * pplayer->economic.science + 50) / 100;
+  tax = trade_prod(pcity) - sci;
 
   /* better might be a longterm weighted average, this is a quick-n-dirty fix 
   -- Syela */
-  sci = ((sci + pcity->trade_prod) * t)/2;
-  tax = ((tax + pcity->trade_prod) * t)/2;
+  sci = ((sci + trade_prod(pcity)) * t)/2;
+  tax = ((tax + trade_prod(pcity)) * t)/2;
   /* don't need libraries!! */
   if (ai_wants_no_science(pplayer)) {
     sci = 0;
@@ -427,9 +427,9 @@
 
   est_food = (2 * pcity->specialists[SP_SCIENTIST]
              + 2 * pcity->specialists[SP_TAXMAN]
-             + pcity->food_surplus);
+             + food_surplus(pcity));
   prod = 
-    (pcity->shield_prod * SHIELD_WEIGHTING * 100) / city_shield_bonus(pcity);
+    (shield_prod(pcity) * SHIELD_WEIGHTING * 100) / city_shield_bonus(pcity);
   needpower = (city_got_building(pcity, B_MFG) ? 2 :
               (city_got_building(pcity, B_FACTORY) ? 1 : 0));
   val = ai_best_tile_value(pcity);
@@ -443,7 +443,7 @@
   food  = food_weighting(grana);
   grana = food_weighting(grana + 1);
   hunger = 1;
-  j = (pcity->size * 2) + settler_eats(pcity) - pcity->food_prod;
+  j = (pcity->size * 2) + settler_eats(pcity) - food_prod(pcity);
   if (j >= 0
       && pcity->specialists[SP_SCIENTIST] <= 0
       && pcity->specialists[SP_TAXMAN] <= 0) {
@@ -457,7 +457,7 @@
   j = 0; k = 0, tprod = 0;
   city_list_iterate(pplayer->cities, acity) {
     k++;
-    tprod += acity->shield_prod;
+    tprod += shield_prod(acity);
     if (acity->is_building_unit) {
       if (!unit_type_flag(acity->currently_building, F_NONMIL) 
        && unit_types[acity->currently_building].move_type == LAND_MOVING)
@@ -499,7 +499,7 @@
          * j = num_pop_rollover * biggest_granary_size - current_food */
         j = (k+1) - MIN(k, pcity->size);
        j *= city_granary_size(MAX(k, pcity->size));
-        j-= pcity->food_stock;
+        j-= food_stock(pcity);
   
         /* value = some odd factors / food_required */
         j = (k+1) * food * est_food * game.foodbox / MAX(1, j);
@@ -509,7 +509,7 @@
     case B_GRANARY:
       if (improvement_variant(B_PYRAMIDS) != 0
           || !built_elsewhere(pcity, B_PYRAMIDS))
-        values[id] = grana * pcity->food_surplus;
+        values[id] = grana * food_surplus(pcity);
       break;
     case B_HARBOUR:
       values[id] = ocean_workers(pcity) * food * hunger;
@@ -564,7 +564,7 @@
       } else {
         /* The use of TRADE_WEIGHTING here is deliberate, since
          * t is corruption modified. */
-        values[id] = (pcity->corruption * TRADE_WEIGHTING) / 2;
+        values[id] = (trade_waste(pcity) * TRADE_WEIGHTING) / 2;
       }
       break;
     
@@ -776,7 +776,7 @@
       if (improvement_variant(B_PYRAMIDS)==0
         && !city_got_building(pcity, B_GRANARY)) {
         /* different tech req's */
-        values[id] = food * pcity->food_surplus;
+        values[id] = food * food_surplus(pcity);
       }
       break;
     case B_SETI:
@@ -880,7 +880,7 @@
   city_list_iterate(pplayer->cities, acity) {
     if (acity->is_building_unit
         && unit_type_flag(acity->currently_building, F_HELP_WONDER)
-        && (acity->shield_stock
+        && (shield_stock(acity)
            >= unit_build_shield_cost(acity->currently_building))
         && map_get_continent(acity->x, acity->y) == continent) {
       caravans++;
@@ -955,7 +955,7 @@
   Unit_Type_id unit_type;
   /* Food surplus assuming that workers and elvii are already accounted for
    * and properly balanced. */
-  int est_food = pcity->food_surplus
+  int est_food = food_surplus(pcity)
                  + 2 * pcity->specialists[SP_SCIENTIST]
                  + 2 * pcity->specialists[SP_TAXMAN];
 
Index: ai/advmilitary.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/advmilitary.c,v
retrieving revision 1.169
diff -u -r1.169 advmilitary.c
--- ai/advmilitary.c    25 Jun 2004 23:43:00 -0000      1.169
+++ ai/advmilitary.c    8 Jul 2004 04:32:13 -0000
@@ -654,7 +654,7 @@
         if ((desire > best ||
              (desire == best && unit_build_shield_cost(unit_type) <=
                                 unit_build_shield_cost(best_unit_type)))
-            && unit_build_shield_cost(unit_type) <= pcity->shield_stock + 40) {
+            && unit_build_shield_cost(unit_type) <= shield_stock(pcity) + 40) {
           best = desire;
           best_unit_type = unit_type;
         }
@@ -1158,7 +1158,7 @@
   case HELI_MOVING:
   case AIR_MOVING:
     if (player_knows_improvement_tech(pplayer, B_AIRPORT)
-        && pcity->shield_surplus > impr_build_shield_cost(B_AIRPORT) / 10) {
+        && shield_surplus(pcity) > impr_build_shield_cost(B_AIRPORT) / 10) {
       /* Only build this if we have really high production */
       choice->choice = B_AIRPORT;
       choice->type = CT_BUILDING;
@@ -1214,21 +1214,21 @@
     } else { 
       danger = 100 * pcity->ai.danger / our_def;
     }
-    if (pcity->shield_surplus <= 0 && our_def != 0) {
+    if (shield_surplus(pcity) <= 0 && our_def != 0) {
       /* Won't be able to support anything */
       danger = 0;
     }
 
     /* FIXME: 1. Will tend to build walls beofre coastal irrespectfully what
      * type of danger we are facing
-     * 2. (80 - pcity->shield_stock) * 2 below is hardcoded price of walls */
+     * 2. (80 - shield_stock(pcity)) * 2 below is hardcoded price of walls */
     /* We will build walls if we can and want and (have "enough" defenders or
      * can just buy the walls straight away) */
     if (pcity->ai.building_want[B_CITY] != 0 && our_def != 0 
         && can_build_improvement(pcity, B_CITY)
         && (danger < 101 || num_defenders > 1
             || (pcity->ai.grave_danger == 0 
-                && pplayer->economic.gold > (80 - pcity->shield_stock) * 2)) 
+                && pplayer->economic.gold > (80 - shield_stock(pcity)) * 2)) 
         && ai_fuzzy(pplayer, TRUE)) {
       /* NB: great wall is under domestic */
       choice->choice = B_CITY;
@@ -1282,7 +1282,7 @@
     }
   } /* ok, don't need to defend */
 
-  if (pcity->shield_surplus <= 0 
+  if (shield_surplus(pcity) <= 0 
       || pcity->ppl_unhappy[4] > pcity->ppl_unhappy[2]) {
     /* Things we consider below are not life-saving so we don't want to 
      * build them if our populace doesn't feel like it */
Index: ai/aicity.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/aicity.c,v
retrieving revision 1.157
diff -u -r1.157 aicity.c
--- ai/aicity.c 7 Jul 2004 07:32:02 -0000       1.157
+++ ai/aicity.c 8 Jul 2004 04:32:13 -0000
@@ -52,8 +52,8 @@
 #include "aicity.h"
 
 #define CITY_EMERGENCY(pcity)                        \
- (pcity->shield_surplus < 0 || city_unhappy(pcity)   \
-  || pcity->food_stock + pcity->food_surplus < 0)
+ (shield_surplus(pcity) < 0 || city_unhappy(pcity)   \
+  || food_stock(pcity) + food_surplus(pcity) < 0)
 #define LOG_BUY LOG_DEBUG
 
 static void resolve_city_emergency(struct player *pplayer, struct city *pcity);
@@ -66,17 +66,17 @@
 **************************************************************************/
 int ai_eval_calc_city(struct city *pcity, struct ai_data *ai)
 {
-  int i = (pcity->food_surplus * ai->food_priority
-           + pcity->shield_surplus * ai->shield_priority
-           + pcity->luxury_total * ai->luxury_priority
-           + pcity->tax_total * ai->gold_priority
-           + pcity->science_total * ai->science_priority
+  int i = (food_surplus(pcity) * ai->food_priority
+           + shield_surplus(pcity) * ai->shield_priority
+           + luxury_prod(pcity) * ai->luxury_priority
+           + gold_prod(pcity) * ai->gold_priority
+           + science_prod(pcity) * ai->science_priority
            + pcity->ppl_happy[4] * ai->happy_priority
            - pcity->ppl_unhappy[4] * ai->unhappy_priority
            - pcity->ppl_angry[4] * ai->angry_priority
-           - pcity->pollution * ai->pollution_priority);
+           - pollution(pcity) * ai->pollution_priority);
   
-  if (pcity->food_surplus < 0 || pcity->shield_surplus < 0) {
+  if (food_surplus(pcity) < 0 || shield_surplus(pcity) < 0) {
     /* The city is unmaintainable, it can't be good */
     i = MIN(i, 0);
   }
@@ -100,7 +100,7 @@
   if (find_palace(pplayer) || g->corruption_level == 0) palace = TRUE;
   city_list_iterate(pplayer->cities, pcity)
     ai_eval_buildings(pcity);
-    if (!palace) corr += pcity->corruption * 8;
+    if (!palace) corr += trade_waste(pcity) * 8;
     impr_type_iterate(i) {
       if (pcity->ai.building_want[i] > 0) values[i] += 
pcity->ai.building_want[i];
     } impr_type_iterate_end;
@@ -164,7 +164,7 @@
       if (!pcity->is_building_unit && is_wonder(i) &&
           is_wonder(pcity->currently_building))
        /* this should encourage completion of wonders, I hope! -- Syela */
-        pcity->ai.building_want[i] += pcity->shield_stock / 2;
+        pcity->ai.building_want[i] += shield_stock(pcity) / 2;
     } impr_type_iterate_end;
   city_list_iterate_end;
 }
@@ -490,7 +490,7 @@
       if (!city_got_effect(pcity, B_GRANARY) 
           && pcity->size == 1
           && city_granary_size(pcity->size)
-             > pcity->food_stock + pcity->food_surplus) {
+             > food_stock(pcity) + food_surplus(pcity)) {
         /* Don't buy settlers in size 1 cities unless we grow next turn */
         continue;
       } else if (city_list_size(&pplayer->cities) > 6) {
@@ -507,7 +507,7 @@
     }
 
     /* It costs x2 to buy something with no shields contributed */
-    expensive = (pcity->shield_stock == 0)
+    expensive = (shield_stock(pcity) == 0)
                 || (pplayer->economic.gold - buycost < limit);
 
     if (bestchoice.type == CT_ATTACKER
@@ -682,7 +682,7 @@
           "Emergency in %s (%s, angry%d, unhap%d food%d, prod%d)",
           pcity->name, city_unhappy(pcity) ? "unhappy" : "content",
           pcity->ppl_angry[4], pcity->ppl_unhappy[4],
-          pcity->food_surplus, pcity->shield_surplus);
+          food_surplus(pcity), shield_surplus(pcity));
 
   city_list_init(&minilist);
   map_city_radius_iterate(pcity->x, pcity->y, x, y) {
Index: ai/aidata.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/aidata.c,v
retrieving revision 1.29
diff -u -r1.29 aidata.c
--- ai/aidata.c 25 Jun 2004 23:43:00 -0000      1.29
+++ ai/aidata.c 8 Jul 2004 04:32:13 -0000
@@ -192,7 +192,7 @@
   ai->stats.average_production = 0;
   city_list_iterate(pplayer->cities, pcity) {
     ai->stats.cities[(int)map_get_continent(pcity->x, pcity->y)]++;
-    ai->stats.average_production += pcity->shield_surplus;
+    ai->stats.average_production += shield_surplus(pcity);
   } city_list_iterate_end;
   ai->stats.average_production /= MAX(1, city_list_size(&pplayer->cities));
   BV_CLR_ALL(ai->stats.diplomat_reservations);
Index: ai/aidiplomat.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/aidiplomat.c,v
retrieving revision 1.36
diff -u -r1.36 aidiplomat.c
--- ai/aidiplomat.c     25 Jun 2004 23:43:00 -0000      1.36
+++ ai/aidiplomat.c     8 Jul 2004 04:32:14 -0000
@@ -181,11 +181,11 @@
             pplayer->economic.gold - pplayer->ai.est_upkeep)) {
       /* incite gain (FIXME: we should count wonders too but need to
          cache that somehow to avoid CPU hog -- Per) */
-      gain_incite = acity->food_prod * FOOD_WEIGHTING
-                    + acity->shield_prod * SHIELD_WEIGHTING
-                    + (acity->luxury_total
-                       + acity->tax_total
-                       + acity->science_total) * TRADE_WEIGHTING;
+      gain_incite = food_prod(acity) * FOOD_WEIGHTING
+                    + shield_prod(acity) * SHIELD_WEIGHTING
+                    + (luxury_prod(acity)
+                       + gold_prod(acity)
+                       + science_prod(acity)) * TRADE_WEIGHTING;
       gain_incite *= SHIELD_WEIGHTING; /* WAG cost to take city otherwise */
       gain_incite -= incite_cost * TRADE_WEIGHTING;
     }
Index: ai/aihand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/aihand.c,v
retrieving revision 1.89
diff -u -r1.89 aihand.c
--- ai/aihand.c 7 Jul 2004 07:32:03 -0000       1.89
+++ ai/aihand.c 8 Jul 2004 04:32:14 -0000
@@ -168,7 +168,7 @@
       total_cities++;
 
       if (cmr.found_a_valid
-          && pcity->food_surplus > 0
+          && food_surplus(pcity) > 0
           && pcity->size >= g->rapture_size
           && (pcity->size < game.aqueduct_size
               || city_got_building(pcity, B_AQUEDUCT))
Index: ai/aihunt.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/aihunt.c,v
retrieving revision 1.6
diff -u -r1.6 aihunt.c
--- ai/aihunt.c 25 Jun 2004 23:43:01 -0000      1.6
+++ ai/aihunt.c 8 Jul 2004 04:32:14 -0000
@@ -103,7 +103,7 @@
       desire /= 2;
     }
 
-    desire = amortize(desire, ut->build_cost / MAX(pcity->shield_surplus, 1));
+    desire = amortize(desire, ut->build_cost / MAX(shield_surplus(pcity), 1));
 
     if (desire > best) {
         best = desire;
@@ -160,7 +160,7 @@
       desire /= 2;
     }
 
-    desire = amortize(desire, ut->build_cost / MAX(pcity->shield_surplus, 1));
+    desire = amortize(desire, ut->build_cost / MAX(shield_surplus(pcity), 1));
 
     if (desire > best) {
         best = desire;
Index: ai/aitools.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/aitools.c,v
retrieving revision 1.114
diff -u -r1.114 aitools.c
--- ai/aitools.c        7 Jul 2004 07:32:03 -0000       1.114
+++ ai/aitools.c        8 Jul 2004 04:32:14 -0000
@@ -63,7 +63,7 @@
                       int value, int delay, int build_cost)
 {
   struct ai_data *ai = ai_data_get(pplayer);
-  int city_output = (pcity ? pcity->shield_surplus : 1);
+  int city_output = (pcity ? shield_surplus(pcity) : 1);
   int output = MAX(city_output, ai->stats.average_production);
   int build_time = build_cost / MAX(output, 1);
 
@@ -405,8 +405,8 @@
        the greater good -- Per */
     return FALSE;
   }
-  if (pcity->shield_surplus - unit_type(punit)->shield_cost >= 0
-      && pcity->food_surplus - unit_type(punit)->food_cost >= 0) {
+  if (shield_surplus(pcity) - unit_type(punit)->shield_cost >= 0
+      && food_surplus(pcity) - unit_type(punit)->food_cost >= 0) {
     handle_unit_change_homecity(unit_owner(punit), punit->id, pcity->id);
     return TRUE;
   }
@@ -713,7 +713,7 @@
   impr_type_iterate(i) {
     if (!is_wonder(i)
        || (!pcity->is_building_unit && is_wonder(pcity->currently_building)
-           && pcity->shield_stock >= impr_build_shield_cost(i) / 2)
+           && shield_stock(pcity) >= impr_build_shield_cost(i) / 2)
        || (!is_building_other_wonder(pcity)
            /* otherwise caravans will be killed! */
            && pcity->ai.grave_danger == 0
Index: ai/aiunit.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/aiunit.c,v
retrieving revision 1.321
diff -u -r1.321 aiunit.c
--- ai/aiunit.c 25 Jun 2004 23:43:01 -0000      1.321
+++ ai/aiunit.c 8 Jul 2004 04:32:15 -0000
@@ -2199,7 +2199,7 @@
     if ((pcity = wonder_on_continent(pplayer, 
                                      map_get_continent(punit->x, punit->y))) 
         && unit_flag(punit, F_HELP_WONDER)
-        && build_points_left(pcity) > (pcity->shield_surplus * 2)) {
+        && build_points_left(pcity) > (shield_surplus(pcity) * 2)) {
       if (!same_pos(pcity->x, pcity->y, punit->x, punit->y)) {
         if (punit->moves_left == 0) {
           return;
Index: client/citydlg_common.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/citydlg_common.c,v
retrieving revision 1.39
diff -u -r1.39 citydlg_common.c
--- client/citydlg_common.c     25 Jun 2004 23:35:55 -0000      1.39
+++ client/citydlg_common.c     8 Jul 2004 04:32:15 -0000
@@ -231,7 +231,7 @@
 
   turns = city_turns_to_build(pcity, pcity->currently_building,
                              pcity->is_building_unit, TRUE);
-  stock = pcity->shield_stock;
+  stock = shield_stock(pcity);
 
   if (pcity->is_building_unit) {
     cost = unit_build_shield_cost(pcity->currently_building);
@@ -241,7 +241,7 @@
 
   if (!pcity->is_building_unit && pcity->currently_building == B_CAPITAL) {
     my_snprintf(buffer, buffer_len, _("%3d gold per turn"),
-               MAX(0, pcity->shield_surplus));
+               MAX(0, shield_surplus(pcity)));
   } else {
     char time[50];
 
@@ -282,7 +282,7 @@
 {
   if (!is_unit && id == B_CAPITAL) {
     my_snprintf(buffer, buffer_len, _("%s (XX) %d/turn"),
-               get_impr_name_ex(pcity, id), MAX(0, pcity->shield_surplus));
+               get_impr_name_ex(pcity, id), MAX(0, shield_surplus(pcity)));
   } else {
     int turns = city_turns_to_build(pcity, id, is_unit, TRUE);
     const char *name;
@@ -366,7 +366,7 @@
   if (pcity) {
     if (!is_unit && id == B_CAPITAL) {
       my_snprintf(buf[3], column_size, _("%d/turn"),
-                 MAX(0, pcity->shield_surplus));
+                 MAX(0, shield_surplus(pcity)));
     } else {
       int turns = city_turns_to_build(pcity, id, is_unit, FALSE);
       if (turns < 999) {
Index: client/cityrepdata.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/cityrepdata.c,v
retrieving revision 1.33
diff -u -r1.33 cityrepdata.c
--- client/cityrepdata.c        27 May 2004 22:14:18 -0000      1.33
+++ client/cityrepdata.c        8 Jul 2004 04:32:15 -0000
@@ -239,9 +239,9 @@
 {
   static char buf[32];
   my_snprintf(buf, sizeof(buf), "%d/%d/%d",
-             pcity->food_surplus, 
-             pcity->shield_surplus, 
-             pcity->trade_prod);
+             food_surplus(pcity), 
+             shield_surplus(pcity), 
+             trade_prod(pcity));
   return buf;
 }
 
@@ -249,7 +249,7 @@
 {
   static char buf[8];
   my_snprintf(buf, sizeof(buf), "%3d",
-             pcity->food_surplus);
+             food_surplus(pcity));
   return buf;
 }
 
@@ -257,7 +257,7 @@
 {
   static char buf[8];
   my_snprintf(buf, sizeof(buf), "%3d",
-             pcity->shield_surplus);
+             shield_surplus(pcity));
   return buf;
 }
 
@@ -265,7 +265,7 @@
 {
   static char buf[8];
   my_snprintf(buf, sizeof(buf), "%3d",
-             pcity->trade_prod);
+             trade_prod(pcity));
   return buf;
 }
 
@@ -278,8 +278,8 @@
   my_snprintf(buf, sizeof(buf), "%s%d/%d/%d",
              (goldie < 0) ? "-" : (goldie > 0) ? "+" : "",
              (goldie < 0) ? (-goldie) : goldie,
-             pcity->luxury_total,
-             pcity->science_total);
+             luxury_prod(pcity),
+             science_prod(pcity));
   return buf;
 }
 
@@ -299,7 +299,7 @@
 {
   static char buf[8];
   my_snprintf(buf, sizeof(buf), "%3d",
-             pcity->luxury_total);
+             luxury_prod(pcity));
   return buf;
 }
 
@@ -307,7 +307,7 @@
 {
   static char buf[8];
   my_snprintf(buf, sizeof(buf), "%3d",
-             pcity->science_total);
+             science_prod(pcity));
   return buf;
 }
 
@@ -315,7 +315,7 @@
 {
   static char buf[32];
   my_snprintf(buf, sizeof(buf), "%d/%d",
-             pcity->food_stock,
+             food_stock(pcity),
              city_granary_size(pcity->size) );
   return buf;
 }
@@ -337,7 +337,7 @@
 static char *cr_entry_pollution(struct city *pcity)
 {
   static char buf[8];
-  my_snprintf(buf, sizeof(buf), "%3d", pcity->pollution);
+  my_snprintf(buf, sizeof(buf), "%3d", pollution(pcity));
   return buf;
 }
 
@@ -358,7 +358,7 @@
   if (!pcity->is_building_unit && pcity->currently_building == B_CAPITAL) {
     my_snprintf(buf, sizeof(buf), "%s (%d/X/X/X)%s",
                get_impr_name_ex(pcity, pcity->currently_building),
-               MAX(0, pcity->shield_surplus), from_worklist);
+               MAX(0, shield_surplus(pcity)), from_worklist);
   } else {
     int turns = city_turns_to_build(pcity, pcity->currently_building,
                                    pcity->is_building_unit, TRUE);
@@ -381,7 +381,7 @@
     }
 
     my_snprintf(buf, sizeof(buf), "%s (%d/%d/%s/%d)%s", name,
-               pcity->shield_stock, cost, time, city_buy_cost(pcity),
+               shield_stock(pcity), cost, time, city_buy_cost(pcity),
                from_worklist);
   }
 
@@ -391,14 +391,14 @@
 static char *cr_entry_corruption(struct city *pcity)
 {
   static char buf[8];
-  my_snprintf(buf, sizeof(buf), "%3d", pcity->corruption);
+  my_snprintf(buf, sizeof(buf), "%3d", trade_waste(pcity));
   return buf;
 }
 
 static char *cr_entry_waste(struct city *pcity)
 {
   static char buf[8];
-  my_snprintf(buf, sizeof(buf), "%3d", pcity->shield_waste);
+  my_snprintf(buf, sizeof(buf), "%3d", shield_waste(pcity));
   return buf;
 }
 
Index: client/packhand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/packhand.c,v
retrieving revision 1.383
diff -u -r1.383 packhand.c
--- client/packhand.c   7 Jul 2004 16:02:50 -0000       1.383
+++ client/packhand.c   8 Jul 2004 04:32:16 -0000
@@ -406,12 +406,12 @@
     } else if (draw_city_productions &&
               (pcity->is_building_unit != packet->is_building_unit ||
                pcity->currently_building != packet->currently_building ||
-               pcity->shield_surplus != packet->shield_surplus ||
-               pcity->shield_stock != packet->shield_stock)) {
+               shield_surplus(pcity) != packet->shield_surplus ||
+               shield_stock(pcity) != packet->shield_stock)) {
       update_descriptions = TRUE;
     } else if (draw_city_names && draw_city_growth &&
-              (pcity->food_stock != packet->food_stock ||
-               pcity->food_surplus != packet->food_surplus)) {
+              (food_stock(pcity) != packet->food_stock ||
+               food_surplus(pcity) != packet->food_surplus)) {
       /* If either the food stock or surplus have changed, the time-to-grow
         is likely to have changed as well. */
       update_descriptions = TRUE;
@@ -442,22 +442,22 @@
     pcity->trade_value[i]=packet->trade_value[i];
   }
   
-  pcity->food_prod=packet->food_prod;
-  pcity->food_surplus=packet->food_surplus;
-  pcity->shield_prod=packet->shield_prod;
-  pcity->shield_surplus=packet->shield_surplus;
-  pcity->trade_prod=packet->trade_prod;
+  food_prod(pcity)=packet->food_prod;
+  food_surplus(pcity)=packet->food_surplus;
+  shield_prod(pcity)=packet->shield_prod;
+  shield_surplus(pcity)=packet->shield_surplus;
+  trade_prod(pcity)=packet->trade_prod;
   pcity->tile_trade=packet->tile_trade;
-  pcity->corruption=packet->corruption;
-  pcity->shield_waste=packet->shield_waste;
+  trade_waste(pcity)=packet->corruption;
+  shield_waste(pcity)=packet->shield_waste;
     
-  pcity->luxury_total=packet->luxury_total;
-  pcity->tax_total=packet->tax_total;
-  pcity->science_total=packet->science_total;
-  
-  pcity->food_stock=packet->food_stock;
-  pcity->shield_stock=packet->shield_stock;
-  pcity->pollution=packet->pollution;
+  luxury_prod(pcity)=packet->luxury_total;
+  gold_prod(pcity)=packet->tax_total;
+  science_prod(pcity)=packet->science_total;
+  
+  food_stock(pcity)=packet->food_stock;
+  shield_stock(pcity)=packet->shield_stock;
+  pollution(pcity)=packet->pollution;
 
   pcity->is_building_unit=packet->is_building_unit;
   pcity->currently_building=packet->currently_building;
@@ -711,18 +711,18 @@
       pcity->trade[i] = 0;
       pcity->trade_value[i] = 0;
     }
-    pcity->food_prod          = 0;
-    pcity->food_surplus       = 0;
-    pcity->shield_prod        = 0;
-    pcity->shield_surplus     = 0;
-    pcity->trade_prod         = 0;
-    pcity->corruption         = 0;
-    pcity->luxury_total       = 0;
-    pcity->tax_total          = 0;
-    pcity->science_total      = 0;
-    pcity->food_stock         = 0;
-    pcity->shield_stock       = 0;
-    pcity->pollution          = 0;
+    food_prod(pcity)          = 0;
+    food_surplus(pcity)       = 0;
+    shield_prod(pcity)        = 0;
+    shield_surplus(pcity)     = 0;
+    trade_prod(pcity)         = 0;
+    trade_waste(pcity)         = 0;
+    luxury_prod(pcity)       = 0;
+    gold_prod(pcity)          = 0;
+    science_prod(pcity)      = 0;
+    food_stock(pcity)         = 0;
+    shield_stock(pcity)       = 0;
+    pollution(pcity)          = 0;
     pcity->city_options       = 0;
     pcity->is_building_unit   = FALSE;
     pcity->currently_building = 0;
Index: client/repodlgs_common.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/repodlgs_common.c,v
retrieving revision 1.10
diff -u -r1.10 repodlgs_common.c
--- client/repodlgs_common.c    25 Jun 2004 23:35:55 -0000      1.10
+++ client/repodlgs_common.c    8 Jul 2004 04:32:16 -0000
@@ -76,9 +76,9 @@
   *total_income = 0;
 
   city_list_iterate(game.player_ptr->cities, pcity) {
-    *total_income += pcity->tax_total;
+    *total_income += gold_prod(pcity);
     if (!pcity->is_building_unit && pcity->currently_building == B_CAPITAL) {
-      *total_income += MAX(0, pcity->shield_surplus);
+      *total_income += MAX(0, shield_surplus(pcity));
     }
   } city_list_iterate_end;
 }
Index: client/text.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/text.c,v
retrieving revision 1.5
diff -u -r1.5 text.c
--- client/text.c       25 Jun 2004 23:35:55 -0000      1.5
+++ client/text.c       8 Jul 2004 04:32:17 -0000
@@ -399,7 +399,7 @@
 
     if (plr == pplayer) {
       city_list_iterate(pplayer->cities, pcity) {
-        ours += pcity->science_total;
+        ours += science_prod(pcity);
       } city_list_iterate_end;
     } else if (ds == DS_TEAM) {
       theirs += pplayer->research.bulbs_last_turn;
Index: client/agents/cma_core.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/agents/cma_core.c,v
retrieving revision 1.53
diff -u -r1.53 cma_core.c
--- client/agents/cma_core.c    29 May 2004 20:34:31 -0000      1.53
+++ client/agents/cma_core.c    8 Jul 2004 04:32:17 -0000
@@ -169,16 +169,16 @@
   } my_city_map_iterate_end;
 
   freelog(LOG_NORMAL, "  food    = %3d (%+3d)",
-         pcity->food_prod, pcity->food_surplus);
+         food_prod(pcity), food_surplus(pcity));
   freelog(LOG_NORMAL, "  shield  = %3d (%+3d)",
-         pcity->shield_prod + pcity->shield_waste, pcity->shield_prod);
+         shield_prod(pcity) + shield_waste(pcity), shield_prod(pcity));
   freelog(LOG_NORMAL, "  trade   = %3d (%+3d)",
-         pcity->trade_prod + pcity->corruption, pcity->trade_prod);
+         trade_prod(pcity) + trade_waste(pcity), trade_prod(pcity));
 
-  freelog(LOG_NORMAL, "  gold    = %3d (%+3d)", pcity->tax_total,
+  freelog(LOG_NORMAL, "  gold    = %3d (%+3d)", gold_prod(pcity),
          city_gold_surplus(pcity));
-  freelog(LOG_NORMAL, "  luxury  = %3d", pcity->luxury_total);
-  freelog(LOG_NORMAL, "  science = %3d", pcity->science_total);
+  freelog(LOG_NORMAL, "  luxury  = %3d", luxury_prod(pcity));
+  freelog(LOG_NORMAL, "  science = %3d", science_prod(pcity));
 }
 
 /****************************************************************************
@@ -242,17 +242,17 @@
 *****************************************************************************/
 static void copy_stats(struct city *pcity, struct cm_result *result)
 {
-  result->production[FOOD] = pcity->food_prod;
-  result->production[SHIELD] = pcity->shield_prod + pcity->shield_waste;
-  result->production[TRADE] = pcity->trade_prod + pcity->corruption;
-
-  result->surplus[FOOD] = pcity->food_surplus;
-  result->surplus[SHIELD] = pcity->shield_surplus;
-  result->surplus[TRADE] = pcity->trade_prod;
-
-  result->production[GOLD] = pcity->tax_total;
-  result->production[LUXURY] = pcity->luxury_total;
-  result->production[SCIENCE] = pcity->science_total;
+  result->production[FOOD] = food_prod(pcity);
+  result->production[SHIELD] = shield_prod(pcity) + shield_waste(pcity);
+  result->production[TRADE] = trade_prod(pcity) + trade_waste(pcity);
+
+  result->surplus[FOOD] = food_surplus(pcity);
+  result->surplus[SHIELD] = shield_surplus(pcity);
+  result->surplus[TRADE] = trade_prod(pcity);
+
+  result->production[GOLD] = gold_prod(pcity);
+  result->production[LUXURY] = luxury_prod(pcity);
+  result->production[SCIENCE] = science_prod(pcity);
 
   result->surplus[GOLD] = city_gold_surplus(pcity);
   result->surplus[LUXURY] = result->production[LUXURY];
Index: client/agents/cma_fec.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/agents/cma_fec.c,v
retrieving revision 1.20
diff -u -r1.20 cma_fec.c
--- client/agents/cma_fec.c     29 May 2004 20:34:31 -0000      1.20
+++ client/agents/cma_fec.c     8 Jul 2004 04:32:17 -0000
@@ -264,7 +264,7 @@
     return buffer;
   }
 
-  stock = pcity->food_stock;
+  stock = food_stock(pcity);
   cost = city_granary_size(pcity->size);
 
   stock += surplus;
@@ -298,7 +298,7 @@
     return buffer;
   }
 
-  stock = pcity->shield_stock;
+  stock = shield_stock(pcity);
   if (pcity->is_building_unit) {
     cost = unit_build_shield_cost(pcity->currently_building);
   } else {
Index: client/gui-gtk/citydlg.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/citydlg.c,v
retrieving revision 1.183
diff -u -r1.183 citydlg.c
--- client/gui-gtk/citydlg.c    5 May 2004 20:39:15 -0000       1.183
+++ client/gui-gtk/citydlg.c    8 Jul 2004 04:32:17 -0000
@@ -1689,22 +1689,22 @@
   /* fill the buffers with the necessary info */
 
   my_snprintf(buf[FOOD], sizeof(buf[FOOD]), "%2d (%+2d)",
-             pcity->food_prod, pcity->food_surplus);
+             food_prod(pcity), food_surplus(pcity));
   my_snprintf(buf[SHIELD], sizeof(buf[SHIELD]), "%2d (%+2d)",
-             pcity->shield_prod + pcity->shield_waste,
-             pcity->shield_surplus);
+             shield_prod(pcity) + shield_waste(pcity),
+             shield_surplus(pcity));
   my_snprintf(buf[TRADE], sizeof(buf[TRADE]), "%2d (%+2d)",
-             pcity->trade_prod + pcity->corruption, pcity->trade_prod);
+             trade_prod(pcity) + trade_waste(pcity), trade_prod(pcity));
   my_snprintf(buf[GOLD], sizeof(buf[GOLD]), "%2d (%+2d)",
-             pcity->tax_total, city_gold_surplus(pcity));
+             gold_prod(pcity), city_gold_surplus(pcity));
   my_snprintf(buf[LUXURY], sizeof(buf[LUXURY]), "%2d      ",
-             pcity->luxury_total);
+             luxury_prod(pcity));
 
   my_snprintf(buf[SCIENCE], sizeof(buf[SCIENCE]), "%2d",
-             pcity->science_total);
+             science_prod(pcity));
 
   my_snprintf(buf[GRANARY], sizeof(buf[GRANARY]), "%d/%-d",
-             pcity->food_stock, city_granary_size(pcity->size));
+             food_stock(pcity), city_granary_size(pcity->size));
        
   granaryturns = city_turns_to_grow(pcity);
   if (granaryturns == 0) {
@@ -1720,11 +1720,11 @@
   }
 
   my_snprintf(buf[CORRUPTION], sizeof(buf[CORRUPTION]), "%2d",
-             pcity->corruption);
+             trade_waste(pcity));
   my_snprintf(buf[WASTE], sizeof(buf[WASTE]), "%2d",
-             pcity->shield_waste);
+             shield_waste(pcity));
   my_snprintf(buf[POLLUTION], sizeof(buf[POLLUTION]), "%2d",
-             pcity->pollution);
+             pollution(pcity));
 
   /* stick 'em in the labels */
 
@@ -1739,13 +1739,13 @@
   style = (granaryturns > -4 && granaryturns < 0) ? RED : NORMAL;
   gtk_widget_modify_style(info_label[GRANARY], info_label_style[style]);
 
-  style = (granaryturns == 0 || pcity->food_surplus < 0) ? RED : NORMAL;
+  style = (granaryturns == 0 || food_surplus(pcity) < 0) ? RED : NORMAL;
   gtk_widget_modify_style(info_label[GROWTH], info_label_style[style]);
 
   /* someone could add the info_label_style[ORANGE]
    * style for better granularity here */
 
-  style = (pcity->pollution >= 10) ? RED : NORMAL;
+  style = (pollution(pcity) >= 10) ? RED : NORMAL;
   gtk_widget_modify_style(info_label[POLLUTION], info_label_style[style]);
 }
 
@@ -1807,7 +1807,7 @@
   }
 
   if (cost > 0) {
-    pct = (gfloat) pcity->shield_stock / (gfloat) cost;
+    pct = (gfloat) shield_stock(pcity) / (gfloat) cost;
     pct = CLAMP(pct, 0.0, 1.0);
   } else {
     pct = 1.0;
Index: client/gui-gtk/happiness.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/happiness.c,v
retrieving revision 1.15
diff -u -r1.15 happiness.c
--- client/gui-gtk/happiness.c  8 May 2004 04:47:56 -0000       1.15
+++ client/gui-gtk/happiness.c  8 Jul 2004 04:32:17 -0000
@@ -264,7 +264,7 @@
   struct city *pcity = pdialog->pcity;
 
   my_snprintf(bptr, nleft, _("Luxury: %d total."),
-             pcity->luxury_total);
+             luxury_prod(pcity));
 
   gtk_set_label(pdialog->hlabels[LUXURIES], buf);
 }
Index: client/gui-gtk-2.0/citydlg.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk-2.0/citydlg.c,v
retrieving revision 1.88
diff -u -r1.88 citydlg.c
--- client/gui-gtk-2.0/citydlg.c        24 May 2004 13:00:51 -0000      1.88
+++ client/gui-gtk-2.0/citydlg.c        8 Jul 2004 04:32:17 -0000
@@ -1311,22 +1311,22 @@
   /* fill the buffers with the necessary info */
 
   my_snprintf(buf[FOOD], sizeof(buf[FOOD]), "%2d (%+2d)",
-             pcity->food_prod, pcity->food_surplus);
+             food_prod(pcity), food_surplus(pcity));
   my_snprintf(buf[SHIELD], sizeof(buf[SHIELD]), "%2d (%+2d)",
-             pcity->shield_prod + pcity->shield_waste,
-             pcity->shield_surplus);
+             shield_prod(pcity) + shield_waste(pcity),
+             shield_surplus(pcity));
   my_snprintf(buf[TRADE], sizeof(buf[TRADE]), "%2d (%+2d)",
-             pcity->trade_prod + pcity->corruption, pcity->trade_prod);
+             trade_prod(pcity) + trade_waste(pcity), trade_prod(pcity));
   my_snprintf(buf[GOLD], sizeof(buf[GOLD]), "%2d (%+2d)",
-             pcity->tax_total, city_gold_surplus(pcity));
+             gold_prod(pcity), city_gold_surplus(pcity));
   my_snprintf(buf[LUXURY], sizeof(buf[LUXURY]), "%2d      ",
-             pcity->luxury_total);
+             luxury_prod(pcity));
 
   my_snprintf(buf[SCIENCE], sizeof(buf[SCIENCE]), "%2d",
-             pcity->science_total);
+             science_prod(pcity));
 
   my_snprintf(buf[GRANARY], sizeof(buf[GRANARY]), "%d/%-d",
-             pcity->food_stock, city_granary_size(pcity->size));
+             food_stock(pcity), city_granary_size(pcity->size));
        
   granaryturns = city_turns_to_grow(pcity);
   if (granaryturns == 0) {
@@ -1341,11 +1341,11 @@
                abs(granaryturns));
   }
   my_snprintf(buf[CORRUPTION], sizeof(buf[CORRUPTION]), "%2d",
-             pcity->corruption);
+             trade_waste(pcity));
   my_snprintf(buf[WASTE], sizeof(buf[WASTE]), "%2d",
-          pcity->shield_waste);
+          shield_waste(pcity));
   my_snprintf(buf[POLLUTION], sizeof(buf[POLLUTION]), "%2d",
-             pcity->pollution);
+             pollution(pcity));
 
   /* stick 'em in the labels */
 
@@ -1360,13 +1360,13 @@
   style = (granaryturns > -4 && granaryturns < 0) ? RED : NORMAL;
   gtk_widget_modify_style(info_label[GRANARY], info_label_style[style]);
 
-  style = (granaryturns == 0 || pcity->food_surplus < 0) ? RED : NORMAL;
+  style = (granaryturns == 0 || food_surplus(pcity) < 0) ? RED : NORMAL;
   gtk_widget_modify_style(info_label[GROWTH], info_label_style[style]);
 
   /* someone could add the info_label_style[ORANGE]
    * style for better granularity here */
 
-  style = (pcity->pollution >= 10) ? RED : NORMAL;
+  style = (pollution(pcity) >= 10) ? RED : NORMAL;
   gtk_widget_modify_style(info_label[POLLUTION], info_label_style[style]);
 }
 
@@ -1430,7 +1430,7 @@
   }
 
   if (cost > 0) {
-    pct = (gdouble) pcity->shield_stock / (gdouble) cost;
+    pct = (gdouble) shield_stock(pcity) / (gdouble) cost;
     pct = CLAMP(pct, 0.0, 1.0);
   } else {
     pct = 1.0;
Index: client/gui-gtk-2.0/happiness.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk-2.0/happiness.c,v
retrieving revision 1.12
diff -u -r1.12 happiness.c
--- client/gui-gtk-2.0/happiness.c      5 May 2004 20:39:15 -0000       1.12
+++ client/gui-gtk-2.0/happiness.c      8 Jul 2004 04:32:17 -0000
@@ -257,7 +257,7 @@
   struct city *pcity = pdialog->pcity;
 
   my_snprintf(bptr, nleft, _("Luxury: %d total."),
-             pcity->luxury_total);
+             luxury_prod(pcity));
 
   gtk_label_set_text(GTK_LABEL(pdialog->hlabels[LUXURIES]), buf);
 }
Index: client/gui-mui/citydlg.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-mui/citydlg.c,v
retrieving revision 1.75
diff -u -r1.75 citydlg.c
--- client/gui-mui/citydlg.c    5 May 2004 20:39:15 -0000       1.75
+++ client/gui-mui/citydlg.c    8 Jul 2004 04:32:18 -0000
@@ -104,7 +104,7 @@
     return buffer;
   }
 
-  stock = pcity->food_stock;
+  stock = food_stock(pcity);
   cost = city_granary_size(pcity->size);
 
   stock += surplus;
@@ -139,7 +139,7 @@
     return buffer;
   }
 
-  stock = pcity->shield_stock;
+  stock = shield_stock(pcity);
   if (pcity->is_building_unit) {
     cost = unit_build_shield_cost(pcity->currently_building);
   } else {
@@ -1762,7 +1762,7 @@
   get_city_dialog_production(pcity, buf, sizeof(buf));
 
   if (pcity->is_building_unit) {
-    shield = pcity->shield_stock;
+    shield = shield_stock(pcity);
     max_shield = unit_build_shield_cost(pcity->currently_building);
     descr = get_unit_type(pcity->currently_building)->name;
   } else {
@@ -1773,7 +1773,7 @@
       shield = 0;
       max_shield = 1;
     } else {
-      shield = pcity->shield_stock;
+      shield = shield_stock(pcity);
       max_shield =
          impr_build_shield_cost(pcity->currently_building);
     }
@@ -1802,32 +1802,32 @@
   int granarystyle;
   int pollutionstyle;
 
-  if (pcity->food_surplus > 0) {
-    granaryturns = (city_granary_size(pcity->size) - pcity->food_stock +
-                   pcity->food_surplus - 1) / pcity->food_surplus;
-  } else if (pcity->food_surplus < 0) {
-    granaryturns = 1 - (pcity->food_stock / pcity->food_surplus);
+  if (food_surplus(pcity) > 0) {
+    granaryturns = (city_granary_size(pcity->size) - food_stock(pcity) +
+                   food_surplus(pcity) - 1) / food_surplus(pcity);
+  } else if (food_surplus(pcity) < 0) {
+    granaryturns = 1 - (food_stock(pcity) / food_surplus(pcity));
     /* turns before famine loss */
   } else {
     granaryturns = 999;
   }
 
-  growthstyle = (granaryturns == 0 || pcity->food_surplus < 0) ? RED : NORMAL;
-  granarystyle = (pcity->food_surplus < 0 && granaryturns < 4) ? RED : NORMAL;
-  pollutionstyle = (pcity->pollution >= 10) ? RED : NORMAL;
-
-  settextf(info->food_text, "%2d (%+2d)", pcity->food_prod, 
pcity->food_surplus);
-  settextf(info->shield_text, "%2d (%+2d)", pcity->shield_prod + 
pcity->shield_waste, pcity->shield_surplus);
-  settextf(info->trade_text, "%2d (%+2d)", pcity->trade_prod + 
pcity->corruption, pcity->trade_prod);
-  settextf(info->gold_text, "%2d (%+2d)", pcity->tax_total, 
city_gold_surplus(pcity));
-  settextf(info->luxury_text, "%2d", pcity->luxury_total);
-  settextf(info->science_text, "%2d", pcity->science_total);
+  growthstyle = (granaryturns == 0 || food_surplus(pcity) < 0) ? RED : NORMAL;
+  granarystyle = (food_surplus(pcity) < 0 && granaryturns < 4) ? RED : NORMAL;
+  pollutionstyle = (pollution(pcity) >= 10) ? RED : NORMAL;
+
+  settextf(info->food_text, "%2d (%+2d)", food_prod(pcity), 
food_surplus(pcity));
+  settextf(info->shield_text, "%2d (%+2d)", shield_prod(pcity) + 
shield_waste(pcity), shield_surplus(pcity));
+  settextf(info->trade_text, "%2d (%+2d)", trade_prod(pcity) + 
trade_waste(pcity), trade_prod(pcity));
+  settextf(info->gold_text, "%2d (%+2d)", gold_prod(pcity), 
city_gold_surplus(pcity));
+  settextf(info->luxury_text, "%2d", luxury_prod(pcity));
+  settextf(info->science_text, "%2d", science_prod(pcity));
 
   set(info->granary_text, MUIA_Text_PreParse, granarystyle==RED?MUIX_B:"");
   set(info->growth_text, MUIA_Text_PreParse, growthstyle==RED?MUIX_B:"");
   set(info->pollution_text, MUIA_Text_PreParse, pollutionstyle==RED?MUIX_B:"");
 
-  settextf(info->granary_text, "%ld/%-ld", pcity->food_stock, 
city_granary_size(pcity->size));
+  settextf(info->granary_text, "%ld/%-ld", food_stock(pcity), 
city_granary_size(pcity->size));
   if (granaryturns == 0) {
     settext(info->growth_text, _("blocked"));
   } else if (granaryturns == 999) {
@@ -1839,9 +1839,9 @@
     settext(info->growth_text,buf);
   }
 
-  settextf(info->corruption_text, "%ld", pcity->corruption);
-  settextf(info->waste_text, "%ld", pcity->shield_waste);
-  settextf(info->pollution_text, "%ld", pcity->pollution);
+  settextf(info->corruption_text, "%ld", trade_waste(pcity));
+  settextf(info->waste_text, "%ld", shield_waste(pcity));
+  settextf(info->pollution_text, "%ld", pollution(pcity));
 }
 
 /****************************************************************
@@ -2237,7 +2237,7 @@
 
   /* LUXURY */
   my_snprintf(bptr, nleft, _("Luxury: %d total (maximum %d usable). "),
-             pcity->luxury_total, 2 * pcity->size);
+             luxury_prod(pcity), 2 * pcity->size);
 
   settext(pdialog->happiness_citizen_text[1], buf);
 
Index: client/gui-win32/citydlg.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-win32/citydlg.c,v
retrieving revision 1.77
diff -u -r1.77 citydlg.c
--- client/gui-win32/citydlg.c  23 Jun 2004 04:33:13 -0000      1.77
+++ client/gui-win32/citydlg.c  8 Jul 2004 04:32:19 -0000
@@ -411,7 +411,7 @@
 {
   char buf[512];
   struct city *pcity=pdialog->pcity;
-  my_snprintf(buf, sizeof(buf), _("Pollution:   %3d"), pcity->pollution);   
+  my_snprintf(buf, sizeof(buf), _("Pollution:   %3d"), pollution(pcity));   
   SetWindowText(pdialog->pollution_area[0],buf);
   SetWindowText(pdialog->pollution_area[1],buf);
 }
@@ -425,7 +425,7 @@
   char buf[512];
   struct city *pcity = pdialog->pcity;
 
-  my_snprintf(buf, sizeof(buf), _("Granary: %3d/%-3d"), pcity->food_stock,
+  my_snprintf(buf, sizeof(buf), _("Granary: %3d/%-3d"), food_stock(pcity),
              city_granary_size(pcity->size));   
   SetWindowText(pdialog->storage_area[0],buf);
   SetWindowText(pdialog->storage_area[1],buf);
@@ -441,9 +441,9 @@
   struct city *pcity=pdialog->pcity;
   my_snprintf(buf, sizeof(buf),
              _("Food:    %2d (%+2d)\nProd:    %2d (%+2d)\nTrade:   %2d 
(%+2d)"),
-             pcity->food_prod, pcity->food_surplus,
-             pcity->shield_prod + pcity->shield_waste, pcity->shield_surplus,
-             pcity->trade_prod+pcity->corruption, pcity->trade_prod);          
    
+             food_prod(pcity), food_surplus(pcity),
+             shield_prod(pcity) + shield_waste(pcity), shield_surplus(pcity),
+             trade_prod(pcity)+trade_waste(pcity), trade_prod(pcity));         
     
   SetWindowText(pdialog->prod_area[0],buf);
   SetWindowText(pdialog->prod_area[1],buf);
 }
@@ -458,9 +458,9 @@
   struct city *pcity=pdialog->pcity;
   my_snprintf(buf, sizeof(buf),
              _("Gold:    %2d (%+2d)\nLuxury:  %2d\nScience: %2d"),
-             pcity->tax_total, city_gold_surplus(pcity),
-             pcity->luxury_total,
-             pcity->science_total);      
+             gold_prod(pcity), city_gold_surplus(pcity),
+             luxury_prod(pcity),
+             science_prod(pcity));      
   SetWindowText(pdialog->output_area[0],buf);
   SetWindowText(pdialog->output_area[1],buf);
 }
Index: client/gui-win32/happiness.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-win32/happiness.c,v
retrieving revision 1.5
diff -u -r1.5 happiness.c
--- client/gui-win32/happiness.c        15 Dec 2002 22:43:47 -0000      1.5
+++ client/gui-win32/happiness.c        8 Jul 2004 04:32:19 -0000
@@ -216,7 +216,7 @@
   struct city *pcity = pdialog->pcity;
 
   my_snprintf(bptr, nleft, _("Luxury: %d total."),
-              pcity->luxury_total);
+              luxury_prod(pcity));
 
   SetWindowText(pdialog->mod_label[LUXURIES], buf);
 }
Index: client/gui-xaw/citydlg.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/citydlg.c,v
retrieving revision 1.115
diff -u -r1.115 citydlg.c
--- client/gui-xaw/citydlg.c    5 May 2004 20:39:16 -0000       1.115
+++ client/gui-xaw/citydlg.c    8 Jul 2004 04:32:19 -0000
@@ -200,7 +200,7 @@
 
   if (pdialog) {
     pcity=pdialog->pcity;
-    pollution=pcity->pollution;
+    pollution=pollution(pcity);
   }
 
   my_snprintf(retbuf, n, _("Pollution:    %3d"), pollution);
@@ -220,7 +220,7 @@
   if (pdialog) {
     pcity=pdialog->pcity;
     granary=(city_got_effect(pcity, B_GRANARY) ? '*' : ' ');
-    foodstock=pcity->food_stock;
+    foodstock=food_stock(pcity);
     foodbox=city_granary_size(pcity->size);
   }
 
@@ -244,12 +244,12 @@
 
   if (pdialog) {
     pcity=pdialog->pcity;
-    foodprod=pcity->food_prod;
-    foodsurplus=pcity->food_surplus;
-    shieldprod=pcity->shield_prod + pcity->shield_waste;
-    shieldsurplus=pcity->shield_surplus;
-    tradeprod=pcity->trade_prod+pcity->corruption;
-    tradesurplus=pcity->trade_prod;
+    foodprod=food_prod(pcity);
+    foodsurplus=food_surplus(pcity);
+    shieldprod=shield_prod(pcity) + shield_waste(pcity);
+    shieldsurplus=shield_surplus(pcity);
+    tradeprod=trade_prod(pcity)+trade_waste(pcity);
+    tradesurplus=trade_prod(pcity);
   }
 
   my_snprintf(retbuf, n,
@@ -275,10 +275,10 @@
 
   if (pdialog) {
     pcity=pdialog->pcity;
-    goldtotal=pcity->tax_total;
+    goldtotal=gold_prod(pcity);
     goldsurplus=city_gold_surplus(pcity);
-    luxtotal=pcity->luxury_total;
-    scitotal=pcity->science_total;
+    luxtotal=luxury_prod(pcity);
+    scitotal=science_prod(pcity);
   }
 
   my_snprintf(retbuf, n, 
Index: common/city.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/common/city.c,v
retrieving revision 1.223
diff -u -r1.223 city.c
--- common/city.c       7 Jul 2004 12:11:01 -0000       1.223
+++ common/city.c       8 Jul 2004 04:32:20 -0000
@@ -356,7 +356,7 @@
 **************************************************************************/
 int city_buy_cost(const struct city *pcity)
 {
-  int cost, build = pcity->shield_stock;
+  int cost, build = shield_stock(pcity);
 
   if (pcity->is_building_unit) {
     cost = unit_buy_gold_cost(pcity->currently_building, build);
@@ -1088,7 +1088,7 @@
 
   /* Should this be real_map_distance? */
   tb = map_distance(pc1->x, pc1->y, pc2->x, pc2->y) + 10;
-  tb = (tb * (pc1->trade_prod + pc2->trade_prod)) / 24;
+  tb = (tb * (trade_prod(pc1) + trade_prod(pc2))) / 24;
 
   /*  fudge factor to more closely approximate Civ2 behavior (Civ2 is
    * really very different -- this just fakes it a little better) */
@@ -1136,7 +1136,7 @@
     cost += punit->upkeep_gold;
   } unit_list_iterate_end;
 
-  return pcity->tax_total-cost;
+  return gold_prod(pcity)-cost;
 }
 
 /**************************************************************************
@@ -1275,7 +1275,7 @@
 {
   struct government *g = get_gov_pcity(pcity);
 
-  return (pcity->rapture > 0 && pcity->food_surplus > 0
+  return (pcity->rapture > 0 && food_surplus(pcity) > 0
          && (pcity->rapture % game.rapturedelay) == 0
          && government_has_flag(g, G_RAPTURE_CITY_GROWTH));
 }
@@ -1526,7 +1526,7 @@
 int city_turns_to_build(const struct city *pcity, int id, bool id_is_unit,
                        bool include_shield_stock)
 {
-  int city_shield_surplus = pcity->shield_surplus;
+  int city_shield_surplus = shield_surplus(pcity);
   int city_shield_stock = include_shield_stock ?
       city_change_production_penalty(pcity, id, id_is_unit) : 0;
   int improvement_cost = id_is_unit ?
@@ -1552,12 +1552,12 @@
 **************************************************************************/
 int city_turns_to_grow(const struct city *pcity)
 {
-  if (pcity->food_surplus > 0) {
-    return (city_granary_size(pcity->size) - pcity->food_stock +
-           pcity->food_surplus - 1) / pcity->food_surplus;
-  } else if (pcity->food_surplus < 0) {
+  if (food_surplus(pcity) > 0) {
+    return (city_granary_size(pcity->size) - food_stock(pcity) +
+           food_surplus(pcity) - 1) / food_surplus(pcity);
+  } else if (food_surplus(pcity) < 0) {
     /* turns before famine loss */
-    return -1 + (pcity->food_stock / pcity->food_surplus);
+    return -1 + (food_stock(pcity) / food_surplus(pcity));
   } else {
     return FC_INFINITY;
   }
@@ -1801,7 +1801,7 @@
 
 /**************************************************************************
   Get the incomes of a city according to the taxrates (ignore # of 
-  specialists). trade should usually be pcity->trade_prod.
+  specialists). trade should usually be trade_prod(pcity).
 **************************************************************************/
 void get_tax_income(struct player *pplayer, int trade, int *sci, 
                     int *lux, int *tax)
@@ -1906,16 +1906,16 @@
 **************************************************************************/
 static inline void set_tax_income(struct city *pcity)
 {
-  get_tax_income(city_owner(pcity), pcity->trade_prod, &pcity->science_total, 
-                 &pcity->luxury_total, &pcity->tax_total);
+  get_tax_income(city_owner(pcity), trade_prod(pcity), &science_prod(pcity), 
+                 &luxury_prod(pcity), &gold_prod(pcity));
 
-  pcity->luxury_total += (pcity->specialists[SP_ELVIS]
+  luxury_prod(pcity) += (pcity->specialists[SP_ELVIS]
                          * game.rgame.specialists[SP_ELVIS].bonus);
-  pcity->science_total += (pcity->specialists[SP_SCIENTIST]
+  science_prod(pcity) += (pcity->specialists[SP_SCIENTIST]
                           * game.rgame.specialists[SP_SCIENTIST].bonus);
-  pcity->tax_total += (pcity->specialists[SP_TAXMAN]
+  gold_prod(pcity) += (pcity->specialists[SP_TAXMAN]
                        * game.rgame.specialists[SP_TAXMAN].bonus);
-  pcity->tax_total += get_city_tithes_bonus(pcity);
+  gold_prod(pcity) += get_city_tithes_bonus(pcity);
 }
 
 /**************************************************************************
@@ -1924,15 +1924,15 @@
 static void add_buildings_effect(struct city *pcity)
 {
   /* this is the place to set them */
-  pcity->tax_bonus = get_city_tax_bonus(pcity);
-  pcity->science_bonus = get_city_science_bonus(pcity);
-  pcity->shield_bonus = get_city_shield_bonus(pcity);
-
-  pcity->shield_prod = (pcity->shield_prod * pcity->shield_bonus) / 100;
-  pcity->luxury_total = (pcity->luxury_total * pcity->tax_bonus) / 100;
-  pcity->tax_total = (pcity->tax_total * pcity->tax_bonus) / 100;
-  pcity->science_total = (pcity->science_total * pcity->science_bonus) / 100;
-  pcity->shield_surplus = pcity->shield_prod;
+  gold_bonus(pcity) = get_city_tax_bonus(pcity);
+  science_bonus(pcity) = get_city_science_bonus(pcity);
+  shield_bonus(pcity) = get_city_shield_bonus(pcity);
+
+  shield_prod(pcity) = (shield_prod(pcity) * shield_bonus(pcity)) / 100;
+  luxury_prod(pcity) = (luxury_prod(pcity) * gold_bonus(pcity)) / 100;
+  gold_prod(pcity) = (gold_prod(pcity) * gold_bonus(pcity)) / 100;
+  science_prod(pcity) = (science_prod(pcity) * science_bonus(pcity)) / 100;
+  shield_surplus(pcity) = shield_prod(pcity);
 }
 
 /**************************************************************************
@@ -2019,7 +2019,7 @@
 **************************************************************************/
 static inline void citizen_happy_luxury(struct city *pcity)
 {
-  int x = pcity->luxury_total;
+  int x = luxury_prod(pcity);
 
   happy_copy(pcity, 0);
 
@@ -2142,10 +2142,10 @@
 static inline void unhappy_city_check(struct city *pcity)
 {
   if (city_unhappy(pcity)) {
-    pcity->food_surplus = MIN(0, pcity->food_surplus);
-    pcity->tax_total = 0;
-    pcity->science_total = 0;
-    pcity->shield_surplus = MIN(0, pcity->shield_surplus);
+    food_surplus(pcity) = MIN(0, food_surplus(pcity));
+    gold_prod(pcity) = 0;
+    science_prod(pcity) = 0;
+    shield_surplus(pcity) = MIN(0, shield_surplus(pcity));
   }
 }
 
@@ -2156,22 +2156,22 @@
 {
   struct player *pplayer = city_owner(pcity);
 
-  pcity->pollution = pcity->shield_prod;
+  pollution(pcity) = shield_prod(pcity);
   if (city_got_building(pcity, B_RECYCLING)) {
-    pcity->pollution /= 3;
+    pollution(pcity) /= 3;
   } else if (city_got_building(pcity, B_HYDRO) ||
             city_affected_by_wonder(pcity, B_HOOVER) ||
             city_got_building(pcity, B_NUCLEAR)) {
-    pcity->pollution /= 2;
+    pollution(pcity) /= 2;
   }
 
   if (!city_got_building(pcity, B_MASS)) {
-    pcity->pollution += (pcity->size *
+    pollution(pcity) += (pcity->size *
                         num_known_tech_with_flag
                         (pplayer, TF_POPULATION_POLLUTION_INC)) / 4;
   }
 
-  pcity->pollution = MAX(0, pcity->pollution - 20);
+  pollution(pcity) = MAX(0, pollution(pcity) - 20);
 }
 
 /**************************************************************************
@@ -2202,25 +2202,25 @@
 static inline void set_food_trade_shields(struct city *pcity)
 {
   int i;
-  pcity->food_surplus = 0;
-  pcity->shield_surplus = 0;
+  food_surplus(pcity) = 0;
+  shield_surplus(pcity) = 0;
 
-  get_food_trade_shields(pcity, &pcity->food_prod, &pcity->trade_prod,
-                         &pcity->shield_prod);
+  get_food_trade_shields(pcity, &food_prod(pcity), &trade_prod(pcity),
+                         &shield_prod(pcity));
   
-  pcity->tile_trade = pcity->trade_prod;
-  pcity->food_surplus = pcity->food_prod - pcity->size * 2;
+  pcity->tile_trade = trade_prod(pcity);
+  food_surplus(pcity) = food_prod(pcity) - pcity->size * 2;
 
   for (i = 0; i < NUM_TRADEROUTES; i++) {
     pcity->trade_value[i] =
        trade_between_cities(pcity, find_city_by_id(pcity->trade[i]));
-    pcity->trade_prod += pcity->trade_value[i];
+    trade_prod(pcity) += pcity->trade_value[i];
   }
-  pcity->corruption = city_corruption(pcity, pcity->trade_prod);
-  pcity->trade_prod -= pcity->corruption;
+  trade_waste(pcity) = city_corruption(pcity, trade_prod(pcity));
+  trade_prod(pcity) -= trade_waste(pcity);
 
-  pcity->shield_waste = city_waste(pcity, pcity->shield_prod);
-  pcity->shield_prod -= pcity->shield_waste;
+  shield_waste(pcity) = city_waste(pcity, shield_prod(pcity));
+  shield_prod(pcity) -= shield_waste(pcity);
 }
 
 /**************************************************************************
@@ -2330,14 +2330,14 @@
     if (shield_cost > 0) {
       adjust_city_free_cost(&free_shield, &shield_cost);
       if (shield_cost > 0) {
-       pcity->shield_surplus -= shield_cost;
+       shield_surplus(pcity) -= shield_cost;
        this_unit->upkeep = shield_cost;
       }
     }
     if (food_cost > 0) {
       adjust_city_free_cost(&free_food, &food_cost);
       if (food_cost > 0) {
-       pcity->food_surplus -= food_cost;
+       food_surplus(pcity) -= food_cost;
        this_unit->upkeep_food = food_cost;
       }
     }
@@ -2681,9 +2681,9 @@
   for (i = 0; i < NUM_TRADEROUTES; i++) {
     pcity->trade_value[i] = pcity->trade[i] = 0;
   }
-  pcity->food_stock = 0;
-  pcity->shield_stock = 0;
-  pcity->trade_prod = 0;
+  food_stock(pcity) = 0;
+  shield_stock(pcity) = 0;
+  trade_prod(pcity) = 0;
   pcity->tile_trade = 0;
   pcity->original = pplayer->player_no;
 
@@ -2732,11 +2732,11 @@
   pcity->ai.bcost = 0;
   pcity->ai.attack = 0;
 
-  pcity->corruption = 0;
-  pcity->shield_waste = 0;
-  pcity->shield_bonus = 100;
-  pcity->tax_bonus = 100;
-  pcity->science_bonus = 100;
+  trade_waste(pcity) = 0;
+  shield_waste(pcity) = 0;
+  shield_bonus(pcity) = 100;
+  gold_bonus(pcity) = 100;
+  science_bonus(pcity) = 100;
 
   pcity->client.occupied = FALSE;
   pcity->client.happy = pcity->client.unhappy = FALSE;
Index: common/city.h
===================================================================
RCS file: /home/freeciv/CVS/freeciv/common/city.h,v
retrieving revision 1.150
diff -u -r1.150 city.h
--- common/city.h       7 Jul 2004 07:26:04 -0000       1.150
+++ common/city.h       8 Jul 2004 04:32:20 -0000
@@ -344,6 +344,27 @@
 
 
 /* properties */
+#define food_prod(pcity) (pcity->food_prod)
+#define shield_prod(pcity) (pcity->shield_prod)
+#define trade_prod(pcity) (pcity->trade_prod)
+#define luxury_prod(pcity) (pcity->luxury_total)
+#define science_prod(pcity) (pcity->tax_total)
+#define gold_prod(pcity) (pcity->science_total)
+
+#define food_surplus(pcity) (pcity->food_surplus)
+#define shield_surplus(pcity) (pcity->shield_surplus)
+#define trade_surplus(pcity) (pcity->trade_surplus)
+#define pollution(pcity) (pcity->pollution)
+
+#define shield_waste(pcity) (pcity->shield_waste)
+#define trade_waste(pcity) (pcity->corruption)
+
+#define shield_stock(pcity) (pcity->shield_stock)
+#define food_stock(pcity) (pcity->food_stock)
+
+#define shield_bonus(pcity) (pcity->shield_bonus)
+#define science_bonus(pcity) (pcity->science_bonus)
+#define gold_bonus(pcity) (pcity->tax_bonus)
 
 struct player *city_owner(const struct city *pcity);
 int city_population(const struct city *pcity);
Index: common/player.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/common/player.c,v
retrieving revision 1.140
diff -u -r1.140 player.c
--- common/player.c     7 Jul 2004 07:32:03 -0000       1.140
+++ common/player.c     8 Jul 2004 04:32:20 -0000
@@ -411,7 +411,7 @@
 
   /* City income/expenses. */
   city_list_iterate(pplayer->cities, pcity) {
-    int lux, tax, sci, trade = pcity->trade_prod;
+    int lux, tax, sci, trade = trade_prod(pcity);
 
     get_tax_income(pplayer, trade, &sci, &lux, &tax);
     income += tax;
@@ -428,7 +428,7 @@
 
     /* Capitalization income. */
     if (!pcity->is_building_unit && pcity->currently_building == B_CAPITAL) {
-      income += pcity->shield_stock + pcity->shield_surplus;
+      income += shield_stock(pcity) + shield_surplus(pcity);
     }
   } city_list_iterate_end;
 
Index: common/unit.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/common/unit.c,v
retrieving revision 1.211
diff -u -r1.211 unit.c
--- common/unit.c       25 Jun 2004 23:29:59 -0000      1.211
+++ common/unit.c       8 Jul 2004 04:32:21 -0000
@@ -229,7 +229,7 @@
   return (unit_flag(punit, F_HELP_WONDER)
          && punit->owner == pcity->owner
          && !pcity->is_building_unit && is_wonder(pcity->currently_building)
-         && (pcity->shield_stock
+         && (shield_stock(pcity)
              < impr_build_shield_cost(pcity->currently_building)));
 }
 
Index: common/aicore/cm.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/common/aicore/cm.c,v
retrieving revision 1.28
diff -u -r1.28 cm.c
--- common/aicore/cm.c  25 Jun 2004 23:35:55 -0000      1.28
+++ common/aicore/cm.c  8 Jul 2004 04:32:21 -0000
@@ -354,16 +354,16 @@
   } my_city_map_iterate_end;
 
   freelog(LOG_NORMAL, "  food    = %3d (%+3d)",
-         pcity->food_prod, pcity->food_surplus);
+         food_prod(pcity), food_surplus(pcity));
   freelog(LOG_NORMAL, "  shield  = %3d (%+3d)",
-         pcity->shield_prod + pcity->shield_waste, pcity->shield_prod);
+         shield_prod(pcity) + shield_waste(pcity), shield_prod(pcity));
   freelog(LOG_NORMAL, "  trade   = %3d (%+3d)",
-         pcity->trade_prod + pcity->corruption, pcity->trade_prod);
+         trade_prod(pcity) + trade_waste(pcity), trade_prod(pcity));
 
-  freelog(LOG_NORMAL, "  gold    = %3d (%+3d)", pcity->tax_total,
+  freelog(LOG_NORMAL, "  gold    = %3d (%+3d)", gold_prod(pcity),
          city_gold_surplus(pcity));
-  freelog(LOG_NORMAL, "  luxury  = %3d", pcity->luxury_total);
-  freelog(LOG_NORMAL, "  science = %3d", pcity->science_total);
+  freelog(LOG_NORMAL, "  luxury  = %3d", luxury_prod(pcity));
+  freelog(LOG_NORMAL, "  science = %3d", science_prod(pcity));
 }
 
 /****************************************************************************
@@ -450,17 +450,17 @@
 *****************************************************************************/
 static void copy_stats(struct city *pcity, struct cm_result *result)
 {
-  result->production[FOOD] = pcity->food_prod;
-  result->production[SHIELD] = pcity->shield_prod + pcity->shield_waste;
-  result->production[TRADE] = pcity->trade_prod + pcity->corruption;
-
-  result->surplus[FOOD] = pcity->food_surplus;
-  result->surplus[SHIELD] = pcity->shield_surplus;
-  result->surplus[TRADE] = pcity->trade_prod;
-
-  result->production[GOLD] = pcity->tax_total;
-  result->production[LUXURY] = pcity->luxury_total;
-  result->production[SCIENCE] = pcity->science_total;
+  result->production[FOOD] = food_prod(pcity);
+  result->production[SHIELD] = shield_prod(pcity) + shield_waste(pcity);
+  result->production[TRADE] = trade_prod(pcity) + trade_waste(pcity);
+
+  result->surplus[FOOD] = food_surplus(pcity);
+  result->surplus[SHIELD] = shield_surplus(pcity);
+  result->surplus[TRADE] = trade_prod(pcity);
+
+  result->production[GOLD] = gold_prod(pcity);
+  result->production[LUXURY] = luxury_prod(pcity);
+  result->production[SCIENCE] = science_prod(pcity);
 
   result->surplus[GOLD] = city_gold_surplus(pcity);
   result->surplus[LUXURY] = result->production[LUXURY];
Index: server/cityhand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/cityhand.c,v
retrieving revision 1.132
diff -u -r1.132 cityhand.c
--- server/cityhand.c   2 Jun 2004 22:54:15 -0000       1.132
+++ server/cityhand.c   8 Jul 2004 04:32:22 -0000
@@ -259,11 +259,11 @@
    */
 
   pplayer->economic.gold-=cost;
-  if (pcity->shield_stock < total){
+  if (shield_stock(pcity) < total){
     /* As we never put penalty on disbanded_shields, we can
      * fully well add the missing shields there. */
-    pcity->disbanded_shields += total - pcity->shield_stock;
-    pcity->shield_stock=total; /* AI wants this -- Syela */
+    pcity->disbanded_shields += total - shield_stock(pcity);
+    shield_stock(pcity)=total; /* AI wants this -- Syela */
     pcity->did_buy = TRUE;     /* !PS: no need to set buy flag otherwise */
   }
   city_refresh(pcity);
@@ -344,7 +344,7 @@
      return;
    if (!is_build_id_unit_id && !can_build_improvement(pcity, build_id))
      return;
-  if (pcity->did_buy && pcity->shield_stock > 0) {
+  if (pcity->did_buy && shield_stock(pcity) > 0) {
     notify_player_ex(pplayer, pcity->x, pcity->y, E_NOEVENT,
                     _("Game: You have bought this turn, can't change."));
     return;
Index: server/citytools.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/citytools.c,v
retrieving revision 1.261
diff -u -r1.261 citytools.c
--- server/citytools.c  14 Jun 2004 23:43:08 -0000      1.261
+++ server/citytools.c  8 Jul 2004 04:32:22 -0000
@@ -418,7 +418,7 @@
 {
   int cost = impr_build_shield_cost(pcity->currently_building);
 
-  return cost - pcity->shield_stock;
+  return cost - shield_stock(pcity);
 }
 
 /**************************************************************************
@@ -621,7 +621,7 @@
 **************************************************************************/
 int city_shield_bonus(struct city *pcity)
 {
-  return pcity->shield_bonus;
+  return shield_bonus(pcity);
 }
 
 /**************************************************************************
@@ -629,7 +629,7 @@
 **************************************************************************/
 int city_tax_bonus(struct city *pcity)
 {
-  return pcity->tax_bonus;
+  return gold_bonus(pcity);
 }
 
 /**************************************************************************
@@ -637,7 +637,7 @@
 **************************************************************************/
 int city_science_bonus(struct city *pcity)
 {
-  return pcity->science_bonus;
+  return science_bonus(pcity);
 }
 
 /**************************************************************************
@@ -833,7 +833,7 @@
   } built_impr_iterate_end;
 
   nullify_prechange_production(pcity);
-  pcity->shield_stock = 0;
+  shield_stock(pcity) = 0;
 }
 
 /**************************************************************************
@@ -1695,23 +1695,23 @@
     packet->trade_value[i]=pcity->trade_value[i];
   }
 
-  packet->food_prod=pcity->food_prod;
-  packet->food_surplus=pcity->food_surplus;
-  packet->shield_prod=pcity->shield_prod;
-  packet->shield_surplus=pcity->shield_surplus;
-  packet->trade_prod=pcity->trade_prod;
+  packet->food_prod=food_prod(pcity);
+  packet->food_surplus=food_surplus(pcity);
+  packet->shield_prod=shield_prod(pcity);
+  packet->shield_surplus=shield_surplus(pcity);
+  packet->trade_prod=trade_prod(pcity);
   packet->tile_trade=pcity->tile_trade;
-  packet->corruption=pcity->corruption;
+  packet->corruption=trade_waste(pcity);
   
-  packet->shield_waste=pcity->shield_waste;
+  packet->shield_waste=shield_waste(pcity);
     
-  packet->luxury_total=pcity->luxury_total;
-  packet->tax_total=pcity->tax_total;
-  packet->science_total=pcity->science_total;
+  packet->luxury_total=luxury_prod(pcity);
+  packet->tax_total=gold_prod(pcity);
+  packet->science_total=science_prod(pcity);
   
-  packet->food_stock=pcity->food_stock;
-  packet->shield_stock=pcity->shield_stock;
-  packet->pollution=pcity->pollution;
+  packet->food_stock=food_stock(pcity);
+  packet->shield_stock=shield_stock(pcity);
+  packet->pollution=pollution(pcity);
 
   packet->city_options=pcity->city_options;
   
@@ -1943,7 +1943,7 @@
 
   /* Manage the city change-production penalty.
      (May penalize, restore or do nothing to the shield_stock.) */
-  pcity->shield_stock = city_change_production_penalty(pcity, target, is_unit);
+  shield_stock(pcity) = city_change_production_penalty(pcity, target, is_unit);
 
   /* Change build target. */
   pcity->currently_building = target;
Index: server/cityturn.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/cityturn.c,v
retrieving revision 1.250
diff -u -r1.250 cityturn.c
--- server/cityturn.c   7 Jul 2004 07:32:03 -0000       1.250
+++ server/cityturn.c   8 Jul 2004 04:32:24 -0000
@@ -248,7 +248,7 @@
       cm_query_result(pcity, &cmp, &cmr);
 
       if (!cmr.found_a_valid) {
-       cmp.minimal_surplus[FOOD] = -(pcity->food_stock);
+       cmp.minimal_surplus[FOOD] = -(food_stock(pcity));
        cmp.minimal_surplus[TRADE] = -FC_INFINITY;
        cm_query_result(pcity, &cmp, &cmr);
       }
@@ -311,15 +311,15 @@
   int turns_growth, turns_granary;
   bool can_grow;
  
-  if (pcity->food_surplus > 0) {
-    turns_growth = (city_granary_size(pcity->size) - pcity->food_stock - 1)
-                  / pcity->food_surplus;
+  if (food_surplus(pcity) > 0) {
+    turns_growth = (city_granary_size(pcity->size) - food_stock(pcity) - 1)
+                  / food_surplus(pcity);
 
     if (!city_got_effect(pcity,B_GRANARY) && !pcity->is_building_unit
        && pcity->currently_building == B_GRANARY
-       && pcity->shield_surplus > 0) {
+       && shield_surplus(pcity) > 0) {
       turns_granary = (impr_build_shield_cost(B_GRANARY)
-                      - pcity->shield_stock) / pcity->shield_surplus;
+                      - shield_stock(pcity)) / shield_surplus(pcity);
       /* if growth and granary completion occur simultaneously, granary
         preserves food.  -AJS */
       if (turns_growth < 5 && turns_granary < 5
@@ -344,7 +344,7 @@
                       pcity->name, pcity->size + 1);
     }
   } else {
-    if (pcity->food_stock + pcity->food_surplus <= 0 && pcity->food_surplus < 
0) {
+    if (food_stock(pcity) + food_surplus(pcity) <= 0 && food_surplus(pcity) < 
0) {
       notify_conn_ex(dest, pcity->x, pcity->y,
                     E_CITY_FAMINE_FEARED,
                     _("Game: Warning: Famine feared in %s."),
@@ -397,8 +397,8 @@
   pcity->size -= pop_loss;
 
   /* Cap the food stock at the new granary size. */
-  if (pcity->food_stock > city_granary_size(pcity->size)) {
-    pcity->food_stock = city_granary_size(pcity->size);
+  if (food_stock(pcity) > city_granary_size(pcity->size)) {
+    food_stock(pcity) = city_granary_size(pcity->size);
   }
 
   /* First try to kill off the specialists */
@@ -462,7 +462,7 @@
     /* Granary can only hold so much */
     new_food = (city_granary_size(pcity->size) *
                (100 - game.aqueductloss / (1 + (has_granary ? 1 : 0)))) / 100;
-    pcity->food_stock = MIN(pcity->food_stock, new_food);
+    food_stock(pcity) = MIN(food_stock(pcity), new_food);
     return;
   }
 
@@ -481,7 +481,7 @@
     /* Granary can only hold so much */
     new_food = (city_granary_size(pcity->size) *
                (100 - game.aqueductloss / (1 + (has_granary ? 1 : 0)))) / 100;
-    pcity->food_stock = MIN(pcity->food_stock, new_food);
+    food_stock(pcity) = MIN(food_stock(pcity), new_food);
     return;
   }
 
@@ -495,7 +495,7 @@
     else
       new_food = 0;
   }
-  pcity->food_stock = MIN(pcity->food_stock, new_food);
+  food_stock(pcity) = MIN(food_stock(pcity), new_food);
 
   /* If there is enough food, and the city is big enough,
    * make new citizens into scientists or taxmen -- Massimo */
@@ -506,7 +506,7 @@
       have_square = TRUE;
     }
   } city_map_iterate_end;
-  if (((pcity->food_surplus >= 2) || !have_square)  &&  pcity->size >= 5  &&
+  if (((food_surplus(pcity) >= 2) || !have_square)  &&  pcity->size >= 5  &&
       (is_city_option_set(pcity, CITYO_NEW_EINSTEIN) || 
        is_city_option_set(pcity, CITYO_NEW_TAXMAN))) {
 
@@ -536,12 +536,12 @@
 **************************************************************************/
 static void city_populate(struct city *pcity)
 {
-  pcity->food_stock+=pcity->food_surplus;
-  if(pcity->food_stock >= city_granary_size(pcity->size) 
+  food_stock(pcity)+=food_surplus(pcity);
+  if(food_stock(pcity) >= city_granary_size(pcity->size) 
      || city_rapture_grow(pcity)) {
     city_increase_size(pcity);
   }
-  else if(pcity->food_stock<0) {
+  else if(food_stock(pcity)<0) {
     /* FIXME: should this depend on units with ability to build
      * cities or on units that require food in uppkeep?
      * I'll assume citybuilders (units that 'contain' 1 pop) -- sjolie
@@ -560,9 +560,9 @@
        gamelog(GAMELOG_UNITFS, _("%s lose %s (famine)"),
                get_nation_name_plural(city_owner(pcity)->nation), utname);
        if (city_got_effect(pcity, B_GRANARY))
-         pcity->food_stock=city_granary_size(pcity->size)/2;
+         food_stock(pcity)=city_granary_size(pcity->size)/2;
        else
-         pcity->food_stock=0;
+         food_stock(pcity)=0;
        return;
       }
     } unit_list_iterate_safe_end;
@@ -570,9 +570,9 @@
                     _("Game: Famine causes population loss in %s."),
                     pcity->name);
     if (city_got_effect(pcity, B_GRANARY))
-      pcity->food_stock = city_granary_size(pcity->size - 1) / 2;
+      food_stock(pcity) = city_granary_size(pcity->size - 1) / 2;
     else
-      pcity->food_stock = 0;
+      food_stock(pcity) = 0;
     city_reduce_size(pcity, 1);
   }
 }
@@ -864,21 +864,21 @@
 {
   struct government *g = get_gov_pplayer(pplayer);
 
-  if (pcity->shield_surplus < 0) {
+  if (shield_surplus(pcity) < 0) {
     unit_list_iterate_safe(pcity->units_supported, punit) {
       if (utype_shield_cost(unit_type(punit), g) > 0
-         && pcity->shield_surplus < 0
+         && shield_surplus(pcity) < 0
           && !unit_flag(punit, F_UNDISBANDABLE)) {
        notify_player_ex(pplayer, pcity->x, pcity->y, E_UNIT_LOST,
                         _("Game: %s can't upkeep %s, unit disbanded."),
                         pcity->name, unit_type(punit)->name);
         handle_unit_disband(pplayer, punit->id);
-       /* pcity->shield_surplus is automatically updated. */
+       /* shield_surplus(pcity) is automatically updated. */
       }
     } unit_list_iterate_safe_end;
   }
 
-  if (pcity->shield_surplus < 0) {
+  if (shield_surplus(pcity) < 0) {
     /* Special case: F_UNDISBANDABLE. This nasty unit won't go so easily.
      * It'd rather make the citizens pay in blood for their failure to upkeep
      * it! If we make it here all normal units are already disbanded, so only
@@ -886,7 +886,7 @@
     unit_list_iterate_safe(pcity->units_supported, punit) {
       int upkeep = utype_shield_cost(unit_type(punit), g);
 
-      if (upkeep > 0 && pcity->shield_surplus < 0) {
+      if (upkeep > 0 && shield_surplus(pcity) < 0) {
        assert(unit_flag(punit, F_UNDISBANDABLE));
        notify_player_ex(pplayer, pcity->x, pcity->y, E_UNIT_LOST,
                         _("Game: Citizens in %s perish for their failure to "
@@ -896,15 +896,15 @@
        }
 
        /* No upkeep for the unit this turn. */
-       pcity->shield_surplus += upkeep;
+       shield_surplus(pcity) += upkeep;
       }
     } unit_list_iterate_safe_end;
   }
 
   /* Now we confirm changes made last turn. */
-  pcity->shield_stock += pcity->shield_surplus;
-  pcity->before_change_shields = pcity->shield_stock;
-  pcity->last_turns_shield_surplus = pcity->shield_surplus;
+  shield_stock(pcity) += shield_surplus(pcity);
+  pcity->before_change_shields = shield_stock(pcity);
+  pcity->last_turns_shield_surplus = shield_surplus(pcity);
 
   return TRUE;
 }
@@ -917,12 +917,12 @@
   bool space_part;
 
   if (pcity->currently_building == B_CAPITAL) {
-    assert(pcity->shield_surplus >= 0);
+    assert(shield_surplus(pcity) >= 0);
     /* pcity->before_change_shields already contains the surplus from
      * this turn. */
     pplayer->economic.gold += pcity->before_change_shields;
     pcity->before_change_shields = 0;
-    pcity->shield_stock = 0;
+    shield_stock(pcity) = 0;
   }
   upgrade_building_prod(pcity);
   if (!can_build_improvement(pcity, pcity->currently_building)) {
@@ -934,7 +934,7 @@
                                                   currently_building));
     return TRUE;
   }
-  if (pcity->shield_stock
+  if (shield_stock(pcity)
       >= impr_build_shield_cost(pcity->currently_building)) {
     if (pcity->currently_building == B_PALACE) {
       city_list_iterate(pplayer->cities, palace) {
@@ -958,7 +958,7 @@
     }
     pcity->before_change_shields -=
        impr_build_shield_cost(pcity->currently_building);
-    pcity->shield_stock -= impr_build_shield_cost(pcity->currently_building);
+    shield_stock(pcity) -= impr_build_shield_cost(pcity->currently_building);
     pcity->turn_last_built = game.year;
     /* to eliminate micromanagement */
     if (is_wonder(pcity->currently_building)) {
@@ -1057,7 +1057,7 @@
             pplayer->name, pcity->name, unit_name(pcity->currently_building)); 
           
     return TRUE;
   }
-  if (pcity->shield_stock
+  if (shield_stock(pcity)
       >= unit_build_shield_cost(pcity->currently_building)) {
     int pop_cost = unit_pop_value(pcity->currently_building);
 
@@ -1094,7 +1094,7 @@
        cost */
     pcity->before_change_shields
       -= unit_build_shield_cost(pcity->currently_building);
-    pcity->shield_stock
+    shield_stock(pcity)
       -= unit_build_shield_cost(pcity->currently_building);
 
     notify_player_ex(pplayer, pcity->x, pcity->y, E_UNIT_BUILT,
@@ -1166,7 +1166,7 @@
 static void check_pollution(struct city *pcity)
 {
   int k=100;
-  if (pcity->pollution != 0 && myrand(100) <= pcity->pollution) {
+  if (pollution(pcity) != 0 && myrand(100) <= pollution(pcity)) {
     while (k > 0) {
       /* place pollution somewhere in city radius */
       int cx = myrand(CITY_MAP_SIZE);
@@ -1368,8 +1368,8 @@
       pcity->airlift=TRUE;
     else
       pcity->airlift=FALSE;
-    update_tech(pplayer, pcity->science_total);
-    pplayer->economic.gold+=pcity->tax_total;
+    update_tech(pplayer, science_prod(pcity));
+    pplayer->economic.gold+=gold_prod(pcity);
     pay_for_units(pplayer, pcity);
     pay_for_buildings(pplayer, pcity);
 
Index: server/diplomats.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/diplomats.c,v
retrieving revision 1.56
diff -u -r1.56 diplomats.c
--- server/diplomats.c  14 Apr 2004 10:14:39 -0000      1.56
+++ server/diplomats.c  8 Jul 2004 04:32:24 -0000
@@ -821,7 +821,7 @@
                   _("Game: %s has revolted, %s influence suspected."),
                   pcity->name, get_nation_name(pplayer->nation));
 
-  pcity->shield_stock = 0;
+  shield_stock(pcity) = 0;
   nullify_prechange_production(pcity);
 
   /* You get a technology advance, too! */
@@ -934,7 +934,7 @@
      * Won't pick something that doesn't exit.
      * If nothing to do, say so, deduct movement cost and return.
      */
-    if (count == 0 && pcity->shield_stock == 0) {
+    if (count == 0 && shield_stock(pcity) == 0) {
       notify_player_ex(pplayer, pcity->x, pcity->y, E_MY_DIPLOMAT_FAILED,
                       _("Game: Your %s could not find anything to"
                         " sabotage in %s."), unit_name(pdiplomat->type),
@@ -1004,7 +1004,7 @@
     /* Sabotage current production. */
 
     /* Do it. */
-    pcity->shield_stock = 0;
+    shield_stock(pcity) = 0;
     nullify_prechange_production(pcity); /* Make it impossible to recover */
 
     /* Report it. */
Index: server/report.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/report.c,v
retrieving revision 1.51
diff -u -r1.51 report.c
--- server/report.c     23 Jun 2004 01:52:23 -0000      1.51
+++ server/report.c     8 Jul 2004 04:32:24 -0000
@@ -521,7 +521,7 @@
   int result = 0;
 
   city_list_iterate(pplayer->cities, pcity) {
-    result += pcity->corruption;
+    result += trade_waste(pcity);
   } city_list_iterate_end;
 
   return result;
Index: server/savegame.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/savegame.c,v
retrieving revision 1.163
diff -u -r1.163 savegame.c
--- server/savegame.c   6 Jul 2004 21:48:48 -0000       1.163
+++ server/savegame.c   8 Jul 2004 04:32:24 -0000
@@ -1257,11 +1257,11 @@
       pcity->trade[j]=secfile_lookup_int(file, "player%d.c%d.traderoute%d",
                                         plrno, i, j);
     
-    pcity->food_stock=secfile_lookup_int(file, "player%d.c%d.food_stock", 
+    food_stock(pcity)=secfile_lookup_int(file, "player%d.c%d.food_stock", 
                                                 plrno, i);
-    pcity->shield_stock=secfile_lookup_int(file, "player%d.c%d.shield_stock", 
+    shield_stock(pcity)=secfile_lookup_int(file, "player%d.c%d.shield_stock", 
                                                   plrno, i);
-    pcity->tile_trade=pcity->trade_prod=0;
+    pcity->tile_trade=trade_prod(pcity)=0;
     pcity->anarchy=secfile_lookup_int(file, "player%d.c%d.anarchy", plrno,i);
     pcity->rapture=secfile_lookup_int_default(file, 0, "player%d.c%d.rapture", 
plrno,i);
     pcity->was_happy=secfile_lookup_bool(file, "player%d.c%d.was_happy", 
plrno,i);
@@ -1281,7 +1281,7 @@
       secfile_lookup_bool_default(file, pcity->is_building_unit,
                                 "player%d.c%d.changed_from_is_unit", plrno, i);
     pcity->before_change_shields=
-      secfile_lookup_int_default(file, pcity->shield_stock,
+      secfile_lookup_int_default(file, shield_stock(pcity),
                                 "player%d.c%d.before_change_shields", plrno, 
i);
     pcity->disbanded_shields=
       secfile_lookup_int_default(file, 0,
@@ -1876,9 +1876,9 @@
       secfile_insert_int(file, pcity->trade[j], "player%d.c%d.traderoute%d", 
                         plrno, i, j);
     
-    secfile_insert_int(file, pcity->food_stock, "player%d.c%d.food_stock", 
+    secfile_insert_int(file, food_stock(pcity), "player%d.c%d.food_stock", 
                       plrno, i);
-    secfile_insert_int(file, pcity->shield_stock, "player%d.c%d.shield_stock", 
+    secfile_insert_int(file, shield_stock(pcity), "player%d.c%d.shield_stock", 
                       plrno, i);
     secfile_insert_int(file, pcity->turn_last_built,
                       "player%d.c%d.turn_last_built", plrno, i);
Index: server/score.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/score.c,v
retrieving revision 1.5
diff -u -r1.5 score.c
--- server/score.c      27 May 2004 22:14:19 -0000      1.5
+++ server/score.c      8 Jul 2004 04:32:25 -0000
@@ -417,10 +417,10 @@
     pplayer->score.elvis += pcity->specialists[SP_ELVIS];
     pplayer->score.population += city_population(pcity);
     pplayer->score.cities++;
-    pplayer->score.pollution += pcity->pollution;
-    pplayer->score.techout += pcity->science_total;
-    pplayer->score.bnp += pcity->trade_prod;
-    pplayer->score.mfg += pcity->shield_surplus;
+    pplayer->score.pollution += pollution(pcity);
+    pplayer->score.techout += science_prod(pcity);
+    pplayer->score.bnp += trade_prod(pcity);
+    pplayer->score.mfg += shield_surplus(pcity);
     if (city_got_building(pcity, B_UNIVERSITY)) {
       pplayer->score.literacy += city_population(pcity);
     } else if (city_got_building(pcity,B_LIBRARY)) {
Index: server/srv_main.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/srv_main.c,v
retrieving revision 1.171
diff -u -r1.171 srv_main.c
--- server/srv_main.c   30 Jun 2004 07:59:26 -0000      1.171
+++ server/srv_main.c   8 Jul 2004 04:32:25 -0000
@@ -599,9 +599,9 @@
       } unit_list_iterate_end;
       city_list_iterate(pplayer->cities, pcity) {
         workers += pcity->size;
-        shields += pcity->shield_prod;
-        food += pcity->food_prod;
-        trade += pcity->trade_prod;
+        shields += shield_prod(pcity);
+        food += food_prod(pcity);
+        trade += trade_prod(pcity);
       } city_list_iterate_end;
       gamelog(GAMELOG_NORMAL, "INFO %s cities %d, pop %d "
               "food %d, prod %d, trade %d, settlers %d, units %d",
Index: server/unithand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/unithand.c,v
retrieving revision 1.299
diff -u -r1.299 unithand.c
--- server/unithand.c   27 May 2004 22:14:19 -0000      1.299
+++ server/unithand.c   8 Jul 2004 04:32:26 -0000
@@ -363,7 +363,7 @@
 
   if (!unit_flag(punit, F_UNDISBANDABLE)) { /* refuse to kill ourselves */
     if (pcity) {
-      pcity->shield_stock += unit_disband_shields(punit->type);
+      shield_stock(pcity) += unit_disband_shields(punit->type);
       /* If we change production later at this turn. No penalty is added. */
       pcity->disbanded_shields += unit_disband_shields(punit->type);
 
@@ -1196,7 +1196,7 @@
     return;
   }
 
-  pcity_dest->shield_stock += unit_build_shield_cost(punit->type);
+  shield_stock(pcity_dest) += unit_build_shield_cost(punit->type);
   pcity_dest->caravan_shields += unit_build_shield_cost(punit->type);
 
   conn_list_do_buffer(&pplayer->connections);

[Prev in Thread] Current Thread [Next in Thread]
  • [Freeciv-Dev] (PR#9311) accessors for city output values, Jason Short <=