Infantry don't charge horses.

Moderators: rbodleyscott, Slitherine Core, Gothic Labs

Post Reply
jomni
Sengoku Jidai
Sengoku Jidai
Posts: 1394
Joined: Thu Dec 03, 2009 1:20 am

Infantry don't charge horses.

Post by jomni »

Currently, my Japanese infantry don't charge horses. Is this mainly due to them being warrior or medium foot? what do I change in the code so that they can attack horses? I don't want to resort to changing their unit type.

What is the logic of this rule in Renaissance?
rbodleyscott
Field of Glory 2
Field of Glory 2
Posts: 28294
Joined: Sun Dec 04, 2005 6:25 pm

Re: Infantry don't charge horses.

Post by rbodleyscott »

jomni wrote:Currently, my Japanese infantry don't charge horses. Is this mainly due to them being warrior or medium foot? what do I change in the code so that they can attack horses? I don't want to resort to changing their unit type.

What is the logic of this rule in Renaissance?
The logic is that they didn't do it. While later pike and shot units had enough pikes to fend off cavalry if they were ready for them, they did not have enough to aggressively advance against them - instead relying on shooting to drive them off.

Because of the IGOUGO nature of the game, cavalry combats are far more static in-game than they would be in reality, so the notion of pike and shot charging cavalry in the rear owes much to a miscomprehension of the reality the cavalry combat is representing.

In your mod you can easily change the rules so that they can charge. You need to mod the ChargePermitted() function in CombatTools.BSF. For example, the additional code in red will allow Warriors to charge cavalry.

// Returns 1 if unit would be permitted to charge enemy (NOT taking into account morale, charge target priority or move distance), otherwise 0.
FUNCTION ChargePermitted(me, enemy)
{
int ret;

ret = 1;

// These types can never charge
if ((IsArtillery(me) == 1) || (IsUnitSquadType(me,"Battle_Wagons") == 1) || (IsUnitSquadType(me,"Train") == 1) || (IsUnitSquadType(me,"Boat") == 1)) // Amphibious left out as probably don't exist
{
ret = 0;
}

// Foot (other than keils) cannot charge mounted (other than light troops)
if ((IsFoot(me) == 1) && (IsMounted(enemy) == 1))
{
if ((PercentKeil(me) == 0) && (IsLightTroops(enemy) == 0) && (IsUnitSquadType(me, "Warriors") == 0))
{
ret = 0;
}
}

if ((IsLightTroops(enemy) == 0) && (IsArtillery(enemy) == 0) && (IsOpen(GetUnitX(enemy), GetUnitY(enemy)) == 1))
{
// Light foot and commanded shot cannot charge unbroken non-artillery non-light troops in open
if ((IsUnitSquadType(me, "Light_Foot") == 1) || (IsUnitSquadType(me, "Commanded_Shot") == 1))
{
if (GetAttrib(enemy, "MoraleState") < 3)
{
ret = 0;
}
}

// Dragoons cannot charge unfragmented non-artillery non-light troops in open
if (IsUnitSquadType(me, "Dragoons") == 1)
{
if (GetAttrib(enemy, "MoraleState") < 2)
{
ret = 0;
}
}
}


return ret;
}

Formatted version:

Code: Select all

// Returns 1 if unit would be permitted to charge enemy (NOT taking into account morale, charge target priority or move distance), otherwise 0.
FUNCTION ChargePermitted(me, enemy)
{
	int ret;

	ret = 1;

	// These types can never charge
	if ((IsArtillery(me) == 1) || (IsUnitSquadType(me,"Battle_Wagons") == 1) || (IsUnitSquadType(me,"Train") == 1) || (IsUnitSquadType(me,"Boat") == 1)) // Amphibious left out as probably don't exist
		{
			ret = 0;
		}

	// Foot (other than keils) cannot charge mounted (other than light troops)
	if ((IsFoot(me) == 1) && (IsMounted(enemy) == 1))
		{
			if ((PercentKeil(me) == 0) && (IsLightTroops(enemy) == 0) && (IsUnitSquadType(me, "Warriors") == 0))
				{
					ret = 0;
				}
		}

	if ((IsLightTroops(enemy) == 0) && (IsArtillery(enemy) == 0) && (IsOpen(GetUnitX(enemy), GetUnitY(enemy)) == 1))
		{
			// Light foot and commanded shot cannot charge unbroken non-artillery non-light troops in open
			if ((IsUnitSquadType(me, "Light_Foot") == 1) || (IsUnitSquadType(me, "Commanded_Shot") == 1))
				{
					if (GetAttrib(enemy, "MoraleState") < 3)
						{
							ret = 0;
						}
				}

			// Dragoons cannot charge unfragmented non-artillery non-light troops in open
			if (IsUnitSquadType(me, "Dragoons") == 1)
				{
					if (GetAttrib(enemy, "MoraleState") < 2)
						{
							ret = 0;
						}
				}
		}


	return ret;
}
Richard Bodley Scott

Image
jomni
Sengoku Jidai
Sengoku Jidai
Posts: 1394
Joined: Thu Dec 03, 2009 1:20 am

