• We are currently performing site maintenance, parts of civfanatics are currently offline, but will come back online in the coming days. For more updates please see here.

[BTS] COMBAT REVOLUTION MOD V1.34

CHINCHIN

Chieftain
Joined
Jul 8, 2004
Messages
57
Location
Spain
This Mod can be played both against AI and multiplayer, and supports all languages, although it is only translated 100% in English and Spanish.

It has the following important and differential changes:

1) Combat:

Bombing:
In this Mod the siege units do not attack, bomb, until they get a maximum damage from 16% Catapults, up to 28% Heavy artillery.

ZOC (Control Zone): All land and naval units have a ZOC in their contiguous squares, which can not pass through enemy units (can be deactivated in the main menu of the game)

Limited attacks: Each field square has a maximum number of attacks (can be disabled in the menu)
From land squares: 3 Terrestrial and 2 Blitz.
From sea squares: 2 Naval, 2 Terrestrial, and 2 Blitz.
From City: 4 Terrestrial, 2 Naval, and 2 Blitz.

Units of combat: They have been modified slightly to equal the forces and to have a predominant offensive unit in each epoch.

With these changes, usually equal matches are won, in which promotion, fortification, and terrain are very important. The combat tactics change radically, solid fronts are created with small stacks, the power to break the enemy lines, the mobility, and the power to attack from other squares becomes vital for the victory.

2) Resources:

Resource-Units:
Part of the resources of the game function as the standard game, other resources have to be transported, through resource-units that can only be produced in cities where their culture radio has said resources.

General resources: These resource units must be transported to the capital to give happiness, health, in addition to gold, hammers, and food. (At 10 turns disappear)

Manufactured resources: Other resource units must be transported to specific cities that have the appropriate building. These can produce other resource units, such as Steel, fuel ...) or units (workers, Settlers, weapons (which in turn give military units), or tools (very important since they accelerate the constructions very effectively)

Ammunition and fuel: If this option is checked in the main menu, certain units need fuel to move, or ammunition to combat.

With this we transform the game into a kind of "Colonization" where the resource units move around the world, the vast majority to the Capital, others to special cities (Foundry => Iron = Steel / Refinery => Oil = Fuel. ..), others to units (Fuel and / or Ammunition), or to other foreign cities to exchange or trade. On the other hand workers are transported (in the mod they are destroyed when creating improvements, except roads and roads) and tools, to growing cities.

3) Others.
It has many other changes that are not as significant, new units, resources, buildings ... All the changes you have exposed in the second post. You also have them in the following documentation:

http://bit.ly/2KEL616

4) Scenarios
Includes 2 scenarios, The Great War, and WWII War in the Pacific.

Integrates the following Mods:

The BUG Mod

http://civ4bug.sourceforge.net/BUGMod.html

Blocade-units

https://forums.civfanatics.com/threa...-units.614387/

And here the mod: MOD COMBAT REVOLUTION v1.34

http://bit.ly/2K7AmZC

The mod folder is placed in: Sid Meier's Civilization 4 \ Beyond the Sword \ Mods

Thanks to Manolo, who with his knowledge in programming contributed a lot in the beginning, and to the community of Civilization IV for its graphics of units, buildings, icons ...
 
GENERAL:

Sightings: The sighting is reduced to a range of 3 (5 in BTS).

Healing: Units heal much more slowly, 8% in any terrain, and 12% in city.

UNITS-RESOURCE:

Generalities:
Part of the resources of the game function as the standard game, other resources have to be transported, by means of resource units that can only be produced in cities where their culture radio has said resources.

General resources: These resource units must be transported to the capital to give happiness, health, in addition to gold, hammers, and food. (At 10 turns disappear)

Spoiler Units recourse to the capital :
Recursos3.jpg


