Coder Diary #7 -- Morale Modifiers, Unit Capabilities, and More
In the same spirit of bettering my game play, bringing to the forefront game details that I might otherwise gloss over, I have added hex-only TEM & Morale modifiers to the Info Box display:ORIGINAL: berto
I don't know about you, but: I have played around with these new hot keys some, and they are a game changer. With Display->Highlight(s) now so much more easy and convenient -- simple key presses vs. laborious, tiresome mouse sweeps/menu hunt-and-pecks -- I will do them much, much more often. I will become much more aware of: Moved Units, Disrupted Units, Fired/Fought Units, Indirect Fire Units, Headquarter Units, Out of Supply Units, etc., etc. And being more aware, I will be a better player for it...
The asterisks are there to remind players that other factors -- e.g., hex sides, unit types, etc. -- might also apply.
The overlay to the upper left is the old-style Info Box (sans TEM & Morale values). The overlay to the bottom left is excerpted from the CS Manual. (If the displayed Info Box Morale, 2, doesn't match the Light Jungle Morale Mod from the Manual, +1, the explanation is that the Improved Position (IP) adds another +1 to the Morale. And similarly for Concealment.)
In the game Options Menu, you see Low Details, and Medium Details, but ... no High Details. Why not? Years ago, that choice had been removed from the Options Menu for some reason.
The only way to activate High Details has been to click on the x control in the upper left corner of the Damage Report box -- something so obscure that even veteran players had forgotten about it. (It is documented in the CS Manual, but who reads manuals anyway, right? [8|])
I have restored High Details, to go along with Low & Medium Details:
Unlike Medium Details, where the Damage Report will vanish after a several second pause, with High Details, the Damage Report persists until one clicks the x (exit) control. I like that.
At the request of the unit and scenario devs, I have added two new unit capabilities, shown in highlight near the end of this very long list:
// Unit Move flags.
const int XTracked = 0x00000001;
const int XFoot = 0x00000002;
const int XHalftrack = 0x00000004;
const int XArmoredCar = 0x00000008;
const int XTruck = 0x00000010;
const int XNoLtBridge = 0x00000020;
const int XNoMedBridge = 0x00000040;
const int XAmphibious = 0x00000080;
const int XSki = 0x00000100;
const int XMotorcycle = 0x00000200;
const int XTrain = 0x00000400;
const int XHorse = 0x00000800;
const int XBoat = 0x00001000;
const int XRaft = 0x00001000;
const int XWagon = 0x00002000;
const int XNoHvyBridge = 0x00004000;
const int XAir = 0x00010000;
const int XShip = 0x00020000;
// Unit Carry flags.
const int XLoadable = 0x00000001;
const int XRidable = 0x00000002;
const int XTowable = 0x00000004;
const int XCarryAll = 0x00000008;
const int XCarryRider = 0x00000010;
const int XCarryTow = 0x00000020;
const int XTowOnly = 0x00000040;
const int XPortage = 0x00000080;
const int XCanSki = 0x00000100;
const int XCanMotor = 0x00000200;
const int XCanBicycle = 0x00000400;
const int XCanHorse = 0x00000800;
const int XHeavyGun = 0x00001000;
const int XCarryHorse = 0x00002000;
const int XCarryBicycle = 0x00004000;
const int XCarryMotor = 0x00008000;
const int XCarryBoat = 0x00010000;
// Unit Fire flags.
const int XHardTarget = 0x00000001;
const int XNormalAA = 0x00000002;
const int XReducedAA = 0x00000004;
const int XIndirectFire = 0x00000008;
const int XSmokeFiring = 0x00000010;
const int XFireWater = 0x00000020;
const int XWhiteP = 0x00000040;
const int XSAM = 0x00000080;
const int XATGM = 0x00000100;
// MERGE:
#if defined(MIDDLE_EAST) || defined(VIETNAM_WAR) || defined(KOREAN_WAR) || defined(NATO_WAR)
const int XGunship = 0x00000200;
#elif defined(EAST_FRONT) || defined(WEST_FRONT) || defined(RISING_SUN)
const int XICM = 0x00000200;
#endif
const int XSneaker = 0x00000400;
const int XATG = 0x00000800;
// MERGE:
#if defined(MIDDLE_EAST) || defined(VIETNAM_WAR) || defined(KOREAN_WAR) || defined(NATO_WAR)
const int XDaisyCutter = 0x00001000;
#endif
// Unit Other flags.
const int XCanDigIn = 0x00000001;
const int XMineClearing = 0x00000002;
const int XFireHardAI = 0x00000004;
const int XFireSoftAI = 0x00000008;
const int XReconAI = 0x00000010;
const int XAssaultAI = 0x00000020;
const int XRetreatAI = 0x00000040;
const int XCanDamage = 0x00000080;
const int XCarryAny = 0x00000100;
const int XIsDiveBomber = 0x00000200;
// MERGE:
#if defined(MIDDLE_EAST) || defined(VIETNAM_WAR) || defined(KOREAN_WAR) || defined(NATO_WAR)
const int XPathfinder = 0x00000400;
#endif
const int XAirPlane = 0x00000800;
const int XHelicopter = 0x00001000;
const int XRecovery = 0x00004000;
const int XLayVehBridge = 0x00008000;
const int XLayFootBridge= 0x00010000;
// MERGE:
#if defined(MIDDLE_EAST) || defined(VIETNAM_WAR) || defined(KOREAN_WAR) || defined(NATO_WAR)
const int XSpecOps = 0x00020000;
const int XCommando = 0x00040000;
#endif
// Unit More flags.
const int XAssault = 0x00000001;
const int XOffAT = 0x00000002;
const int XDefAT = 0x00000004;
const int XInfSup = 0x00000008;
const int XFireHelo = 0x00000010;
const int XLayMines = 0x00000020;
const int XErectBarrier = 0x00000040;
const int XSuicide = 0x00000080;
const int XBomber = 0x00000100;
// MERGE:
#if defined(MIDDLE_EAST) || defined(VIETNAM_WAR) || defined(KOREAN_WAR) || defined(NATO_WAR)
const int XReconUnit = 0x00000200;
const int XBldFtBridge = 0x00000400;
const int XFastUnit = 0x00000800;
#elif defined(EAST_FRONT) || defined(WEST_FRONT) || defined(RISING_SUN)
const int XBldVehBridge = 0x00000200;
const int XBldFtBridge = 0x00000400;
#endif
const int XShovels = 0x00001000;
// MERGE:
#if defined(MIDDLE_EAST) || defined(VIETNAM_WAR) || defined(KOREAN_WAR) || defined(NATO_WAR)
const int XRaider = 0x00002000;
const int XNightVision = 0x00004000;
const int XSetIED = 0x00008000;
const int XLayManyMines = 0x00010000;
#endif
The new Commando capability allows special units to climb otherwise unscalable cliffs.
The new LayManyMines capability allows some (but not all) minelaying units to lay mines more than once.
That's a lot of unit attributes and capabilities! Many of them you maybe don't know about. How would you? Traditionally, just a handful of them were displayed in icon form at the bottom of the unit Info Box left sidebar.
Let's take a look at a not atypical unit Info Box display:
As you can see, the so-called "UpperIcons" -- the ones that show unit status -- indicate (top to bottom):
[*]Disrupted Status
[*]Unit is in LOS of enemy combat unit
[*]Unit is currently marked to "Save APs for Firing"
[*]Unit has spent APs to move this turn
[*]Unit has spent APs to fire this turn
[*]Fatigued Status
Below those, you can see the so-called "LowerIcons" -- the ones that show unit attributes and capabilities. Not much room left, is there?
Even if, for a multi-capable unit, we could fit all of the unit capability icons into the Info Box sidebar, as that unit's status changes (because moved, fired upon, disrupted, etc.), the unit status icons would crowd out (scroll down?) the unit capability icons.
A thorny problem. The adopted solution was to move the unit capability display to the Unit Handbook:
In the Unit Handbook, circled in red, you will see:
[*]UNIT CAPABILITIES (a new category title, followed by a list of all special unit capabilities for the selected unit)
[*]UNIT DESCRIPTION (this new category title, followed by the usual descriptive unit text)
So, for example, if a unit is set to use the new XLayManyMines capability, under UNIT CAPABILITIES you would see: LayManyMines.
Note that in the unit Info Box (the rightmost green circle), the left sidebar is empty. That's because we no longer list unit capabilities there, only icons for unit status (e.g., moved, spotted, disrupted, etc.). (Since this screenshot was taken at scenario's beginning, the displayed units have no change in status to show yet.)
A happy consequence of this is that we might devise additional unit status icons to display in that now less crowded space.
We surely can no longer display unit capabilities in the traditional way as graphical icons in the unit Info Box left sidebar. There are way, way too many of them!
What about so-called "Command Post" units, company-command platoons, if the Command Control optional rule is selected?
In the green circles, you see two infantry units. The top unit, the Rifle Platoon 42, is a Command Post unit, with a CP icon at the top of its Info Box left sidebar. (The Info Box here is an image overlay, of course.) Since neither of these units have taken any action yet, they have no status icons displayed.
In the red circles, you see two armored units. The bottom unit, the M4A1 Shermans, is a Command Post unit, with a CP icon at the top of its Info Box left sidebar. Since both armored units have moved, and been spotted, in addition they show the two status icons indicated.
(Since I had hit the Q hot key, all headQuarter units are outlined in red.)
In the code, I have this:
// for company-level "Command Post" units, draw the CP icon, if the Command Control optional rule applies;
// this is the only former "lower icon" that now gets shown in the "upper icon" display
I don't know about you, but it helps me to display the "radio" CP icon so prominently. At the top of the unit Info Box left sidebar, it's easier to see that way.
Are any of these improvements earth shattering, game changers? No. But little by little, feature by feature, bug fix by bug fix (yes, there have been bug fixes too) -- the totality of our fixes and changes might amount to something.
Until the next time ...