Re: Infantry don't charge horses.

Post by jomni »

Thanks. I am debating whether to do it in my mod.
If a cavalry dominant side fights an infantry dominant side (theoretically the Koreans and Chinese), initiative will always be with the horses. They choose the melee battles. And strong infantry units just sit there and wait.

Its just more noticable in my mod. In East Asia, not all units can shoot unlike the majority of Western European troops. Not too fun when majority of your melee infantry can't do anything. But it's true that due to mobility, cavalry can afford to choose their battles.

I think I see some logic in the rule after all.
rbodleyscott
Field of Glory 2
Field of Glory 2
Posts: 28294
Joined: Sun Dec 04, 2005 6:25 pm

Re: Infantry don't charge horses.

Post by rbodleyscott »

I would allow Warriors to charge - otherwise, as you say, the vast majority of them (the yari men) cannot do anything to cavalry at all. You could stop the yumi and teppou men charging if you want.

if ((PercentKeil(me) == 0) && (IsLightTroops(enemy) == 0) && ((IsUnitSquadType(me, "Warriors") == 0) || (GetAttrib(me, "Bow") > 0) || (GetAttrib(me, "Arquebus") > 0)))
Richard Bodley Scott

Image
dang
Private First Class - Wehrmacht Inf
Private First Class - Wehrmacht Inf
Posts: 9
Joined: Wed May 20, 2015 9:29 am
Location: new zealand

Re: Infantry don't charge horses.

Post by dang »

interesting to see, that there is a workarround if you ALLWAYS want to have certain infantry capable of charging mounted, good!

But in about every 4th of my games some good infantry that has low or no shooting capability is now blocked by some Horse, that is happy to just sit in front of the good foot and block it (as it has a zoc over it). The Problem with the rule is, that it asumes the Mounted behave historicaly, so wouldnt linger in front of the foot. Which, being led by the players knowing the rule, of course they do not. Its a game mechanism defeating itself, as it is now. Not allways of course but often enough to be a real nuissance. Especialy if you have a game with some Units classed as Keils (early Tercios) and other very similar ones not classed as Keils (late Tercios) the outcomes can be VERY odd. Early 30YW Scenarios I stopped playing, because the player with the early tercios is advantaged a lot, as his tercios could not be blocked.

I understand the reasoning that foot rather shot mounted but risking loosing cohesion by charging. But if you make that into the rule as it is now, the outcome is mounted tactics that are plain unrealistic. Foot should be able to charge (move up close and fire a salvo or throw their axes if you want) into cavalry that blocks their way if they cant do anything else. With the rule as it is, you can hold a given position with a cavalry unit against say a billmen unit even the billmen cant shoot the mounted and would have hacked them to pieces in Mellee, but cant according to the rule as written. Frustrating.

Tilman
rbodleyscott
Field of Glory 2
Field of Glory 2
Posts: 28294
Joined: Sun Dec 04, 2005 6:25 pm

Re: Infantry don't charge horses.

Post by rbodleyscott »

dang wrote:interesting to see, that there is a workarround if you ALLWAYS want to have certain infantry capable of charging mounted, good!

But in about every 4th of my games some good infantry that has low or no shooting capability is now blocked by some Horse, that is happy to just sit in front of the good foot and block it (as it has a zoc over it). The Problem with the rule is, that it asumes the Mounted behave historicaly, so wouldnt linger in front of the foot. Which, being led by the players knowing the rule, of course they do not. Its a game mechanism defeating itself, as it is now. Not allways of course but often enough to be a real nuissance. Especialy if you have a game with some Units classed as Keils (early Tercios) and other very similar ones not classed as Keils (late Tercios) the outcomes can be VERY odd. Early 30YW Scenarios I stopped playing, because the player with the early tercios is advantaged a lot, as his tercios could not be blocked.

I understand the reasoning that foot rather shot mounted but risking loosing cohesion by charging. But if you make that into the rule as it is now, the outcome is mounted tactics that are plain unrealistic. Foot should be able to charge (move up close and fire a salvo or throw their axes if you want) into cavalry that blocks their way if they cant do anything else. With the rule as it is, you can hold a given position with a cavalry unit against say a billmen unit even the billmen cant shoot the mounted and would have hacked them to pieces in Mellee, but cant according to the rule as written. Frustrating.

Tilman
Certainly the rule should be extended to allow any foot without missile weapons to charge mounted. Will see about that for next update.

However, it is arguably already too easy for pike and shot to defeat cavalry, and push them round the field. Making it easier for pike and shot to defeat cavalry would not, overall, be a good thing.
Richard Bodley Scott

Image
Hutze
Lance Corporal - SdKfz 222
Lance Corporal - SdKfz 222
Posts: 23
Joined: Fri Dec 05, 2014 10:53 am

Re: Infantry don't charge horses.

Post by Hutze »

Maybe don't allow infatry to attack cavalry but let the infantry force a fall back movement on the cavalry without the cavalry loosing cohesion?
Post Reply

Return to “Modders Corner”