Manufactured resources: Other resource units must be transported to specific cities that have the appropriate building. These can produce other resource units, such as Steel, fuel ...) or units (workers, Settlers, weapons (which in turn give military units), or tools (very important since they accelerate the constructions very effectively)

Spoiler Manufactured resources :
Recursos1.jpg

Recursos2.jpg



Ammunition and fuel: If this option is checked in the main menu, certain units need fuel to move, or ammunition to combat.

Entertainment buildings: The Contract building triggers an event whereby 2 happy people are received in all the cities during 6 shifts, this action is accumulated in number of shifts and not in the amount of happy ones. You can see the number of turns on the screen of the city by placing the mouse over total happiness. Construible by Success songs, Successful musics, and Success films. They require the wonders Rock & Roll, Broadway, and Holywood respectively.

COMBAT: The units have been modified minimally to ensure that each time there is an offensive unit slightly higher in attack to any unit defending, and also so that there are no great advantages between units.

Attacks per square: Can be activated or deactivated in the starting menu. They are limited to 3 land attacks (2 if they are from the sea), 2 naval attacks, and 2 lightning strikes. It is understood as attacks, direct attacks or bombings. From the city, 4 land attacks are allowed. Air units have no limits.

Control Zone (ZOC): The ZOC is an option of the game menu and therefore can be activated or deactivated, this does not work like the ZOCs of board games, it is somewhat complex due to the diagonal squares. See: https://forums.civfanatics.com/threa...-units.614387/

Special units: Are: Air bases, may contain 4 air units. Bunkers, may contain 2 units of infantry, Field of mines, take them as target the Engineers. Naval mines are taken by minesweepers. And Torpedos, the submarines launch them and take Transport as a priority target. These units start with fuel but can not recharge, with this we get that they can not move, if they want to have the possibility of being loaded again in a transport. And if for whatever reason they move, they will remain there immobile (Since in the mod it does not allow to load units without movement)

Air Interception: Units with this order do not intercept if they are injured.

Submarines and anti-submarine weapons (ASW): The ASW units are represented by seaplanes that take off from airbases and destroyers, and only discover submarines through sighting. The nuclear submarine has the option to submerge (icon in the orders of the unit) of this form it can not attack but it is not visible by any unit. If he emerges in a turn he can no longer submerge in the same turn.

Bombardment: Units with this ability have limited damage between 14% (Catapult) and 28% (Heavy Artillery)

Ammunition and fuel: Some units require ammunition and / or fuel to combat or move, these are loaded with the corresponding icons. The units that supply (Ammunition, Fuel, and Dairy Cow) also have an icon to distribute among all the units in the stack. If they do not have ammunition they can not attack or bomb, and in defense they have -25%. If they do not have fuel they can not move. If the option "Supply" is deactivated in the game menu, this need is eliminated.

Defenses of the cities: These always have a minimum of + 5%, and increase by + 5% per level of culture. The Walls, Fortress, and Castle increase + 20%. These can not be reduced with bombing and no unit ignores them. The only way to eliminate it is through spies. And the change by culture level in normal speed is 10-200-10000-30000-50000.

Workers: Their cost is 20, they do not consume food, and they are eliminated when building improvements. Except roads and railways.

Spies: The missions of Rebellion, and changes of principles and Religion are eliminated.

Troop: Troop is considered the Infantry, Artillery, Ammunition and Fuel units. Also, airbases, bunkers, and minefields.

Torpedo: Transported by submarines

Naval Mines: Transported by minesweepers.

Transports: The following units can only load Troop: Caravan, Trucks, Armored, Helicopters, and Air transport. The Transports and Trains can load any land unit. The Destroyers: ASW, the Portaviones: Fighters, and torpedo boats, the Airbases any air unit.

Train Unit: This unit can only be moved on railway tracks. Much slower by enemy territory. They transport 4 land units.

Promotion Wheels: The units with the ascent wheels costs 1 point more the land. These are resource units, Caravan, and Truck.

Spoiler Terrain :
Terreno.jpg

Jungle: +1 Hammer and sawmill can be built.
Pasture: Can be built on plains and meadows (+1 Food).
Camp: Can be built in forest-jungle.
Talar Selva gives 10/14 hammers.

New resources:
Citrus: +1 Health
Walrus: +1 Health
Pearls: +1 Happiness
Rubber: +1 Happiness
Clothing: +1 health
Currencies: +1 Happiness
Jewels: +1 Happiness.
Figures of Ivory: +1 Happiness
Fruit: +1 Health
Liquors: +1 Health
Canned food: +1 Health

Strategic:
Bronze weapons
Iron weapons
Horses of war
Steel
Alloy
Fuel

Improvements:
Sawmill: +1 Hammer with Electricity
Improved Mine: Produces 1 Hammer more than the Mine.
Improved mill: Produces 1 Hammer and 1 Gold more than the Windmill.
Forest Reserve: Produces +1 gold.
Fort Damaged: As the strong but + 15% defense + 10% anti-air defense (AA).
Village: + 5% defense.
Villa: + 10% defense + 5% AA.
Town: + 15% defense + 10% AA.

When the fort receives an impact (bombing or pillage), it becomes Fort Damage.
The railway does not increase the production of squares.
The Windmill does not increase its performance with Spare Parts and Electricity.

LEADERS: There are special leaders who only appear on stages, never in the standard game. All features contain the advantage "Without anarchy". Modify the following features:

Spiritual: Add +1 to Happiness in all cities.

The period of anarchy is 6 turns (5 in BTS).

ACCELERATE PRODUCTION: All units up to industrialization accelerate production in proportion of 1 hammer to 5 of cost (1/5) The units Tools (3/2) with Workshop and (2/1) with Casting.

MOVEMENT AND TRANSPORTATION:
The road movement costs 1PM (1/2).
The flat terrain costs 2 Movement Points (PM)
Hill, forest, and snow, costs 3PM
Jungle, or hill + forest or jungle, costs 4PM
UD move more, Infantry 2, Workers 3, tanks 4 ...
By rail it costs 0.80PM. This gives 1 more box per unit (before 10 in total)
The infantry moves through all the terrains as by road.

PROMOTION:

Modified:

Assault I: (Montaraz I) + 15% Ata. Hills-Forest-Jungle.
Assault II: (Montaraz II) + 20% Ata. Hills-Forest-Jungle.
Assault III: (Montaraz III) + 25% Ata. Hills-Forest-Jungle.
Guerrilla I: + 15% Def. Hills-Forest-Jungle.
Guerrilla II: + 20% Def. Hills-Forest-Jungle.
Guerrilla III: + 25% Def. Hills-Forest-Jungle.
Medica I: + 4% cure in the same box.
Medica II: + 2% cure in the same cell + 6% cure adjacent cells.
Medica III: + 10% cure in the same box and contiguous. Requires MEDICINE.
Combat IV: No cure
Combat V: + 15% Strength, Not cure
Instruction I: + 5% Strength
Instruction III: + 5% Force
Accuracy: + 10% Strength / 2 Ata. Initiative / Requires Instruction IV
Ace: Requires Combat II (Combat III)
Bliz: Requires Combat I (Combat II)

New:
Naval: + 25% against naval
Maneuver: -30% Forest-Forest-City, and -20% Hills
Wheels: +1 at the cost of the land.
Rails: +4 at the cost of the land.
Radar: + 15% Defending in coast and ocean.
Sonar: -2 Visibility

CORPORATIONS
Standed Ethanol: They do not give oil. Science +2.25 (1.50) Food +0.37 (0)
Aluminiun Co: Do not give Aluminum. Science +1.50 (2.25) Production +0.56 (0)

UNIT CATEGORY
New categories:
Submarine: Submarine I, Submarine II, and Submarine III.

Spoiler New units :
UNIDADES.jpg
 
Last edited:
oh my god CHINCHIN,

incredible ,
how long have you worked on this amazing thing?

ok,
now ill ask - how am i to merge this with advanced civ mod?
did you use vanilla bts code?

im even more blown away by -
AI know how to use
multiplayer compatible.

fuel OMG.

edit: oh..no source code?
 
Last edited:
Hello Keldath,

Thank for your kind words.

I started in 2011 with the mod, 8 years now.

Do you want to integrate all the mod, or some specific part?

Yes, the initial code was that of the BTS. In the beginning it was my colleague Manolo who modified the code, unfortunately he left the project, now I modify it by testing and observing, since my computer skills are poor.

I do not modify any AI, you can play against the AI, but the AI does not understand many of the changes, so you play with a slight advantage.
 
I see some interesting mechanics here. You have implemented a limited tile attack mechanic which is of interest to me and @f1rpo since we're in the process of implementing a similar (but somewhat different) mechanic. It would be interesting to compare our implementations if the source code is made available.
 
Last edited:
Limited attack to a tile is a very interesting interpretation for combat,
Its like another way to restrain stacks of doom, maybe also the number of attack should take stack size, terrain type, enemy stack and deff.

Maybe firaxis should have also though about it.
Though the logic of it if so so,
I would also like to have it in my mod.
 
The source code:

https://drive.google.com/file/d/1AIWkAq40F_FSw-iyldKBr_ThgVTDkJE_/view?usp=sharing

Spoiler Cvdefine.h :
#define ATAQUE_BASE_CASILLA 2


Spoiler CvPlayer.cpp :

//CCM Ataques por casilla
int CvPlayer::numeroAtaquesTerrestres(CvPlot *pPlotUnidad) const
{

int maximo=0;
int porEra=0;/*
if((int)GC.getGameINLINE().getCurrentEra()<2)

else
if((int)GC.getGameINLINE().getCurrentEra()<4)

else porEra=2;*/
int porCiudad=0;
if (pPlotUnidad->isCity())

int porCultura=0;
int porFuerte=0;
if ((PlayerTypes)pPlotUnidad->getOwner()!=NO_PLAYER)
{
if (GET_PLAYER((PlayerTypes)pPlotUnidad->getOwner()).isAtWar(getID()))
porCultura=1;

if (GET_PLAYER((PlayerTypes)pPlotUnidad->getOwner()).isAtWar(getID()))
porFuerte=0;
else
{


}
}
if (((GET_TEAM(GET_PLAYER((PlayerTypes)pPlotUnidad->getOwner()).getTeam()).isHasTech((TechTypes)80)) && porCultura==1))
porEra=1;

if (porCultura>0)
{
porCiudad =0;
porFuerte=0;
}
if (pPlotUnidad->isWater())

else
maximo = ATAQUE_BASE_CASILLA+porEra+porCiudad+porCultura+porFuerte;



return maximo -pPlotUnidad->numAtaques[(int)getID()];
}
int CvPlayer::numeroAtaquesMar(CvPlot *pPlotUnidad) const
{
return 2-(pPlotUnidad->numAtaquesMar[(int)getID()]);


}
int CvPlayer::numeroAtaquesBlitz(CvPlot *pPlotUnidad) const
{

return 2 -pPlotUnidad->numBlitz[(int)getID()];

}


Spoiler CvUnit.cpp :

{//MMC
CvPlot *pPlotUnidad = GC.getMapINLINE().plotINLINE(this->getX(),this->getY());
int ataquesLibres=0;
int ataquesLibresBlitz=GET_PLAYER((PlayerTypes)this->getOwner()).numeroAtaquesBlitz(pPlotUnidad);
if ((int)this->getDomainType()==DOMAIN_SEA)
ataquesLibres= GET_PLAYER((PlayerTypes)this->getOwner()).numeroAtaquesMar(pPlotUnidad);
else
ataquesLibres= GET_PLAYER((PlayerTypes)this->getOwner()).numeroAtaquesTerrestres(pPlotUnidad);
if (!this->isBlitz())
{
if (m_bMadeAttack)
return true;
}
if (ataquesLibres>0)
return false;
if (this->isBlitz())
{
if (m_bMadeAttack)
{
if (ataquesLibresBlitz>0) return false;
else
return true;
}
else
{
return true;
}

}
else
{
if (ataquesLibres<=0)
return true;
}
//MMC*
//MMC
int CvUnit::numeroAtaques( ) const
{
CvPlot *pPlotUnidad = GC.getMapINLINE().plotINLINE(this->getX(),this->getY());
int maximo=0;
int porEra=0;/*
if((int)GC.getGameINLINE().getCurrentEra()<2)
porEra=0;
else
if((int)GC.getGameINLINE().getCurrentEra()<4)
porEra=1;
else porEra=2;*/
int porCiudad=0;
if (pPlotUnidad->isCity())
porCiudad=1;
int porCultura=0;
int porFuerte=0;
if ((PlayerTypes)pPlotUnidad->getOwner()!=NO_PLAYER)
{
if (GET_PLAYER((PlayerTypes)pPlotUnidad->getOwner()).isAtWar(this->getOwner()))
porCultura=1;

if (GET_PLAYER((PlayerTypes)pPlotUnidad->getOwner()).isAtWar(this->getOwner()))
porFuerte=0;
else
{
if (pPlotUnidad->getImprovementType()==GC.getInfoTypeForString("IMPROVEMENT_FORT"))
porFuerte=1;
}
}
if (((GET_TEAM(GET_PLAYER((PlayerTypes)pPlotUnidad->getOwner()).getTeam()).isHasTech((TechTypes)80)) && porCultura==1))
porEra=1;


maximo = ATAQUE_BASE_CASILLA+porEra+porCiudad+porCultura+porFuerte;

if ((int)this->getDomainType()==DOMAIN_SEA)
if (pPlotUnidad->numAtaques[(int)this->getOwner()]>=1) return 0;
else
return 1;

return maximo -pPlotUnidad->numAtaques[(int)this->getOwner()];

} //MMC*


Spoiler CvPlot.cpp :

//APTMOD
numAtaques = new int[MAX_CIV_PLAYERS+1];
numAtaquesMar = new int[MAX_CIV_PLAYERS+1];
numBlitz = new int[MAX_CIV_PLAYERS+1];

for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaques[iI] = 0;
}
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaquesMar[iI] = 0;
}

