My Antal1987-List

About era adding: I'm not sure that the techbox from the 64 images array are really useful in terme of gameplay.
There are different size (to show icons of what it gives) and different colours (already researched, path to targeted tech, others), and just a border which varies a little with the era (wood/steel for example).
But I think this part is not important: I'd gladly exchange the possibility to have more working eras with the constraint to have the same border for all tehboxes.
So, why not modified the formulas like

_this->Advance_Boxes_Images[16 * _Box_Type + _EraID]

to

_this->Advance_Boxes_Images[16 * _Box_Type + 0]

i;e. always use the graphics of the first era?

It may not be always possible, but in that case it could help.

Or maybe in the editor we could have "era groups"
Define that era 1 to 4 share the graphics from EraId =0, then 5 tgo 8 share EraId =1...

So the rendering would allow less graphics (only 4 eras), but the tech tree would allow more techs?

Another question.

Do you think it can be possible to have more levels of roads / irrigation / mines that we currently have?

Like with "agriculture" you can have "fields" with +1 food. But with "agro-industrie" you can have "large farms" with +3 food?
 
There are also a few annoying things with unit animation. I'm not sure since I didn't mod for a long time, but for instance some worker action (plant farm and clear pollution I think) are using the same animation.
Would it be possible to have different animation for these actions?

Same for the animation played when a ground unit tries to destroy a plan IIRC. It's a generic missile, and not linked to the unit.

Or have a different animation for a plan bombing a land units vs bombing a ship (torpedo).
Or if it's not possible with animation, would it be possible to have a flag "can bomb land". "can bomb sea"? this could be very useful to allow submarine to "bomb" other ships with torpedo; but prevent them from bombing a land unit.
 
Do you think it can be possible to have more levels of roads / irrigation / mines that we currently have?

Like with "agriculture" you can have "fields" with +1 food. But with "agro-industrie" you can have "large farms" with +3 food?

It's possible.
There are only 3 function which calculate tile resources (0 - Food, 1 - Shields, 2 - Trade): 1 function per resource type.
Here they are:

class_Map::Calculate_Tile_Food
Code:
int __thiscall class_Map::Calculate_Tile_Food(class_Map *this, int X, int Y, int SquareType, int CivID, int Flag, class_City *City)
{
  int _Y; // edi@1
  class_Map *_Map; // esi@1
  class_Tile *_Tile2; // eax@1
  signed int _TileIndex; // eax@3
  class_Tile *_Tile; // ebx@5
  int v13; // eax@7
  int v14; // eax@12
  int _FoodBase; // eax@12
  class_Tile *v16; // eax@15
  class_Tile *v17; // eax@17
  int v18; // eax@20
  int _IrrigationBonus; // eax@20
  class_Tile *v20; // eax@23
  int v21; // ebx@25
  class_Tile *v22; // eax@28
  class_Tile *v23; // eax@34
  signed int v24; // eax@35
  class_Tile *_Tile3; // eax@37
  struct_Map_vtable *v26; // ebp@39
  __int16 v27; // ax@39
  class_Tile *v28; // eax@43
  class_Tile *v29; // eax@44
  int v30; // eax@44
  int _X; // ebp@46
  class_Tile *v32; // eax@46
  class_Tile *v33; // eax@50
  signed int _TotalFood2; // eax@52
  signed int v35; // [sp+3Ch] [bp-8h]@9
  signed int _TotalFood; // [sp+4Ch] [bp+8h]@14

  _Y = Y;
  _Map = this;
  _Tile2 = this->vtable->m12_Get_Tile_by_XY(this, X, Y);
  if ( _Tile2->vtable->m20_Check_Pollution(_Tile2, 0) )
    return 0;
  _TileIndex = ((X >> 1) + Y * (BIC_Data.Map.Width >> 1));
  if ( BIC_Data.Map.Tiles && _TileIndex < LOWORD(BIC_Data.Map.TileCount) )
    _Tile = BIC_Data.Map.Tiles[_TileIndex];
  else
    _Tile = &DefaultTile;
  v13 = _Tile->ResourceType;
  if ( v13 != -1 && class_Leader::Check_Advance(&Civilizations[CivID], BIC_Data.ResourceTypes[v13].RequireID) )
    v35 = _Tile->ResourceType;
  else
    v35 = -1;
  if ( _Tile->vtable->m30_Check_is_LM(_Tile) )
  {
    v14 = _Tile->vtable->m50_Get_Square_BaseType(_Tile);
    _FoodBase = struct_Tile_Type::Get_LM_Food_Base(&BIC_Data.TileTypes[v14]);
  }
  else
  {
    _FoodBase = BIC_Data.TileTypes[_Tile->vtable->m50_Get_Square_BaseType(_Tile)].FoodBase;
  }
  _TotalFood = _FoodBase;
  if ( _FoodBase > 0 )
  {
    v16 = _Map->vtable->m12_Get_Tile_by_XY(_Map, X, _Y);
    if ( v16->vtable->m21_Check_Crates(v16, 0) )
      --_TotalFood;
  }
  v17 = _Map->vtable->m12_Get_Tile_by_XY(_Map, X, _Y);
  if ( v17->vtable->m17_Check_Irrigation(v17, 0) || Flag )
  {
    if ( _Tile->vtable->m30_Check_is_LM(_Tile) )
    {
      v18 = _Tile->vtable->m50_Get_Square_BaseType(_Tile);
      _IrrigationBonus = struct_Tile_Type::Get_LM_Irrigation_Bonus(&BIC_Data.TileTypes[v18]);
    }
    else
    {
      _IrrigationBonus = BIC_Data.TileTypes[_Tile->vtable->m50_Get_Square_BaseType(_Tile)].IrrigationBonus;
    }
    _TotalFood += _IrrigationBonus;
    if ( _IrrigationBonus > 0
      && ((v20 = _Map->vtable->m12_Get_Tile_by_XY(_Map, X, _Y), v20->vtable->m23_Check_Railroads(v20, 0)) || Flag) )
    {
      v21 = CivID;
      if ( class_Leader::Check_Advance(&Civilizations[CivID], BIC_Data.WorkerJobs[4].RequireID) )// 4 = Railroad
        ++_TotalFood;
    }
    else
    {
      v21 = CivID;
    }
    v22 = _Map->vtable->m12_Get_Tile_by_XY(_Map, X, _Y);
    if ( !v22->vtable->m50_Get_Square_BaseType(v22)
      && (BIC_Data.Races[Civilizations[v21].RaceID].vtable->CheckBonus)(RB_Agricultural) )
      ++_TotalFood;
  }
  else
  {
    v21 = CivID;
  }
  if ( v35 != -1 )
    _TotalFood += BIC_Data.ResourceTypes[v35].Food;
  v23 = _Map->vtable->m12_Get_Tile_by_XY(_Map, X, _Y);
  if ( v23->vtable->m35_Check_Is_Water(v23) )
  {
    v24 = ((X >> 1) + _Y * (BIC_Data.Map.Width >> 1));
    if ( BIC_Data.Map.Tiles && v24 < LOWORD(BIC_Data.Map.TileCount) )
      _Tile3 = BIC_Data.Map.Tiles[v24];
    else
      _Tile3 = &DefaultTile;
    v26 = _Map->vtable;
    v27 = _Tile3->vtable->m46_Get_ContinentID(_Tile3);
    if ( v26->m33_Get_Continent(_Map, v27)->Body.TileCount > 20 )
    {
      if ( City )
        _TotalFood += class_City::Count_Flag_Improvements(City, ITF_Increases_Food_In_Water);
    }
    else
    {
      ++_TotalFood;
    }
  }
  v28 = _Map->vtable->m12_Get_Tile_by_XY(_Map, X, _Y);
  if ( class_Tile::Check_City(v28) )
  {
    _TotalFood = BIC_Data.General.FoodPerCitizen;
    v29 = _Map->vtable->m12_Get_Tile_by_XY(_Map, X, _Y);
    v30 = v29->vtable->m69_get_Tile_City_CivID(v29);
    if ( BIC_Data.Races[Civilizations[v30].RaceID].vtable->CheckBonus(
           &BIC_Data.Races[Civilizations[v30].RaceID],
           RB_Agricultural) )
      ++_TotalFood;
    _X = X;
    v32 = _Map->vtable->m12_Get_Tile_by_XY(_Map, X, _Y);
    v32->vtable->m45_Get_City_ID(v32);
  }
  else
  {
    _X = X;
  }
  if ( !BIC_Data.Governments[Civilizations[v21].GovenmentType].b_Standard_Tile_Penalty
    || (BIC_Data.Races[Civilizations[v21].RaceID].vtable->CheckBonus)(RB_Agricultural)
    && (v33 = _Map->vtable->m12_Get_Tile_by_XY(_Map, _X, _Y), class_Tile::Check_City(v33))
    && (_Map->vtable->m24)(_Map, _X, _Y) )
  {
    _TotalFood2 = _TotalFood;
  }
  else
  {
    _TotalFood2 = _TotalFood;
    if ( _TotalFood > 2 )
      return ((_TotalFood - 1 <= 0) - 1) & (_TotalFood - 1);
  }
  return ((_TotalFood2 <= 0) - 1) & _TotalFood2;
}

