First, let's review how battles of the Hellenistic Age historically played out. Please correct me if I'm wrong about any of these, since I'll be basing the battle mechanic changes off of these.
1. Very, VERY few casualties during the infantry clash. We can estimate between 5%-10%. Translated to EBII terms, this means your average unit of 160 men will suffer around between 10-20 casualties during this phase
2. Much more significant, but NOT crushing, casualties during the rout phase. When one infantry line breaks and is pursued by the enemy, they suffer badly, but are NOT slaughtered to the point of losing 90%. Instead, they lose around 30-50% of their numbers
3. Cavalry engagements tend to be swift and decisive, with the losing side usually escaping off the battlefield while pursued by the victors
4. The losing general tends to survive, either by leaving the battlefield early to chase down the enemy or attack their camp, by fighting around the battlefield over the course of the battle but ordering an organized retreat after defeat, or fleeing ignomiously.
5. Flanking or encirclement causes all but the most elite units to lose cohesion, panic, and suffer heavy casualties by the aggressors.
6. Frontal charges did NOT flatten most infantry, much less prepared spearmen. Only heavy cataphracts were ever recorded to smash into dense infantry formations (Battle of Carrhae).
7. The unexpected death of the general almost always causes panic in his forces and cause them to flee.
Now, how accurately does EBII and the M2TW game engine emulate these?
1. EBII does indeed buff infantry units' defenses relative to their offenses to decrease the casualty rate, but from my experience, they still suffer quite a few casualties during the infantry clash. My lesser units tend to lose 25-40% of their numbers, while higher quality ones still suffer between 10-20%.
2. Since the player actually has the option to continue the battle after routing the enemy army, they can unleash their cavalry and completely annihilate 80-99% of the enemy army. The battlefield is large enough to give the player plenty of time to run each individual unit down. Even player armies with only 2-3 cavalry units can still achieve a 90% enemy casualty rate through smart prioritization of fleeing enemies.
3. EBII accomplishes this rather nicely through having all cavalry units have much lower morale. For example, while the average professional infantry unit has morale of 5 or 6, for cavalry it varies between 3 and 5. Skirmisher cavalry tend to have awful morale of 1 or 2, which makes it very easy to chase them away from the battlefield. Cavalry engagement thus are decided much earlier than infantry ones.
4. This is a huge problem with not just EBII, but Total War battles in general. The AI does a terrible job of ensuring its general's survival, often charging him into enemy lines. While buffing AI generals' HP helps increase their longevity, it ultimately turns the battle into a waiting game: how long do you have to wait before the enemy's general is cut down by the heavy spearmen stabbing him from every direction? In addition, due to the general's naturally high unit morale, and further bonuses awarded by the Command and Confidence stats, the general never flees until he has been completely surrounded and his bodyguard reduced to 3 or 4 guys. By then it's too late and he dies anyways.
5. This behavior is hard to achieve because of a general's Confidence stat, and to a lesser extent the Command stat. Confidence awards a general's unit a constant morale bonus, and is removed only when he dies. It will persistent even if he has left the battlefield. Command buffs nearby units' morale, and does not work beyond a certain range. It obviously dissapates if the general dies or leaves the battlefield. The problem is that most AI generals have decent Command and Confidence stats, high enough to make almost every infantry unit on the battlefield highly durable. His infantry would fight even when surrounded, persist even after suffering a massive casualty rate when charged from behind, and resolutely fight on even when exhausted and at half strength. This makes most tactical maneuvers like flanking, surrounding, and charges pointless, and forces the player to prioritize killing the enemy general, which exacerbates point #4 even more.
6. EBII has IMO a rather concerning mass issue with its infantry units. Mass is an obscure but very important stat that governs how few casualties an infantry unit takes from cavalry charges. Low mass allows cavalry to knock over multiple rows of infantry like bowling pins, even if the charge is executed incorrectly. High mass allows an infantry unit to take much fewer casualties from charges. The problem though lies on the cavalry side. The best cavalry in EBII (cataphracts, heavy lancers like Hetairoi and Khuveshangan) have such massive charges that they can inflict 30% casualties on high-mass infantry units even from the front, and even when the infantry is prepared. Only the heaviest cataphracts should be able to do this, and even then only when the infantry is in an awkward deployment (the testudo Romans at Carrhae). Much less light lancers like Xystophoroi flattening Thureophoroi from the front.
7. EBII does this a little too well. This is related to problem #4 where the battle plan revolves around killing the enemy general. You can't even instill a house rule to prevent yourself from doing this, because the AI will just suicide its general anyway
The solutions I am proposing sound drastic, and at the time of writing are still untested, but hopefully they make sense and/or work in campaign mode battles.
1. Buff defense skill by 33%. This can be done quickly using RegEx on the EDU. This helps reduce melee casualties during the infantry clash in field battles without making siege battles too grindy.
2. There is no forceful way of doing this through mods, but instead the player can set the following House Rules to prevent them from slaughtering 90% of the enemy after a rout
- Before victory is achieved, the player is allowed to chase down the enemy all they want
- After victory is achieved, the player is not allowed to chase the enemy beyond a box centered on where the infantry clash took place. The size of this box is 25% of the battlefield. So imagine a quarter-sized box on the battlefield, and use that.
- Just don't use more than 3 non-general cavalry units for western factions and 5 for eastern factions. For nomadic factions, go off.
3. This doesn't really need a fix, but if you want cavalry engagements to be even more decisive, use a RegEx script to decrease the morale of all cavalry units by 1. Cavalry units with 1 morale should not be changed.
4. Increase the AI general's HP by 50%. Decrease the unit size of all bodyguard units by 50%. Standardize the morale of all general's bodyguard cavalry units at 4, but make them all disciplined. Infantry bodyguards are unaffected. This makes the actual general much harder to take down, and by making his bodyguard outnumbered and himself rather faint-hearted, he would be much harder to chase down. He will much more likely flee than fight to the death.
5. Give ALL non-impetuous units, cavalry and infantry alike, "low" discipline. This will make them much more reactive to flanking. Elite units however will persevere through their base morale alone, but lesser units will flee. In addition, give all heavily armored or notorious cavalry units "frighten_foot" to make cavalry the terrifying and decisive flanking force they were historically. So not just cataphracts, but also heavy lancers like Hetairoi, elites of society like Gallic Noble Cavalry and Khuveshangan, and infamous ones like Volcae Headhunters. By doing this, cavalry units can rout even troops being buffed by their generals.
6. It's much easier to nerf cavalry charges given how standardized cavalry stats are compared to infantry mass. Cavalry spear stats are categorized into the following numbers:
Cataphracts: 15 attack, 30 charge (Armenian Cataphracts)
Heavy Lancers: 10 attack, 28 charge (Iranian Noble Cavalry)
Medium Lancers: 10 attack, 21 charge (Hetairoi)
Medium Spears: 8 attack, 11 charge (Iranian Medium Cavalry)
Hippeis: 8 attack, 21 charge (Hippeis)
Gallic Spear/Shield: 6 attack, 15 charge (Gallic Noble Cavalry)
Lance/Shield: 4 attack, 17 charge (Bastarnae Cavalry)
Weak Lance/Shield: 4 attack, 15 charge (Indian Lancers)
Javelin: 5 attack, 3 charge (Hellenistic Late Skirmisher Cavalry)
Simulated Lance: 9 attack, 14 charge (Alan Riders)
The revised numbers could be:
Cataphracts: 15 attack, 15 charge
Heavy Lancers: 10 attack, 14 charge
Medium Lancers: 10 attack, 10 charge
Medium Spears: 8 attack, 5 charge
Hippeis: 8 attack, 10 charge
Gallic Spear/Shield: 6 attack, 7 charge
Lance/Shield: 4 attack, 8 charge
Weak Lance/Shield: 4 attack, 7 charge
Javelin: 5 attack, 3 charge (unchanged)
Simulated Lance: 9 attack, 7 charge
Yes, this would also make them weaker when charging enemy infantry from behind, but their new "fighten_foot" attribute could account for that by routing the enemy instead. The real fix is that not even cataphracts can completely decimate infantry from the front.
7. Go into export_descr_character_traits and there should be a hidden trait that governs Confidence and Command buffs for winning battles. You know how you win battles with a general, and he doesn't gain any new traits, but his Confidence or Command increases anyway? That's the hidden trait we're trying to locate. The Command buffs should remain unchanged, but the Confidence buff, which is a global morale boost, should be completely removed. This will prevent units from becoming unbreakable even when the general is not present, which allows for meaningful offensive maneuvers.
So, the proposed changes are, in summary:
1. Buff defense skill of all infantry
2. Don't use too much cavalry, and impose a limit on yourself on how far you can chase fleeing units
3. Optionally decrease the morale of all cavalry by 1
4/7. Increase the general's hp and resilience to morale shocks, but nerf his Confidence, cavalry bodyguard size, and morale
5. Make all units vulnerable to morale shocks, unless they are impetuous idiots. To intensify this behavior, give all heavy or infamous cavalry the frighten_foot attribute.
6. Heavily nerf cavalry charges across the board
I will try to cook up some RegEx scripts to make changing values easier, and test this, in due time.