for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numBlitz[iI] = 0;
}
//APTMOD
SAFE_DELETE_ARRAY(numAtaques);
SAFE_DELETE_ARRAY(numAtaquesMar);
SAFE_DELETE_ARRAY(numBlitz);

//APTMOD
if (numAtaques!=NULL)
for (iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaques[iI] = 0;
}
else
{
numAtaques = new int[MAX_CIV_PLAYERS+1];
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaques[iI] = 0;
}
}
if (numAtaquesMar!=NULL)
for (iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaquesMar[iI] = 0;
}
else
{
numAtaquesMar = new int[MAX_CIV_PLAYERS+1];
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaquesMar[iI] = 0;
}
}
if (numBlitz!=NULL)
for (iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numBlitz[iI] = 0;
}
else
{
numBlitz = new int[MAX_CIV_PLAYERS+1];
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numBlitz[iI] = 0;
}
}
m_ownerGuerra = NO_PLAYER;
//APTMOD
if (numAtaques!=NULL)
{
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaques[iI] = 0;
}
}
else
{
numAtaques = new int[MAX_CIV_PLAYERS+1];
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaques[iI] = 0;
}
}
if (numAtaquesMar!=NULL)
{
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaquesMar[iI] = 0;
}
}
else
{
numAtaquesMar = new int[MAX_CIV_PLAYERS+1];
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numAtaquesMar[iI] = 0;
}
}
if (numBlitz!=NULL)
{
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numBlitz[iI] = 0;
}
}
else
{
numBlitz = new int[MAX_CIV_PLAYERS+1];
for (int iI = 0; iI <= MAX_CIV_PLAYERS; ++iI)
{
numBlitz[iI] = 0;
}
}
if (m_ownerGuerra==(int)NO_PLAYER)
//APTMOD
SAFE_DELETE_ARRAY(numAtaques);
SAFE_DELETE_ARRAY(numAtaquesMar);
SAFE_DELETE_ARRAY(numBlitz);
numAtaques = new int[MAX_CIV_PLAYERS+1];
pStream->Read(MAX_CIV_PLAYERS+1, numAtaques);
numAtaquesMar = new int[MAX_CIV_PLAYERS+1];
pStream->Read(MAX_CIV_PLAYERS+1, numAtaquesMar);
numBlitz = new int[MAX_CIV_PLAYERS+1];
pStream->Read(MAX_CIV_PLAYERS+1, numBlitz);
pStream->Read(&m_ownerGuerra);
//APTMOD
pStream->Write(MAX_CIV_PLAYERS+1, numAtaques);
pStream->Write(MAX_CIV_PLAYERS+1, numAtaquesMar);
pStream->Write(MAX_CIV_PLAYERS+1, numBlitz);
pStream->Write(m_ownerGuerra);


Spoiler CvPlot.h :

//APTMOD
int *numAtaques;
int *numAtaquesMar;
int *numBlitz;
void setOwnerGuerra (int valor)
{
m_ownerGuerra=valor;
if (valor !=(int)NO_PLAYER)
setOwner((PlayerTypes)m_ownerGuerra, false, false);
};
int getOwnerGuerra ()
{
return m_ownerGuerra;
};


I think that's all.
 
Last edited:
Back
Top Bottom