class_Map::Calculate_Tile_Shields
Code:
int __thiscall class_Map::Calculate_Tile_Shields(class_Map *this, int X, int Y, int SquareType, int CivID, int Flag, class_City *City)
{
  int _Y; // edi@1
  class_Map *_this; // esi@1
  class_Tile *v10; // eax@1
  int _Map_Width; // ecx@3
  class_Tile **v13; // edx@3
  signed int v14; // eax@3
  class_Tile *_Tile; // eax@5
  int _Resource_ID; // eax@7
  bool v17; // al@8
  signed int v18; // ecx@12
  class_Tile *_Tile3; // ebx@15
  int _Square_Type; // eax@18
  int _ProductionBase; // ebx@18
  class_Tile *v22; // eax@21
  class_Tile *v23; // eax@23
  signed int v24; // eax@25
  class_Tile *v25; // ebx@27
  int v26; // eax@30
  int _MiningBonus; // eax@30
  class_Tile *v28; // eax@33
  int _CivID; // ebx@35
  class_Tile *v30; // eax@41
  class_Tile *v31; // eax@43
  class_Tile *v32; // eax@44
  struct_Map_vtable *v33; // ebp@44
  __int16 v34; // ax@44
  int _Tile_Shields; // ebp@46
  class_Tile *v36; // eax@48
  int _Tile_CityID; // eax@48
  void *v38; // eax@51
  class_City *_Tile_City; // eax@52
  int v40; // eax@53
  signed int _Tile_City_Class; // eax@54
  int v42; // eax@56
  int _CivID2; // ebx@62
  int v44; // eax@74
  int _Resource_ID2; // [sp+30h] [bp-8h]@9
  __int16 _X_div_2; // [sp+34h] [bp-4h]@3
  class_Tile *_Tile2; // [sp+40h] [bp+8h]@7
  int _Production_1; // [sp+40h] [bp+8h]@20

  _Y = Y;
  _this = this;
  v10 = (this->vtable->m12_Get_Tile_by_XY)(X, Y);
  if ( v10->vtable->m20_Check_Pollution(v10, 0) )
    return 0;
  _Map_Width = BIC_Data.Map.Width;
  v13 = BIC_Data.Map.Tiles;
  _X_div_2 = X >> 1;
  v14 = ((X >> 1) + Y * (BIC_Data.Map.Width >> 1));
  if ( BIC_Data.Map.Tiles && v14 < LOWORD(BIC_Data.Map.TileCount) )
    _Tile = BIC_Data.Map.Tiles[v14];
  else
    _Tile = &DefaultTile;
  _Tile2 = _Tile;
  _Resource_ID = _Tile->ResourceType;
  if ( _Resource_ID != -1 )
  {
    v17 = class_Leader::Check_Advance(&Civilizations[CivID], BIC_Data.ResourceTypes[_Resource_ID].RequireID);
    _Map_Width = BIC_Data.Map.Width;
    if ( v17 )
    {
      v13 = BIC_Data.Map.Tiles;
      _Resource_ID2 = _Tile2->ResourceType;
      goto LABEL_12;
    }
    v13 = BIC_Data.Map.Tiles;
  }
  _Resource_ID2 = -1;
LABEL_12:
  v18 = ((X >> 1) + _Y * (_Map_Width >> 1));
  if ( v13 && v18 >= 0 && v18 < LOWORD(BIC_Data.Map.TileCount) )
    _Tile3 = v13[v18];
  else
    _Tile3 = &DefaultTile;
  if ( _Tile3->vtable->m30_Check_is_LM(_Tile3) )
  {
    _Square_Type = _Tile3->vtable->m50_Get_Square_BaseType(_Tile3);
    _ProductionBase = struct_Tile_Type::Get_LM_Production_Base(&BIC_Data.TileTypes[_Square_Type]);
  }
  else
  {
    _ProductionBase = BIC_Data.TileTypes[_Tile3->vtable->m50_Get_Square_BaseType(_Tile3)].ProductionBase;
  }
  _Production_1 = _ProductionBase;
  if ( _ProductionBase > 0 )
  {
    v22 = _this->vtable->m12_Get_Tile_by_XY(_this, X, _Y);
    if ( v22->vtable->m21_Check_Crates(v22, 0) )
      _Production_1 = _ProductionBase - 1;
  }
  v23 = _this->vtable->m12_Get_Tile_by_XY(_this, X, _Y);
  if ( (v23->vtable->m18_Check_Mines(v23, 0) || Flag)
    && ((v24 = (_X_div_2 + _Y * (BIC_Data.Map.Width >> 1)), !BIC_Data.Map.Tiles)
     || v24 >= LOWORD(BIC_Data.Map.TileCount) ? (v25 = &DefaultTile) : (v25 = BIC_Data.Map.Tiles[v24]),
        !v25->vtable->m30_Check_is_LM(v25) ? (_MiningBonus = BIC_Data.TileTypes[v25->vtable->m50_Get_Square_BaseType(v25)].MiningBonus) : (v26 = v25->vtable->m50_Get_Square_BaseType(v25), _MiningBonus = struct_Tile_Type::Get_LM_Mining_Bonus(&BIC_Data.TileTypes[v26])),
        (_Production_1 += _MiningBonus, _MiningBonus > 0)
     && ((v28 = _this->vtable->m12_Get_Tile_by_XY(_this, X, _Y), v28->vtable->m23_Check_Railroads(v28, 0)) || Flag)) )
  {
    _CivID = CivID;
    if ( class_Leader::Check_Advance(&Civilizations[CivID], BIC_Data.WorkerJobs[4].RequireID) )// 4 = Railroads
      ++_Production_1;
  }
  else
  {
    _CivID = CivID;
  }
  if ( _Resource_ID2 != -1 )
    _Production_1 += BIC_Data.ResourceTypes[_Resource_ID2].Shield;
  if ( SquareType == SQ_Grassland )
  {
    v30 = _this->vtable->m12_Get_Tile_by_XY(_this, X, _Y);
    if ( v30->vtable->m27_Check_Special_Resource(v30) )
      ++_Production_1;
  }
  v31 = _this->vtable->m12_Get_Tile_by_XY(_this, X, _Y);
  if ( v31->vtable->m35_Check_Is_Water(v31)
    && (v32 = class_Map::GetTile(&BIC_Data.Map, (_X_div_2 + _Y * (BIC_Data.Map.Width >> 1))),
        v33 = _this->vtable,
        v34 = v32->vtable->m46_Get_ContinentID(v32),
        v33->m33_Get_Continent(_this, v34)->Body.TileCount > 20)
    && City )
    _Tile_Shields = class_City::Count_Flag_Improvements(City, ITF_Increases_Shields_In_Water) + _Production_1;
  else
    _Tile_Shields = _Production_1;
  v36 = _this->vtable->m12_Get_Tile_by_XY(_this, X, _Y);
  _Tile_CityID = v36->vtable->m45_Get_City_ID(v36);
  if ( Cities.Items )
  {
    if ( _Tile_CityID >= 0 )
    {
      if ( _Tile_CityID <= Cities.LastIndex )
      {
        v38 = Cities.Items[_Tile_CityID].Object;
        if ( v38 )
        {
          _Tile_City = (v38 - 28);
          if ( _Tile_City )
          {
            v40 = _Tile_City->Body.Population.Size;
            if ( v40 <= BIC_Data.General.MaximumSize_City )
              _Tile_City_Class = v40 > BIC_Data.General.MaximumSize_Town;
            else
              _Tile_City_Class = 2;
            v42 = _Tile_City_Class - 1;
            if ( v42 )                          // >= City
            {
              if ( v42 == 1 )                   // Megapolis
                _Tile_Shields += (BIC_Data.Races[Civilizations[_CivID].RaceID].vtable->CheckBonus(
                                    &BIC_Data.Races[Civilizations[_CivID].RaceID],
                                    RB_Industrious) != 0)
                               + 2;
            }
            else
            {                                   // Town
              BIC_Data.Races[Civilizations[_CivID].RaceID].vtable->CheckBonus(
                &BIC_Data.Races[Civilizations[_CivID].RaceID],
                RB_Industrious);
              ++_Tile_Shields;
            }
            if ( _Tile_Shields < 1 )
              _Tile_Shields = 1;
          }
        }
      }
    }
  }
  _CivID2 = _CivID;
  if ( Current_Turn < Civilizations[_CivID2].Golden_Age_End && _Tile_Shields > 0 )
    ++_Tile_Shields;
  if ( City
    && _Tile_Shields > 0
    && class_City::Check_Mobilization_Bonus(City)
    && City->Body.Order_Type == COT_Unit
    && BIC_Data.UnitTypes[City->Body.Order_ID].Attack )
    ++_Tile_Shields;
  if ( BIC_Data.Governments[Civilizations[_CivID2].GovenmentType].b_Standard_Tile_Penalty )
  {
    if ( _Tile_Shields > 2 )
      --_Tile_Shields;
  }
  v44 = _Tile_Shields < 0;
  LOBYTE(v44) = _Tile_Shields <= 0;
  return _Tile_Shields & (v44 - 1);
}

class_Map::Calculate_Tile_Trade
Code:
int __thiscall class_Map::Calculate_Tile_Trade(class_Map *this, int X, int Y, int SquareType, int CivID, int Flag, class_City *City)
{
  int v7; // ebx@1
  class_Map *_this; // esi@1
  class_Tile *_Tile; // eax@1
  int _Width; // ecx@3
  class_Tile **_Tiles; // edx@3
  __int16 _X_div_2; // bp@3
  signed int _TileIndex; // eax@3
  class_Tile *_Tile2; // edi@5
  int _ResType; // eax@7
  bool v17; // al@8
  signed int _TileIndex2; // ecx@11
  class_Tile *_Tile3; // edi@14
  int v20; // eax@17
  int _TotalTrade; // ebp@17
  class_Tile *v22; // eax@20
  class_Tile *v23; // eax@22
  signed int v24; // eax@24
  class_Tile *v25; // edi@26
  int v26; // eax@29
  int _RoadsBonus; // eax@29
  class_Tile *v28; // eax@34
  class_Tile *v29; // eax@36
  class_Tile *v30; // eax@37
  struct_Map_vtable *v31; // edi@37
  __int16 v32; // ax@37
  class_Tile *v33; // eax@40
  int _Tile_CityID; // eax@40
  void *v35; // eax@43
  class_City *_Tile_City; // ecx@44
  int _City_Size; // edi@45
  signed int _Tile_City_Class; // eax@46
  int _CivID2; // edi@48
  int v40; // eax@48
  signed int _TradeBonus; // eax@50
  int v42; // eax@58
  class_Tile *v43; // eax@60
  int v44; // eax@60
  int _CivID3; // esi@63
  int v46; // eax@75
  __int16 v47; // [sp+38h] [bp-8h]@3
  signed int _ResType2; // [sp+3Ch] [bp-4h]@9
  int _TotalTrade2; // [sp+48h] [bp+8h]@19
  class_City *_Tile_City2; // [sp+54h] [bp+14h]@44

  v7 = Y;
  _this = this;
  _Tile = this->vtable->m12_Get_Tile_by_XY(this, X, Y);
  if ( _Tile->vtable->m20_Check_Pollution(_Tile, 0) )
    return 0;
  _Width = BIC_Data.Map.Width;
  _Tiles = BIC_Data.Map.Tiles;
  _X_div_2 = X >> 1;
  v47 = X >> 1;
  _TileIndex = ((X >> 1) + Y * (BIC_Data.Map.Width >> 1));
  if ( BIC_Data.Map.Tiles && _TileIndex < LOWORD(BIC_Data.Map.TileCount) )
    _Tile2 = BIC_Data.Map.Tiles[_TileIndex];
  else
    _Tile2 = &DefaultTile;
  _ResType = _Tile2->ResourceType;
  if ( _ResType != -1
    && (v17 = class_Leader::Check_Advance(&Civilizations[CivID], BIC_Data.ResourceTypes[_ResType].RequireID),
        _X_div_2 = X >> 1,
        _Width = BIC_Data.Map.Width,
        _Tiles = BIC_Data.Map.Tiles,
        v17) )
    _ResType2 = _Tile2->ResourceType;
  else
    _ResType2 = -1;
  _TileIndex2 = (_X_div_2 + Y * (_Width >> 1));
  if ( _Tiles && _TileIndex2 >= 0 && _TileIndex2 < LOWORD(BIC_Data.Map.TileCount) )
    _Tile3 = _Tiles[_TileIndex2];
  else
    _Tile3 = &DefaultTile;
  if ( _Tile3->vtable->m30_Check_is_LM(_Tile3) )
  {
    v20 = _Tile3->vtable->m50_Get_Square_BaseType(_Tile3);
    _TotalTrade = struct_Tile_Type::Get_LM_Trade_Base(&BIC_Data.TileTypes[v20]);
  }
  else
  {
    _TotalTrade = BIC_Data.TileTypes[_Tile3->vtable->m50_Get_Square_BaseType(_Tile3)].TradeBase;
  }
  _TotalTrade2 = _TotalTrade;
  if ( _TotalTrade > 0 )
  {
    v22 = _this->vtable->m12_Get_Tile_by_XY(_this, X, v7);
    if ( v22->vtable->m21_Check_Crates(v22, 0) )
    {
      --_TotalTrade;
      _TotalTrade2 = _TotalTrade;
    }
  }
  v23 = _this->vtable->m12_Get_Tile_by_XY(_this, X, v7);
  if ( v23->vtable->m25_Check_Roads(v23, 0) || Flag )
  {
    v24 = (v47 + v7 * (BIC_Data.Map.Width >> 1));
    if ( BIC_Data.Map.Tiles && v24 < LOWORD(BIC_Data.Map.TileCount) )
      v25 = BIC_Data.Map.Tiles[v24];
    else
      v25 = &DefaultTile;
    if ( v25->vtable->m30_Check_is_LM(v25) )
    {
      v26 = v25->vtable->m50_Get_Square_BaseType(v25);
      _RoadsBonus = struct_Tile_Type::Get_LM_Roads_Bonus(&BIC_Data.TileTypes[v26]);
    }
    else
    {
      _RoadsBonus = BIC_Data.TileTypes[v25->vtable->m50_Get_Square_BaseType(v25)].RoadsBonus;
    }
    _TotalTrade = _RoadsBonus + _TotalTrade2;
    _TotalTrade2 += _RoadsBonus;
  }
  if ( _ResType2 != -1 )
  {
    _TotalTrade += BIC_Data.ResourceTypes[_ResType2].Commerce;
    _TotalTrade2 = _TotalTrade;
  }
  v28 = _this->vtable->m12_Get_Tile_by_XY(_this, X, v7);
  if ( v28->vtable->m24_Check_River(v28) )
  {
    ++_TotalTrade;
    _TotalTrade2 = _TotalTrade;
  }
  v29 = _this->vtable->m12_Get_Tile_by_XY(_this, X, v7);
  if ( v29->vtable->m35_Check_Is_Water(v29) )
  {
    v30 = class_Map::GetTile(&BIC_Data.Map, (v47 + v7 * (BIC_Data.Map.Width >> 1)));
    v31 = _this->vtable;
    v32 = v30->vtable->m46_Get_ContinentID(v30);
    if ( v31->m33_Get_Continent(_this, v32)->Body.TileCount > 20 )
    {
      if ( City )
      {
        _TotalTrade += class_City::Count_Flag_Improvements(City, ITF_Increases_Trade_In_Water);
        _TotalTrade2 = _TotalTrade;
      }
    }
  }
  v33 = _this->vtable->m12_Get_Tile_by_XY(_this, X, v7);
  _Tile_CityID = v33->vtable->m45_Get_City_ID(v33);
  if ( Cities.Items )
  {
    if ( _Tile_CityID >= 0 )
    {
      if ( _Tile_CityID <= Cities.LastIndex )
      {
        v35 = Cities.Items[_Tile_CityID].Object;
        if ( v35 )
        {
          _Tile_City = (v35 - 28);
          _Tile_City2 = (v35 - 28);
          if ( v35 != 28 )
          {
            _City_Size = _Tile_City->Body.Population.Size;
            if ( _City_Size <= BIC_Data.General.MaximumSize_City )
            {
              _Tile_City_Class = _City_Size < BIC_Data.General.MaximumSize_Town;
              LOBYTE(_Tile_City_Class) = _City_Size > BIC_Data.General.MaximumSize_Town;
            }
            else
            {
              _Tile_City_Class = 2;
            }
            _CivID2 = CivID;
            v40 = _Tile_City_Class - 1;
            if ( v40 )
            {
              if ( v40 != 1 )
              {
LABEL_53:
                if ( _Tile_City->Body.ID == Civilizations[_Tile_City->Body.CivID].CapitalID )
                {
                  if ( _TotalTrade < 4 )
                    _TotalTrade = 4;
                }
                else
                {
                  if ( _TotalTrade < 1 )
                    _TotalTrade = 1;
                }
                v42 = class_City::f26_Get_Optimal_Continent_1(_Tile_City);
                if ( v42 != -1 )
                {
                  if ( BIC_Data.Map.Continents[v42].Body.TileCount > 20 )
                  {
                    v43 = _this->vtable->m12_Get_Tile_by_XY(_this, X, v7);
                    v44 = v43->vtable->m69_get_Tile_City_CivID(v43);
                    if ( BIC_Data.Races[Civilizations[v44].RaceID].vtable->CheckBonus(
                           &BIC_Data.Races[Civilizations[v44].RaceID],
                           7) )
                      ++_TotalTrade;
                  }
                }
                goto LABEL_63;
              }
              _TradeBonus = (BIC_Data.Races[Civilizations[CivID].RaceID].vtable->CheckBonus)(RB_Commercial) != 0 ? 5 : 2;
            }
            else
            {
              _TradeBonus = (BIC_Data.Races[Civilizations[CivID].RaceID].vtable->CheckBonus)(RB_Commercial) != 0 ? 3 : 1;
            }
            _Tile_City = _Tile_City2;
            _TotalTrade = _TradeBonus + _TotalTrade2;
            goto LABEL_53;
          }
        }
      }
    }
  }
  _CivID2 = CivID;
LABEL_63:
  _CivID3 = _CivID2;
  if ( Current_Turn < Civilizations[_CivID2].Golden_Age_End && _TotalTrade > 0 )
    ++_TotalTrade;
  if ( City && _TotalTrade > 0 )
    _TotalTrade += class_Leader::Count_Improvements_With_Wonder_Flags(
                     &Civilizations[_CivID3],
                     ITW_Trade_In_Each_Tile_inc_1,
                     City);
  if ( BIC_Data.Governments[Civilizations[_CivID3].GovenmentType].b_Standard_Trade_Bonus && _TotalTrade > 0 )
    ++_TotalTrade;
  if ( BIC_Data.Governments[Civilizations[_CivID3].GovenmentType].b_Standard_Tile_Penalty )
  {
    if ( _TotalTrade > 2 )
      --_TotalTrade;
  }
  v46 = _TotalTrade < 0;
  LOBYTE(v46) = _TotalTrade <= 0;
  return _TotalTrade & (v46 - 1);
}

These methods can be overwritten via patch framework
 
So the rendering would allow less graphics (only 4 eras), but the tech tree would allow more techs?

The game doesn't build tech tree in order to render it. It just renders those advances that has the same era as current. And it uses their coordinates, defined by user in the Editor.

Mod-maker also has to prepare corresponding backgrounds with relation arrows.
 
It's possible.
There are only 3 function which calculate tile resources (0 - Food, 1 - Shields, 2 - Trade): 1 function per resource type.


This is wonderful. :)

What is about railroads - do you have found out a methode, that landunit don´t have an infinite movement on railed terrain, but let´s say 9 tiles a turn on railroads instead of 3 tiles on roads?
 
Is it possible to have limited movement on railroads?
 
lol same idea as civinator at the same time :)
 
The game doesn't build tech tree in order to render it. It just renders those advances that has the same era as current. And it uses their coordinates, defined by user in the Editor.

Mod-maker also has to prepare corresponding backgrounds with relation arrows.
I know. But we could imagine a solution with more than 4 eras, As lons as only the techs for this era are displayed, at their coordinates, it works and there nothing specific to do.
There is the issue of what image to put as background, I hope it could be expanded relatively easily, it's just a matter of displaying the proper pcx file, and this could be read from text tile.

The main issue here is the function to draw the techboxes. But as I said, it doesn't matter if the same boxes are used for every era, so the function could be simplified.
 
More ideas from 2008. I just copy our "crazy list", some may not be doable.

Graphics engine
- Play an animation when a plane is performing a recon mission (just the run, like before a bombardment). Currently, the tile is just revealed, making recon aircraft animation useless
- For unit with AA defense, allow to select which animation they play when intercepting unit (not only the missile). Would be done when a new entry in the .ini files
- Allow to set in the ini which animation to play when using bombardment / attack. Currently, it&#8217;s not possible to have a different animation for ship attacking another ship, or firing cruise missible far away. We want to change that.
- Allow to set in the ini a different &#8220;bomb&#8221; animation depending if the target is land/sea (so a torpedo plane doesn&#8217;t torpedo a tank unit&#8230;)
- Allow to set in the ini a different animation for irrigation and clear pollution. For some fan made units, having the same animation look strange (like an harvester...)
- Add a &#8220;boarding&#8221; animation atack for ship in the ini
- When a file is missing, list it in a log, display a "blank" picture or do nothing, but do NOT exit the game immediately (it would make modding so much easier)
- In the CivPedia, handle properly the case where to many links are visible in the screen. Currently an error message is displayed individually for every extra link...
- Problem with the display of resources when there are to many (some &#8220;disappear&#8221; in the advisor screen)
- Make it possible in the PediaIcons to have civ specific animation and icons for units, without to have to copy them (same unit, same stats, one entry in the editor, but graphics change)
- More cycle options : Cycle cities that are building something, cycle cities that are only building Wealth, etc

Music
Make it possible in the music.txt to decide what musics are played for era/civilization. This would add to the flavor for some scenario, where the music would change depending on the civilization you picked

Barbarians
- Allow the possibility for Barbarians to capture a city. The city would then produce only Barbarian units, no other production.
- Allow for more types of barbarians:
&#8226; Allow at least one type of land and sea for each era
&#8226; Or use the possibility to assign units to the barbarian chiefdom civ, and use the upgrade path to get the most recent barbarian
- Allow for Barbs to have diplomacy enabled

Units attribute
- Add a "bribe / charm" flag for some units (or fix the one in the "cracked" editor to work properly
- Add a "unit type" flag, like "mounted", "submarine", and add a "bonus against&#8221; flag, so pikemen can have a bonus vs. cavalry for instance. The bonus can be positive or negative. Ideally, the unit type can be expanded, or if it&#8217;s too much to change we can just have a pre-set list.
- Add an "helicopter" flag and make them work properly: unit are land units, but can cross a narrow body of water.
- Change the "ignore terrain", which is useless (or all units need at least 2 MP) into a "preferred" terrain that would give movement and Combat bonus. Add cities in the list.
- Same as "ignore terrain" flag, add an "impassable terrain" for each unit
- Chance to lose HP in specific terrain
- Add a notion of fuel/supply.
&#8226; Amount of remaining supply, consume when moving
&#8226; Or range the unit can reach from a friendly city
Units like tankers could resupply a unit, or extend the range.
- Give a withdrawal chance to each unit (variable, instead of depending on MP)
- Instead of a ZOC checkbox, make it a number, with a variable chance to intercept enemy unit
- Add a &#8220;Partisan&#8221; flag : automatic creation of partisan unit when capturing a city (like Civ2)
- Variable radar range (i.e. how far away can the unit see?)
- Add a "peacekeeping" rating for units, to see how much they keep happiness or can reduce riots.
- More "spy" options for units, like sabotage building, steal technology
- Add a &#8220;healer&#8221; or &#8220;repairer&#8221; flag to units, allowing them to give HP back to friendly unit in the same tile, even in ennemy territory.
- Introduce a &#8220;morale&#8221; level. A unit could &#8220;flee&#8221; a combat if it takes losses, depending of its morale.
- Be able to limit units to RailRoads (armored trains)
- Add &#8220;patriotism&#8221; feature. When the unit fights (both attack and defence) within its national borders he gets bonus vs enemy unit of the civilization-agressor.Only for the units of the civilization being aggressed.
- Add an &#8216;Ambush&#8221; rating, with a bonus if in home territory, or if in favoured terrain. If success, unit is allowed a free attack, without risk or retalation, before normal combat starts.
- For Amphibious unit, add a &#8220;rating&#8221;, so some units can be better than other at that.
- For paratrooper, add a &#8220;Drop training&#8221; rating.
When a unit is dropped:
&#8226; The rating is used to check the unit drops where planned. In case of failure, the unit drops in an adjacent tile
&#8226; The rating is used to check if the unit loses its MP, or if it can keep it (and thus attack in the same turn as it drop)
&#8226; If the unit can attack, the rating is used as a strength modifier (until next turn).
- Modify the &#8220;capture&#8221; flag, so a unit can be captured after losing a fight (can be used to capture ennemy tanks for instance). Captured units can heal only if the civilization that capture it is allowed to build it.

Transport
- Give transports the ability to transport other transports. The Aircraft Carrier should be able to transport Blackhawk helicopters with 1 foot soldier onboard each helicopter. Troop transports should be able to carry LCACs, APCs, etc, etc.
- Modify the AI so it can use land transport properly.
- Give the possibility to define more &#8220;can transport&#8221; flags for transport, and &#8220;type of transport&#8221; for units. If it&#8217;s not possible to make the list expandable, propose a pre set list with enough option.
- For transports, indicate the capacity for each type of transported units.
Example : an aircraft carrier can carry 4 air unit, 1 infantry unit.
- Fix AI Naval Strategies so that its submarines actually load and carry SLBMs and that they're used effectively/properly.
- Fix AI Naval Strategies to properly load and maintain its carrier units (ie replenish them effectively, load them to capacity)
- Fix the "Requires Escort" flag or enforce this flag more emphatically for sea units
- Introduce an effective aerial transport element via transport aircraft and possible tanker units in conjunction with a 'fuel' component.

Unit creation and maintenance
- Make the maintenance cost variable for each unit
- Add a "required building" for units
- Add a "resource must be in city radius" for units. Can be very useful to force some units to be built only in specific cities for some scenarios, with a pre placed resource (ex: highlander buildable only in Scotland)
- Add an "obsolete tech" for units so they can be removed from the build queue without upgrading to something else or having to manipulate it in the editor (ie 'Upgrades To' unit selected but no unit action to 'Upgrade').
- Add a "number of required city" for all units, not only leaders (so we can have only a few elite units for instance). The flag would no longer be in the general settings for armies.
- Add a "cannot capture city" flag
- Make it possible to have 2 (3?) tech requirements for units. This can serve two purposes:
&#8226; Simplify the tech tree (instead of &#8220;nuclear power&#8221; + &#8220;submarine&#8221; that can give &#8220;nuclear submarine&#8221;, that gives the attack sub units, we can just have the two techs as requirement).
&#8226; By making a &#8220;non-era&#8221; tech as requirement, we can limit the units to a specific group of civ (the one starting with the tech).
- To build a unit, you need the resource for the whole building time. If you can hold iron for only one turn, you should not be able to start building 10 tanks in 10 cities, and continue building them the next turn.
- Limit the number of units from the number of available resources (ex: 5 tanks allowed for every oil in your resource pool)
-Add a concept of &#8220;Manpower&#8221;. Creating a new unit take some manpower (without reducing the population of a city). The max &#8220;nominal&#8221; manpower is proportional to the total population (proportion varies with the current government).
Each unit correspond to a certain manpower. It is possible to create a new unit only when the sum of the manpower of every existing unit + every unit being built is < max manpower.
When a unit is destroyed, the max manpower decrease, and will increase the following turns to go back to nominal.
Some techs could increase the manpower (like &#8220;female workforce&#8221;).
- odify the resource requirement for units, with, instead of 3 resources:
&#8226; One &#8220;fuel&#8221; resources (could be for instance oil, coal, uranium). If the resource is not available, then the MP and operational ranges are halved for this unit for this turn.
&#8226; One &#8220;combat&#8221; resources (saltpeter, iron for shells). If the resource is not available, then the unit strength is reduced for this turn (halved? 75%?)
&#8226; 1-3 &#8220;build&#8221; resources, working as they currently are.
This way, we could have Tanks units that require Iron to be build, and then Oil and Iron to be operated at full strength.
- A unit can heal only if the resources required to build it is available : A cavalry unit cannot be reinforced without access to horse!

Bombardment
-Have the ROF play a role in defensive bombardment, and the bombardment strength also
- Make the bombardment strength different when bombarding naval/land units
- Add ability for nuclear bombardment to remove cities completely (if population is low enough)
- Allow destruction range of nukes and/or cruise missiles to be altered (currently only nukes can cause damage outside of &#8216;ground zero&#8217;, if this is adjustable it gives options for &#8216;strategic&#8217; nukes which effect a two square radius, or &#8216;tactical&#8217; nukes which effect a one square radius or only ground zero)
- Add a "no effect on building" flag, so we can make chemical weapon that can only damage unit
- Make possible for nuclear weapons to be delivered with methods other than tactical missiles
- Add ability to have tactical missiles without having nuclear warhead. Example, V-2 missile cannot be used without having it as a nuclear weapon.
- Have the (land) bombarding unit occasionally bombard units instead of terrain improvements
- More effective and agressive AI use of land artillery
- Add a derivitive of a "precision bombing" flag for the missile units; it would simulate a conventional tactical warhead

Aviation
-Add a "can load on carrier" and "carrier" flag for planes and ship
- Add a flag allowing a bombarding aircraft to select their target (same as stealth attack for land units but for aerial bombardment); in other words, a "Strike Aircraft" flag
- Allow for air units on "Recon" missions be able to detect invisible units; this would allow for effective ASW, sea scouts, and spy planes.
- Add a variable "intercept" , &#8220;avoid interception&#8221; and &#8220;avoid AA&#8221; chance for each aircraft
- When a city is captured, their is a chance that the planes inside are:
&#8226; Destroyed
&#8226; Captured
&#8226; Rebased automatically to the closest friendly base
- Add a &#8220;AWAC&#8221; flag, that increase the change of interception for units in the &#8220;detection range&#8221; of the plane.
- Add use of aerial tanker to increase range of combat aircraft.
- Add the ability to set a &#8220;Patrol Point&#8221; or a set CAP pattern on the map for a unit which it automatically follows until turned off
- Fix &#8220;Precision Bombing&#8221; and possibly expand it to target only buildings and/or certain types of units
- Add EW planes, that could decrease the change of intercepting unit.
- Add "SEAD" flag for air units (supperession of enemy air defenses); it would be able to hit and possibly knock out only enemy anti-aircraft units such as flak and sam units.
- Add "Can Deliver Nuclear Weapon" flag for certain bomber and strike aircraft
- Add an effect of experience to aircraft : veteran planes have more chance to intercept for instance.
- Decrease the efficiency of planes with the range: at extrem range, bombardment, attack and defence should be reduced.
- Give planes different altitude of operation: High, Medium, Low.
= Planes can only intercept planes in their altitude or below (makes high-flying bombers only interceptable by fighters capable of reaching that altitude)
- Add a &#8220;VTOL&#8221; flag for planes and helicopters, make ships able to chose between &#8220;carry only planes&#8221;, &#8220;carry only VTOL&#8221; or &#8220;carry VTOL and planes&#8221;
- Allow air units to rebase/repare/refuel at friendly air bases and cities of the AI/human player
- Allow for two different ranges : bombardment, and interception
- Prevent aicraft from flying other neutral territory (only above ennemy, or ally)

Navy
- A special "submarine" and "see submarine" flag, as only one hidden flag for submarines / spies is to limited
- Fleet unit, similar to army but for navy
- Add an interception chance for navy. As naval unit can be fast, when a ship becomes adjacent to an ennemy ship, there is a chance is get &#8220;stuck&#8221; and lose the remaining movement points. This would limit some tactics of &#8220;come close, bombard, and escape&#8221;.
- Add an &#8220;amphibious&#8221; flag. Amphibious assault can be done only from ships with this flag on.
- When a city is captured, their is a chance that the ships inside are:
&#8226; Destroyed
&#8226; Captured
&#8226; Moved automatically in an adjacent sea tile
- Add a &#8220;Boarding strength&#8221; attribute to ship, that could be used with an icon (like bombard).
The boarding animation is played, the boarding strenght is used to solve combat, and the winning unit has a chance to capture the losing one, or sink it.
- Add a &#8220;naval escort&#8221;, &#8220;asw patrol&#8221;, &#8220;naval bombardment&#8221; and &#8220;aa defense&#8221; flag to determine the use of the ships, similar to the existing &#8220;naval power&#8221; etc. flags. Add a &#8220;head of battle group&#8221; flag, that will tell the AI to group some smaller ships with them (e.g. DDs to BBs). Add a flag &#8220;No Convoy Duty&#8221; to prevent BBs grouping with Transports
- Add a type of "stealth bombardment" flag for certain sea units (e.g., subs with a bombardment rating).
- Allow friendly sea units to share the same tile.
- Allow friendly ships to refuel/repair at foreign and friendly ports
- Introduce a naval "Zone of Control"
- Fix naval AI strategies to better employ SLBMs - building and deploying them.
- Add in a variable "chance of detetction" rating for sea units; destroyers and sub chasers would be on the high end while other ships, especially the early era ships/pre-sonar, would be less inclined to detect the invisible units.
- Add in a "sonar" flag; it would give sea units without the "Detect Invisible" a better chance of detecting submarines (assuming there's a variable rate of detection).
- Add in a "noise" rating for submarines; the higher the rating, the more likely they are to be detected.
- Fix AI naval strategies to better emphasize naval transport (i.e., fill the entire transport all the time) and especially better and more effective convoy behavior.
- Introduce "naval minefield" as a type of aquatic tile improvement that could somehow impede/damage enemy sea units which travesre said tile; it'd be done by a "minelayer" or auxilary type sea unit and would act as a type of 'aquatic worker' unit. A 'removal' type unit like a 'minesweeper' could also be introduced.

Army
- Allow unloading units from an army (optional)
- Civ speciffic armies and leader
- Be sure that an army gets the bonus from all its components, to emphasis the importance of combined arms.
- Fix AI tendency to load its fastest units into armies rather than the better offensive and defensive minded units; in other words, load the best units into the armies and not take the movement ratings into account.
 
General
-Add the possibility to have more than 4 eras
-Random chance to steal a technology when capturing a city (variable parameter)
- Add an option that you cannot enter enemy territory without declaring war, works with a flag (except hidden nationality or hidden unit)
- Add an option to prevent a unit from moving to far from your border / city
- If a city is unhappy long enough, it becomes a barbarian city, or can defect to nearest civ
- Possibility to give units to an ally
- Allow more levels of city (not just 2)
- Introduce religion ??
- Allow buying/selling of military technology between nations. Allow chance to capture enemy equipment during combat, or when occupying enemy territory. Create possibility of units defecting to enemy or friendly nation.
- Bring back caravan/supply units to establish trade routes, and make trade routes and supply lines visible, give units the ability to pillage supply lines. Forts, like airbases, should hold supplies for ground units, and they should have supply lines connecting them to friendly cities that can be pillaged also. This would create a better use for pirates, and barbarians.
- Reintroduce food convoys from Civ2
- Add a penalty to a surrounded unit.
The facing or unit cannot really be used at Civ scale, and would need a way to change the facing of units.
- Siege: when a city is adjacent to ennemy units, and not to a friendly unit, it becomes besieged and cannot get food.
- If an army is not in a city or a fortress, small chance it can lose HP (desertion?)
- Allow for introduction of more terrain types (relief, vegetation, rivers, but not base terrain) and/or a more distinctive range of bonuses.
- Allow for a smaller incrementalization of base unit of time for some scenarios; ie "hours".

Civilizations
-Add the possibility to create new culture group, with associated city graphics
- Editable naming of culture groups
- Possibility to change the leader name and traits of a civilization with each era (and not just the graphics)
- Possibility to have more than 4 starting techs for a civ
- Possibility to edit palaces screen and city view screen, and for those screens to actually show up in a modded game
- Possibility to have more civilizations, and/or more choices of leader per civ.
- Assign every Military and Scientific Leader to specific era to exclude the situation when Churchill and Einstein appear in the Ancient/Medieval era or Plato and Boudicca appear in XX/XXI centuries.
- Make it possible for a civ to start in a later era, without automatically gaining all the techs in earlier eras, even the ones that are not required for era advance.
- Add the possibility of civil war/civs splitting under certain circumstances: a new civ appears, taking some of the cities of the old one, as could sometimes happen in Civ I when a capital was captured.
- Possibly to big a change:
Culture should not denote where a civilization&#8217;s borders will be drawn. This should be used as a modifier to a civilization&#8217;s final score or used to achieve a cultural victory. Borders should be drawn by the extent of the civilizations military power and the size of the civilization&#8217;s population. Units should be able to lay claim to land that is not occupied by other civilizations. This territory would only remain under control if a city, fort, airbase, naval base, or colony is constructed.
- Add a &#8220;favoured location&#8221; in the civilization, increasing the change that the civilization starts in such a location (a bit like &#8220;seafaring&#8221; have more chance to be coastal), so Viking don&#8217;t start in desert, or Egypt in Tundra.
- Add a &#8220;love rating&#8221; for each civ vs each other, with an effect on the chances to declare war or to ally, to the point were two civs will never go at war / never make peace.
- Allow for units to stake claim to non-occupied land through more options such as an airbase, naval base, fort, or colony; said civ would then be able to utlize the tiles within the
- Modify the way borders are computed, to take military strength into account and not only culture, and allow to change it more easily in the editor.
- Clarify/Fix the "Build Often" flags in the Civilizations tab of the editor.
- Advisors and other in game graphics change depending on the culture group selected

Workers and tiles
- Add the possibility to change the movement rate of railroad
- Add a "consume worker" flag for tile improvement, so we can decide if the worker disappear or not. Worker could disappear when creating an irrigation, to represent people going to work the fields and farms for instance.
- Allow two(three?) levels of irrigation
- Add a &#8220;fishery&#8221;, irrigation for sea.
- Allow two(three?) levels of mines. Mines can only extract resources.
- Add &#8220;Industries&#8221; (workshops, factories), that can increase the hammer output, but do not extract resources.
- Fix bug where worker units need all worker actions checked if it is to be used properly by the AI
- Create special workers with the ability to create offshore improvement.
- Colonies should be able to be established inside of owning civilization&#8217;s borders. City would get resources from outside of radius only if there was a colony connected by a road. Resources inside of a city&#8217;s radius would have to be connected by a road and the corresponding improvement.
IE: resource 2 tiles from a city: available if connected to city. 3 tiles: available if connected to city AND a colony is there.
- In addition to Fortresses, and Airbases, create Naval bases that can repair and supply ships outside of friendly territory. (ex. Guantanamo Bay, Naval Base)
- Option to have other types of road with different movement rates?
- Fortress and outpost should reduce the mobility of ennemy units (either with a ZOC effect, or by forcing them to stop when they are adjacent to fortress).

City improvment and wonderss
- Add an "allowed civilization" for improvement / wonder, as for the units.
- Allow a second tech as a requirement for buildings, (if it's a none era, it can also make civ specific buildings)
- Have more than 2 city levels.
- for building, make the tech or trade bonus variable, not always 50% (same as happiness / production)
- Make the pollution reduction for building adjustable
- Add a flag to modify food production for buildings (like +X%)
- Increase the allowed number of buildings beyond 255
- Add &#8220;Increase corruption&#8221; flag for building
- Add &#8220;Increase war weariness&#8221; flag for building
- Upgradable buildings, so a temple can be upgrade to a cathedral for instance (this would make city smaller)
- More "replaces all improvements with this flag checked" flags
- Allow for a non-coastal city improvment that would act like a "Coastal Fortress" acts where a defensive ZoC bombardment is performed.
- Possibility of new wonder effects? For example : +1 shield in every shield producing square, +1 food in every food producing square, pays maintenance for religious buildings
- Possibility of more than one "spaceship" and/or more than one "diplomatic victory"? We could then have text appropriate to that specific victory
- Make the Wonder effects available to ordinary improvements, and vice versa. Also make it possible for Spaceship components to have improvement/Wonder effects.
- Having all boxes able to be checked, whether or not it's a Wonder.
- Two new boxes should be "Doubles Food Production" and likewise Trade, not just Happiness.
- Make the number of Spaceship components editable.

Resources
- Resources can become obsolete
- Correct the placement of resources when there are too many of them
- Make off shore resources, and create workers with ability to harvest them. Resources such as oil should have to have a refinery built on top of it instead of just pulling it out of the ground, and there shouldn&#8217;t be irrigation for crops on top of an oil reserve.
- Units should also consume food, and not just the population of a city. This will better simulate units having to be supplied while in the field and keep players and the AI from building mass quantities of weak units early in the game, such as a lot of warriors, spearmen, archers, etc.
- Building flag "requires x resource in city limits" - should we cancel the need to have a road to the resource, so that whales etc can be the pre-requisite of coastal buildings?
- Allow for more resources to be added
- Fix "resource overflow bug"
- For a resource, indicates the bonus (food/shield/gold) when &#8220;normal&#8221;, and when &#8220;mined&#8221;.
Like iron = naturally no bonus, but +5 if mined. Wheat : +1 food, +4 if irrigated, etc.

Government
- Make tech civ-specific, not really needed if we use non-era tech...
- Add resources prerequisite to tech tree, so you cannot discover horse back riding without horses
- Fix "Cures Disease on Flood Plains" bug
- Allow for more than four (4) eras
- Allow for more unlockable attributes via technologies (i.e., more "Flags" in the Civilization Advances tab of the editor)

Diplomacy
- Give units more options when capturing an enemy city. Options such as occupy, annex, or raze would give the player or AI the ability to keep or return an enemy city. Occupied cities would still maintain the color of the civilization in which they belong, but all supplies and food stores would go to enemy units stationed inside of the city. No production would be possible inside of occupied cities until the city is either:
&#8226; annexed
&#8226; returned to the owning civilization.

Occupied cities would be automatically returned once a peace treaty is signed, or every unit from the invading civilization leaves the city, unless the city is won by the aggressor in the peace agreement. Occupied cities would take no money from the occupying civilization&#8217;s treasury for upkeep of improvements. Occupied cities would essentially become bases of operations with a limited amount of supplies/fuel to further the advance into enemy territory.
- Add a vassal option for diplomacy / peace resolution
- Add the option to enforce peace treaties between two civs: &#8220;Make peace with X&#8221;
- Add the option to demand simple strategies from an ally: &#8220;Declare air (sea, land) war on X&#8221;
- Allow for expanded range of diplomatic agreements such as mutual tile occupation, aircraft rebasing/refueling privelages, port access, etc.


There are enough ideas to keep you very busy for the coming months:).

I can mail the list in a word document with nice table if it is more convenient
 
I don´t see what´s wrong with Ignore Terrain ?? Rhye used this with great success in his famous Mod, and surely since the phase where a 1+ unit can retreat if getting beaten by a 1 move unit doesn´t work all that well one could use ignore in many ways.
I say please don´t limit things.
I have tried out ignore terrain on land and it works very well. It´s another case if the AI understand my intentions, but the humans could see it.

I tried out the movement difference between tracked and wheeled units. Wheels should move a greater distance on roads, but lower in "open" terrain.
Tracked units get ignore for grass,plains,flood plain, tundra, desert.
Naturally all those have more than standard movement of 1.

Bottom line DON´T take away stuff that really isn´t any bugs.

On the other hand a restriction on railroads, and even more variations of roads would be a hit.
Go for it .....
 
Ignore terrain: it reduces the cost. It has an effect only if the unit has 2 MP or more. But then units cannot withdraw properly.

So I'm not saying to remove the "ignore terrain", I'm saying:
- Fix the withdrawal mechanism, so any unit can withdraw from combat, but the chance depends on the MP difference. For example, let say the base is 30% chance of withdrawal + 10% for MP difference. So a unit with 2 MP vs unit with 3 MP: one has 20% chance to withdraw, the other 40%. With 1 MP and 5 MP, first has 0% chance to withdraw, second has 70%.
- Second, expand the "ignore terrain" option by adding an effect on combat: if a unit has "ignore forest terrain", then it has a 50% combat bonus in that terrain.

So I propose to replace the "ignore terrain" with a "favoured terrain", with the current movement bonus (+ fix of withdrawal mechanism) + combat bonus.

And to make it perfect, if we can add "cities" in the terrain list for the combat bonus, that could be very nice. We could have for example Urban guerilla units.
 
another thing -if possible- should be a way of making railroads on select terrain . In LotM &#305; have long tried to make "tunnels" only in mountains . Once enabling it for one type of tile it becomes available everywhere .
 
Ignore terrain: it reduces the cost. It has an effect only if the unit has 2 MP or more. But then units cannot withdraw properly.

So I'm not saying to remove the "ignore terrain", I'm saying:
- Fix the withdrawal mechanism, so any unit can withdraw from combat, but the chance depends on the MP difference. For example, let say the base is 30% chance of withdrawal + 10% for MP difference. So a unit with 2 MP vs unit with 3 MP: one has 20% chance to withdraw, the other 40%. With 1 MP and 5 MP, first has 0% chance to withdraw, second has 70%.
- Second, expand the "ignore terrain" option by adding an effect on combat: if a unit has "ignore forest terrain", then it has a 50% combat bonus in that terrain.

So I propose to replace the "ignore terrain" with a "favoured terrain", with the current movement bonus (+ fix of withdrawal mechanism) + combat bonus.

And to make it perfect, if we can add "cities" in the terrain list for the combat bonus, that could be very nice. We could have for example Urban guerilla units.

You´re absolutely correct Steph.
Spot on Sir !!! :goodjob:
 
Antal, I know that many of these requests have already been posted and that you have your hands full, but I figured I would post my top requests as well for what it's worth.

  • AI Artillery, of course
  • Armies Fix, even if it is just removing the extra movement point
  • Building (improvement or wonder) requirements for units
  • Building (improvement or wonder) incremental bonuses (+1, +2, etc.) for food, shields, and commerce
  • Era change graphics for mines, radar tower, roads and railroad
  • 'Replace Improvements with flag checked' for small wonders
  • Improvement and Wonder bonuses available for spaceship components
  • Ability to sacrifice own nationality units
Thanks for the work you are doing!
 
The helicopter Flag, mentioned by Steph looks cool.

Could this work perhaps.

One could perhaps use what is already in the game.
This of course needs a certain patch I think.

A unit that has Unit ability All Terrain as Roads ticked (which might not be used much)
could be a land unit that have ability also to move into coastal and sea terrain.
Programming it could be able to cross any terrain even Ocean, but then one should use the Sink in Ocean to prevent the chopper from moving too far from land.

As it is today using the attack-helo as ground unit and having All Terrains as Road is probably the best way for it, unless as an aircraft with blitz and short range.

Hastily I think it could work, but I´m sure better folks can find big flaws.

Somewhere in the code there must be a check if a unit is land or sea unit, so something like OR Unit Ability-All Terrain as Roads = Yes it will be OK to move into sea.

Whatever, just a crazy thought gents. Probably should be discarded, but but
One can get carried away :mischief:
 
Back
Top Bottom