Invert colors
JA2 1.13 - Headrock's Assorted Modifications (H.A.M) Mod

Welcome to the "Headrock's Assorted Modifications" Mod page. This page elaborates on all the new features available in H.A.M.

HAM Beta v2.8 has been released.



ANNOUNCEMENT

As of 31/3/2009, HAM has been merged into the main JA2 1.13 code. If you download the new 1.13 version (2651/1104 and later), it ALREADY INCLUDES HAM.
No additional download is necessary.

Please note that Many of HAM's features are turned off by default, as they may change the entire nature of the game. If you wish to use those settings, you will need to edit JA2_Options.INI, which is in your DATA-1.13 sub-folder. If the explanations in the INI are not sufficient, please read the text below for a complete manual on all HAM features and their respective settings.

For convenience and backup, I will leave the older HAM downloads available on this webpage:

  • Download HAM B2.8 for Build 2628. This download version is compatible with the SVN build 2628 (and some earlier builds). This is only useful if, for some reason, you do not want to update to the latest revision.

  • Alternately, you can download HAM Beta v2.8 for older builds. This version works with the latest official JA2 1.13 release (2085). It also works with Kaerar's "One-Click Installer" for build 2296.
    To get the latest official release, please visit http://ja2v113.pbwiki.com/. To learn about Kaerar's One-Click Installer, please visit this link.



Project Description

H.A.M is not really a single mod, it's more of a collection of several modifications I've made to the game. Some of these modifications are very small - no more than bugfixes. Other modifications may have a profound effect on gameplay. The idea is to try and solve problems with JA2 1.13 gameplay, and at the same time to introduce more realism wherever possible without harming gameplay balance. To this end, all of H.A.M.'s modifications can be toggled or adjusted so that the player can choose which of the changes he wants to use, and to what extent.



H.A.M Features list

H.A.M is now at version B2.6. Here is a list of all the different modifications that can be activated with H.A.M, and a short explanation for each feature. Click on the feature name to go directly the the text explaining this feature fully.

Major features

  • Enhanced Description Box v1.3
    • Replaces the game's Item Description Box with a new one that shows a whole lot more data. Click here to read more about EDB 1.3

  • Progress-Dependent Roaming Militia
    • Allows the game to control where Roaming Militia can and cannot go, based on which cities have been liberated (and are currently controlled) by the player.

  • Modifications to the Roaming Militia Generator
    • Smarter placement for newly-recruited Roaming Militia, and the ability to train militia groups that aren't All-Elite.

  • New CTH Indicator bars for Burstfire and Autofire
    • New targetting cursors show CTH indicators for both these firing modes, to allow smarter use of burst and autofire.

  • New Suppression System
    • Fixed the non-functioning suppression system of JA2 1.13, and added many new features that allow turning automatic weapons into truly effective ones. JA2 doesn't have be a head-shot game anymore!

  • New Tracer Ammo System
    • Allows more realistic tracer fire, increasing the importance of tracer ammo and automatic weaponry.

Minor Features

  • Fixed JA2_Options.INI Progress Controls
    • Some of the Progress Controls in JA2_Options.INI (specifically GAME_PROGRESS_CONTROL and GAME_PROGRESS_VISITED) were faulty, and could prevent the game from reaching 100% progress if set inappropriately. This has been fixed.

  • Artificially Increased AP Costs to Aim
    • Allows increasing the AP cost of aiming. Aiming with a scope will cost more, and aiming over 4 times will cost more as well. Weapon "APs to Ready" value also affects the cost of aiming.

  • Dynamic Aim-Level Limits
    • Allows the program to determine how much a gun can be aimed, based on its type and the type of scope used. Also, bipod use is much more important, as without a bipod you cannot aim the weapon to its maximum potential, regardless of scope.

  • CTH Approximation
    • Instead of exact readouts for Chance-to-Hit, the training level of the merc (EXP, MRK, WIS) control how accurately he or she can predict the accuracy of their shot.

  • Militia Drop their Equipment
    • Under certain circumstances (or, all the time!), militia will drop all or part of their equipment when killed. The specifics are INI-controlled, of course.

  • Smarter Training Handler
    • Trainers and Students will adjust their sleeping hours so that they are both/all sleeping and training at the same times.

  • LBE's Repaired Last
    • In the New Inventory system, LBE items will be repaired LAST, as they don't require as much repair as other items.

  • Smarter Item Switch when Repairing or Doctoring
    • Will first try to put whatever you're holding into your other hand, before putting the medikit/toolkit in your main hand. Allows faster switching back to a weapon later.

  • Alternate Goggle-Switching Hotkey
    • A new hotkey that will switch our entire squad's goggles to the same type (day/night, alternating).

  • Select entire squads or groups of mercs with a single click
    • Right-clicking the assignment field will select an entire squad. The same goes for groups like "all repairers". Allows CTRL functionality to add more groups to the selection, or remove them.


Externalized Values

  • Mine Income
    • You can now change the amount of money that is generated from all mines, using a percentage value.

  • Auto-Resolve Luck Factor
    • It is now possible to reduce (or increase!) the effect of luck on the results of Auto-Resolve battles (compared to the effect of combatant skills)

  • Minimum/Maximum Chance-To-Hit
    • You can adjust the maximum and minimum possible chance-to-hit. They can be increased or decreased, with various effects. A special divisor value allows lowering the minimum CTH to anywhere between 0% and 1%.

  • Target Movement Effect on Aiming
    • This allows changing the effect of target movement on a character's aim. It can be increased or decreased.

  • Autofire Bullets per 5 APs
    • Allows changing all AB/5AP values for all automatic weapons, without having to change the XMLs. Make autofire faster or slower than it used to be.

  • Level-Up Speeds
    • Allows changing the speed at which our Attributes, Skills, and Experience Level improve.

Using HAM's very own JA2_HAM_Options.INI file, you can turn all of these features on and off as you please, and can also adjust the effect of many features to your liking. One of the most important things about HAM is that it lets you choose which features you want to use, and how much effect you want them to have. In fact, you can even turn all features off if you want.




Enhanced Description Box v1.3

This version of EDB can be used with the Old Inventory System, and can be toggled on and off through the in-game options menu screen.

INI Setting:
USE_ENHANCED_DESCRIPTION_BOX
Range 0/1/2
0 = Use EDB in both Strategic and Tactical modes.
1 = Use EDB in Strategic mode only.
2 = Use EDB in Tactical mode only.
To toggle whether EDB is used at all, refer to the in-game options menu.

For more information about EDB, please read this page.




Progress-Controlled Roaming Militia

JA2 1.13 has an option (called RESTRICT_ROAMING) that limits the movement of roaming militia to the sectors around cities. The data about restricted sectors (where militia cannot enter) is held in XML format, in the file /Data-1.13/TableData/Map/RestrictedRoamingMilitia.XML.

However, there were several issues with that system:

  1. The original XML file only defined "boundaries" that the militia could not cross. If a group of militia was called as reinforcements to a "boundary" sector, they might use their next movement to step outside the boundary and roam freely through the wilderness.
  2. Militia can only patrol the area immediately surrounding the cities. They can't patrol the areas between cities because they'd end up moving from city to city and eventually reach Meduna, if not killed by enemies first. This made them a very passive defense, and enemy groups could easily slip through a hole in that defense and attack the city.
I spent some time thinking about how to solve these problems.

Problem #1 is much easier to solve - I simply filled in the gaps in the XML, so that now it doesn't contain only boundaries that militia can't cross, but a whole list of sectors where militia cannot move at all. They'll only enter these sectors if they're called as reinforcements, but can't move through them autonomously. This means that militia will usually return to city patrol, rather than go off to the wilderness. For this reason, installing HAM will overwrite your RestrictedRoamingMilitia.XML file. This should be done regardless of HAM, and you can keep that file even if you uninstall HAM, as it'll work better than the original file anyway.

Problem #2 was more complicated to solve - I needed a method to make sure that militia can patrol the city and the sensitive areas nearby, without allowing them to move from city to city as they wish. Therefore, I've set up two different methods for allowing militia to move about.

Exploration-based Restrictions
When this setting used, Militia will be able to move through any EXPLORED non-city sector. That means, any sector that has previously been visited or attacked by your mercs is allowed for militia travel. This is on top of the area around cities, as defined by XML. Please note that Militia still cannot enter Tixa.
Conquest-Based Restrictions
Each time you liberate a city, the limitations on militia movement will change to reflect your control of the city perimeter as well as strategic areas nearby (such as crossroads). This overrides XML restrictions entirely, but can be used in conjunction with Exploration-based Restriction (above).

To view a visual presentation of how this works:
View a presentation in GIF format (4.00 MB)
Same presentation in Shockwave Flash (500 KB)

Additionally, HAM now has a feature that enables Roaming Militia to move through the game's "minor cities". This includes any region that's marked as a city, but where Militia cannot be trained. With the JA2 campaign, this includes San Mona, Tixa, Orta, Omerta, and Estoni. Whether Exploration-Based Restrictions or Conquest-Based Restrictions (see above) are chosen, the player would first need to explore/assault these sectors. Subsequently, militia will be free to move through, and WILL attempt to retake those sectors if enemies have wandered into them. In XML-based restrictions, all of these sectors (excluding Tixa, I believe) are not allowed for militia movement at all by the default RestrictRoamingMilitia.XML. To allow them to move through, they must first be removed from the XML. Even then, the sectors would need to be explored or assaulted first by player-controlled mercs.


INI Settings:
ALLOW_RESTRICTED_MILITIA_THROUGH_VISITED_SECTORS
Range: TRUE/FALSE
TRUE = Allows militia to travel through previously-visited sectors, regardless of restrictions.
FALSE = Exploration of the map does not change the restrictions.

ALLOW_DYNAMIC_RESTRICTED_ROAMING
Range: TRUE/FALSE
TRUE = City conquest will determine which sectors are restricted/allowed for militia, overriding the XML definitions.
FALSE = RestrictedRoamingMilitia.XML controls which sectors can be visited by militia.


ALLOW_MILITIA_MOVE_THROUGH_MINOR_CITIES
Range: TRUE/FALSE
TRUE = Allows militia to travel through minor cities and strategic locations. This requires the sector to be allowed for militia movement, based on the restriction type chosen (above), and the player must always have explored or conquered the sector first!
FALSE = JA2 Default. Militia cannot move through minor cities or assault them, ever.

PLEASE NOTE that for any of these features to work, you will need to set RESTRICT_ROAMING = TRUE in your Data-1.13/JA2_Options.INI file. Otherwise, militia can go wherever they want.

ALSO NOTE that users who play heavily modded campaigns should be careful about overwriting RestrictedRoamingMilitia.xml, and about turning these features on! They may break the map's design by allowing Militia to go too far, or not far enough.






Modifications to the Roaming Militia Generator

Smarter Placement of New Roaming Militia

One of the main problems with Roaming Militia in JA2 1.13 is the fact that it is very likely to waste an entire training session and end up creating no militia at all. When the militia generator is told that roaming militia have been trained in a sector, it will look for adjacent sectors where it can place them. It chooses one of the appropriate sectors, randomly, and places militia there. First, if there are no sectors around where roaming militia can be placed at all (such as Grumm G1), the militia training session is automatically wasted. Second, even if there are available placement sectors around, the generator doesn't check whether they are full (maximum militia already present) when putting them there, even if there's a better choice. This means that if half the city is surrounded by roaming militia, you can only train roaming militia in the OTHER half, otherwise your efforts will have been wasted. Even then, because roaming militia (by definition) move about, it's hard to tell where it's best to train them to avoid wasting the effort.

This problem's been fixed in HAM using the following method:

Better checks
The HAM Roaming Militia Generator will check whether an adjacent sector is already full. If so, it will not try to choose another sector to place them. This solves part of the problem, as it makes sure that at least the generator considers its options!
Check entire city perimeter
If the generator cannot find a placement spot around the training sector, it'll look through all other controlled sectors of the city, and see if there are any placement spots around those. Therefore, if the sector is surrounded by full militia groups, the mobile militia will be trained near another, less crowded sector. This solves most of the problem, as it allows us to avoid wasting militia training sessions more easily, since if there is at least one sector around the city where militia can be placed, they'll automatically go there. It also solves the Grumm G1 problem, as mobile militia trained there will be put somewhere around the eastern perimeter of the city automatically, assuming there's space for them there.

Multi-class Roaming Militia Groups

HAM now offers the option to train Roaming Militia that ISN'T all elite! When this feature is turned on, 25% of the militia (rounded down) will be Elite, 25% (rounded down) will be Regular, and the rest will be Green. Naturally, this depends on the size of militia groups generated, as these are just percentages. This system is great when you use a low
Luck in Autoresolve factor, as that feature tends to make the All-Elite roamers much more powerful than the redshirts they usually enouncter in the wilderness. Also note that if a city is surrounded by full roaming militia groups, and the smart generator has been turned on, further training efforts in that city will upgrade the nearby roamers.

Roaming Militia Spreads-Out or Joins-Up

A setting in HAM now allows militia to form up in different methods. In JA2 1.13, if two groups of militia meet, one group will fill up to the maximum, and if anyone is left over, they'll be put in the other team. With HAM, you can tell militia groups to try and "even out", so that after the meeting both groups will be of the same size. If you're using the multi-class option (above), militia will also try to spread out the Greens, Regulars and Elites evenly between both groups. This is chance-based, so you can change the frequency of either of these events occuring.



INI Settings:
SMART_ROAMING_MILITIA_GENERATOR
Range: TRUE/FALSE
TRUE = Roaming Militia will be generated in any free space around the controlled sectors of a city. It automatically chooses a sector where they can be placed, allowing us to worry less about where to put our trainers, and allows training in Grumm G1 (and G2?).
FALSE = JA2 Default. Roaming Militia are placed randomly in any of the sectors around the sector where training took place.

DIVERSE_ROAMING_MILITIA_GROUPS
Range: TRUE/FALSE
TRUE = When Roaming Militia are trained, 25% will be Elites, 25% will be Regular, and the rest will be Green. At least 1 Elite and 1 Regular will always be created. If there's no more room to train new groups of roamers around the city, one group will have its soldiers upgraded to a higher level.
FALSE = JA2 Default. All Roaming Militia trained will be Elite.

ROAMING_MILITIA_SPREADOUT_CHANCE
Range: 0 to 100
0 = Always join-up (JA2 Default). When two groups of militia meet, they will always try to form up into the largest group possible.
100 = Full Spread. When two groups of militia meet, they will always average out, creating two groups of the same size and composition. This has the effect of causing militia to spread out over a larger area (limited by any roaming restrictions, of course!), usually providing more adequate overall defense if they are also allowed to reinforce one another.
50 = Half chance of either. Militia will sometimes group up, and sometimes even out. The end result is usually a few large groups of militia, with smaller groups in between.






New Targetting Cursors for Burst and Autofire

JA2 1.13 introduced a Chance-to-Hit indicator over the targetting cursor, to allow us to determine how likely we are to hit the target. This indicator, in the form of a horizontal bar, appears over the cursor in when firing single shots, and also when firing bursts. However, the cursor in its 1.13 form is rather limited in burst mode, and does not appear at all in autofire mode.

To fix this problem, I've made several changes to both the Burst cursor and the Autofire cursor.
Burst Targetting Cursor
The burst cursor initially only showed us the Chance-to-Hit of the first shot in the burst. There was no easy way to know how far the CTH would degrade due to the gun's Burst Penalty value, with each bullet. Therefore, I've added a series of new CTH bars to show the chance-to-hit of each bullet in the burst.

Additionally, the Burst Cursor did not show the targetted bodypart. It does now.

Screenshot:


Autofire Targetting Cursor
The original autofire targetting cursor displayed a count of the bullets we wish to fire (increased by right-clicking to add more bullets), as well as the number of bullets left in the magazine. However, it did not show ANY Chance-to-Hit indicator, and did not show which bodypart we were targetting.

In HAM, the number of bullets remaining in the magazine has been removed - that number is always visible anyway on the gun's picture in our inventory and team panel (either of these is always visible). A targetted-bodypart indicator is added to replace it.

Two CTH indicators have been added to Autofire. The first (top) bar shows the CTH of the first bullet in the autofire salvo. The second (bottom) bar shows the CTH of the LAST bullet in the salvo. Naturally, as you increase the number of bullets you wish to fire, the second bar will drop to show the cumulative effect of the weapon's Auto Penalty.

To accomodate the new CTH bars, the "bullet count" indicator has been moved to the right.

Screenshot:

INI Setting:
NEW_BURST-AUTO_CTH_BARS
Range: 0 to 3
0 = Don't use either of the new cursors. The regular 1.13 cursors will be used instead.
1 = Use both new cursors instead of the regular 1.13 targetting cursors.
2 = Use only the new Burst Cursor. Autofire will remain as it was in 1.13.
3 = Use only the new Autofire Cursor. Burstfire will remain as it was in 1.13

PLEASE NOTE that you can turn CTH bars off completely using your in-game options menu.






New System to Handle Suppression-Fire

There have been many discussions in the past few years about JA2's limited use of suppression fire. The importance of auto-firing weaponry was very limited in JA2, which caused many players to frown, as this isn't very realistic. The game seems to rely mostly on well-aimed single shots rather than volume of fire.

JA2 does include a system for suppression fire. At one point, I attempted to dispel the myths by examining the system and trying to understand how it works. During this exploration, I discovered that the main reason why suppression is not felt enough in the game is because it was BROKEN. In fact, any character could only be suppressed once or twice in the ENTIRE GAME, after which they would suffer no further suppression at all!

To fix this, I've introduced a fix to allow suppression to accumulate as it should. In addition, I revamped the entire suppression system, introduced many new elements, and externalized the effects of suppression so that its potency can be controlled through HAM's INI file. With these settings, one could make a game that is much more dependent on steady suppression fire and flanking. Even the AI can be told to fire more auto-volleys than normal.


Quick overview - how does suppression work?

I won't go into all details of suppression fire, only the very basics.

  • When a bullet passes next to a character, the bullet can inflict "Suppression Points" on that character. Any bullet can inflict up to 3 suppression points, assuming it has passed close enough to the target. If the target is crouched or prone, the chance of inflicting a suppression point is reduced. Standing targets will usually receive the full effect.

  • A character also has a certain "tolerance" value, which determines how hard it is to suppress that character. It is based chiefly on the character's Experience Level, as well as their morale.

  • When an attack is concluded, the program compares the character's "Suppression Points" to his "Tolerance". The result is the number of APs this character will lose due to suppression (this is the main effect of suppression in JA2, or at least should've been).

  • For each 2 APs lost, the character will also lose one point of morale.

  • Characters of sufficiently high level could use some of these lost APs to drop a stance. After dropping stance, are both harder to hit as well as more accurate themselves (since you get CTH bonuses for lying prone or even crouching). Untrained characters would usually stay standing, making them easier to hit with further attacks.

So with regular suppression, the end goal is to drain as many APs from the target as possible. If the target's APs drop below 5, they begin to lose APs from their next turn. If a character reached -20 APs, they would probably lose their entire next turn!

Unfortunately, in regular JA2 1.13, this was never really manifested - a target could only lose 8 APs in their entire life due to suppression, which made the system completely irrelevant.

Fixing JA2's "stuck" suppression system
First thing's first - I had to fix the suppression system so that a character could be suppressed more than once in their lifetime. To do this, I've setup a command that resets the Suppression Counter, a value that tracks how many APs the character has lost so far due to suppression, and also reset the amount of Suppression Points accumulated by passing bullets. In HAM, we have the option to clear it at the start of the character's turn, or we can clear it after each and every attack. Overall, the results for these two methods are similar, although slight differences could still be felt.
Controlling how powerful suppression is overall
As of HAM Beta 2.1, the INI file now contains a setting that allows us to control the power of suppression fire. More specifically, it's a percentage setting that controls how many APs a character loses to a suppressive attack.

If this value is increased above 100, each attack will cause MORE AP-loss than normal. The end result is that the same attack is more likely to drain APs, morale, and cause suppression shock (if enabled, see later), and might even cause suppression to characters who were previously immune to suppression due to very high Experience Level.

Lower the value below 100 to reduce the effectiveness of suppression (though you might want to check out other values first, as they would be better suited for that purpose).
Maximum AP loss due to suppression, per turn, attack or overall
There are three INI settings that let us put a limit on how much suppression a character can received. Since suppression is now allowed to build up, we can have an entire merc team fire on a single enemy, causing copious amounts of AP loss. Therefore, I've set up limits to control how many APs can be lost per turn, per attack, and overall.

  • Maximum AP loss per attack
    Controls how much AP loss a single attack can cause.
  • Maximum AP loss per turn
    Controls how many APs a character can lose to suppression, over the course of the entire turn. This only works if the suppression counter is cleared every turn (see above).
  • Minimum threshold
    With this setting, you can control how low a character's AP pool can drop. Use this to make sure characters don't lose several turns in a row due to a lot of concentrated autofire.

You can also use a value of "0" for the first two limits, which removes those limits.
You cannot disable the Minimum Threshold though, but you can set it very very low if you want (like -100).
Suppression Shock
This is a new concept introduced into the suppression formula. Suppression Shock represents another aspect of reducing character's effectiveness when suppressed. Based on the number of APs lost in suppression, the character will also suffer from shock, which reduces his Chance-to-hit. This makes suppressed characters far less accurate, giving a realistic representation of the effect of suppression on behaviour.

A character will get Suppression Shock based on the number of APs he's lost, and is mitigated by the character's Tolerance value (see box text, above). There's also an INI setting that can increase and decrease the ratio between APs lost and Suppression Shock. You can also set the "absolute maximum" limit on how much suppression shock a character can receive in total.

Suppression Shock's goal is to render a character unable to fire back at his suppressor. In "regular" JA2 1.13, when suppression DOES work it usually sends a character to the ground, making them harder to hit but also increasing their chance to hit you! So the main effect of suppression is to reduce the firing accuracy of the suppressed character. Each suppression shock point accounts for a -5 CTH reduction. Of course, higher-level characters will suffer less shock, and so will drop to the ground but still remain relatively dangerous.

The accumulated Suppression Shock points are halved at the start of a character's turn. Therefore, if a character manages to stay out of incoming fire for a few turns, his suppression shock will have disappeared.

Please note that shock is also accumulated from injury. They work the same way, reducing the character's chance-to-hit.

Finally, Suppression Shock is a key ingredient in "cowering", another new addition to the suppression system.

Cowering in Fear
Cowering is another new concept in the suppression system. Basically, when a character has become very suppressed ("Pinned Down"), he/she will attempt to curl up into a ball, or stay as low to the ground as possible, and thus be harder to hit.

The effect is that anyone shooting at the this character will have a penalty to their CTH based on the cowering target's shock value. The more shocked the character is, the harder he is to hit (up to a certain limit, of course).

At the same time, suppression shock (if enabled) would make the cowering character be less accurate too, so while he's hard to hit he's also much less accurate himself.

When a character reaches the limit of his Tolerance, he will drop a stance and the message "Character cowers in fear!" will appear on your screen. This indicates to you that the character has suffered a considerable amount of suppression.

There's also an INI setting that makes cowering even more important. When this setting is used, any character who has reached "cowering" state will suffer more (or less) from any further suppression fire in his direction. Therefore, if the "Character cowers in fear!" message is displayed, then you know that any further suppression fire on that character will be even more powerful towards neutralizing him.

Please note that the cowering formula is mostly INDEPENDENT from Suppression Shock: cowering also works with shock accumulated through being injured. However, injury gives very little shock compared to Suppression Fire, so a combination of Suppression Shock and Cowering is optimal.

New Externalized Settings for the Cowering Feature
As of HAM B2.8, we've got new settings to play with that will affect the way cowering works in the game. All of these settings will only work if we allow a cowering character to dish out CTH penalties to anyone shooting at him (see above).

Firstly, we can set the cowering effect based on the targetted bodypart. The idea is that a character who cowers while prone would be very hard to hit, but not as hard to hit if he's cowering while crouched. Also, if crouched, the cowering character will deal a different amount of CTH penalty to his opponents if they are shooting at his head, torso, or legs. This goes to simulate a cowering person's tendency to protect his head but neglect his extremities. Of course, you can set it so that neither crouching nor the targetted bodypart affect the penalty at all!

Furthermore, I've externalized a nice little value that determines how close we have to be to a cowering enemy, to get rid of that pesky CTH penalty he's giving us. By default, at a range of 10 tiles or more, the cowering character gives us the full penalty, but as we get closer to him, the penalty begins to disappear. At a range of one tile, we can hardly feel the penalty at all. With HAM, you can set the minimum distance, making cowering characters easier to hit at longer ranges. This will significantly change the way the game is played. In general, the larger you set this range limit, the more this game resembles JA2 1.13 (where long-range shooting is the primary tactic). If you set this limit very low (say, around 5 or less), you'll have to get VERY close to the cowering character to kill him, requiring some intensive close-quarters combat! The HAM default is 10, and feels about right so far.

AI uses more Suppression Fire
An INI setting also allows us to control whether the AI uses more autofire and suppression fire than normal. This is important because as Suppression Fire becomes more powerful, the AI should fire more bullets.


INI Settings:
CLEAR_SUPPRESSION_COUNTER
Range: 0/1/2
0 = JA2 1.13 default. That means a character can only be suppressed once in his lifetime. BLEEEEEH.
1 = Resets the suppression counter and accumulated Suppression Points at the start of each turn.
2 = Resets the suppression counter right after an attack has been completed.
The difference between option #1 and #2 is very limited.

SUPPRESSION_EFFECTIVENESS
Range: 0 to 65535
0 = Suppression is DISABLED. Nobody will ever be suppressed.
100 = Suppression is "normally" effective.
200 = Suppression is twice as harmful as normal. This will cause much more suppression per attack, and has the potential of affecting characters who were previously immune to suppression due to their high tolerance level. At 200, suppression is already VERY effective, so use with caution and set smart limits (below).

MAX_SUPPRESSION_AP_LOSS_PER_TURN
Range: 0 to 255
8 = JA2 Default. A character can only lose 8 APs due to suppression per turn. Subsequent attacks during the same turn will cause no further suppression. Increase this value to allow suppression to build up further during a single turn. Decrease this value to allow minimal effect from suppression each turn.
0 = Unlimited. Any attack will continue to add suppression effects to the character, no matter how much suppression he's already suffered this turn.(see below)

MAX_SUPPRESSION_AP_LOSS_PER_ATTACK
Range: 0 to 255
8 = JA2 Default. Any attack cannot cause more than an 8 AP loss. Increase to allow individual attacks to cause more AP loss. Decrease to reduce the limit on the effectiveness of each attack. Please note that this doesn't change how effective suppression fire is, only the MAXIMUM possible effect it can have on a character.
0 = Unlimited. An attack can cause any amount of suppression, based on how many bullets were fired and how close they came to the character. However, do note that the per-turn limit still counts!

MIN_LIMIT_SUPPRESSION_AP_LOSS
Range: +127 to -128
0 = Suppression can't cause a character to go into negative APs (being shot in combat still can). At the most, suppression can eat up all of a character's available APs. If the AP pool reaches 0, the character will start his next turn with 5 less APs than normal. This is the most "sensible" option for those who wish to stay faithful to the old (and pathetic) Suppression formula.
-5 = This allows suppression to take a character all the way down to -5 APs (provided enough suppression fire is applied). If a character actually manages to reach -5, he'll lose 10 APs at the start of the next round.
-20 = If we set the limit at -20, it means that a character can actually be suppressed SO BADLY (provided he comes under enough suppression fire) that he will lose his next turn of combat! Of course, this requires a lot of concentrated fire on the character, and won't occur very often. This is the recommended setting, for allowing Suppression to become a strong tactical option.

Please note that values above 0 are not recommended. Most importantly, values above 5 will cause suppression to become mostly pointless (except for Suppression Shock and Cowering, if enabled).

SUPPRESSION_SHOCK
Range: TRUE/FALSE
TRUE = The program will hand out Shock points to any suppressed character. Shock points will cause the character to fire less accurately, as well as reduce his performance with intricate tasks (like lockpicking, bomb dismantling, etc.). Shock is halved at the start of each turn, and so will eventually disappear (unless the character continues to receive more suppression fire).
FALSE = Suppression Shock will not occur. This also limits the effectiveness of Cowering.

SUPPRESSION_SHOCK_EFFECTIVENESS
Range: 0 to 65535
100 = Suppression shock will behave normally.
200 = Characters will accumulate twice as much Suppression Shock per AP point loss. This may have the effect of causing suppression shock to characters who were previously immune to suppression due to high experience level or morale.
50 = Characters will suffer only 50% as much suppression shock as normal. This may have the effect of making high-level characters compeltely immune to suppression shock.
0 = Disable Suppression Shock (same as setting SUPPRESSION_SHOCK to FALSE)

MAXIMUM_SUPPRESSION_SHOCK
Range: 0 to 255
30 = A character can only suffer up to 30 points of Suppression Shock. Note that only low-level characters are likely to actually reach this limit.
0 = Disabled Suppression Shock entirely.

Also note that lowering the limit will also lower the effectiveness of suppression shock automatically (like SUPPRESSION_SHOCK_EFFECTIVENESS, above). This may have the effect of making some characters immune to Suppression Shock.

AIM_PENALTY_PER_TARGET_SHOCK
Range: 0 to 255
0 = Disables cowering.
2 = The shooter receives a -2 CTH penalty for each point of shock his target has, assuming the target is prone. If the target is crouched, the shooter suffers only about -0.6 CTH per target's shock point. (recommended setting!)
3 = The shooter received a -3 CTH penalty for each point of shock the target has (prone) or -1 per shock point (crouched).

Please note that shock from injury also causes this effect, so it is independent of Suppression Shock. However, without Suppression Shock, you are unlikely to see much cowering at all.

COWER_EFFECT_ON_SUPPRESSION
Range: 0 to 65535
100 = Cowering will have no special effect on the amount of suppression received by the character.
0 = This is the same as 100.
150 = Recommended setting. Once a target is cowering, any further suppression fire on that target will cause 50% more suppression effects (AP Loss, Morale Loss, etc.) than firing on a non-cowering target.

CTH_PENALTY_FOR_COWERING_PRONE_TARGET_DIVISOR
CTH_PENALTY_FOR_COWERING_CROUCHED_TARGET_HEAD_DIVISOR
CTH_PENALTY_FOR_COWERING_CROUCHED_TARGET_TORSO_DIVISOR
CTH_PENALTY_FOR_COWERING_CROUCHED_TARGET_LEGS_DIVISOR
Range: 1 to 255
These divisors control how powerful the cowering penalty is (AIM_PENALTY_PER_TARGET_SHOCK...) when targetting cowering enemies in different stances, or targetting their various bodyparts. The penalty is divided by X, where X is the number you set here. If you set them all to the same number, then there will be no difference (I.E. always the same penalty, regardless of bodypart/stance).
1 in all fields = Target stance and targetted bodyparts have no effect on the CTH penalty.
1, 3, 4, 5 = HAM Default. Shooting at a cowering prone target gives you the full CTH penalty. Shooting at a crouching target's head you suffer only 1/3 of the penalty. Shooting at a crouched target's torso you suffer 1/4 the penalty, and 1/5 for the legs. This makes shooting at the legs of a crouched and cowering target is much easier than shooting at a prone cowering target.

MIN_RANGE_FOR_FULL_COWERING_TARGET_PENALTY
Range: 10 to 65535 in METERS (not tiles!)
100 = HAM Default. At a range of 10 tiles or more, shooting at a cowering target will apply the full effect (after bodypart/stance considerations, above). As you get closer than 10 tiles, the penalty you receive would be much lessened, making it easier to hit the cowering target and kill it.
260 = At sightrange or beyond, shooting at a cowering target will cause you to suffer the full Chance-to-Hit penalty. As you get closer and closer from sightrange, you'll feel less of a penalty. This makes aimed single shots more powerful, and thus the game will resemble "vanilla" JA2 more closely.
30 = Cowering enemies dish out the full Chance-to-Hit penalty at anywhere above 3 tiles of range. You must get very close to get rid of the CTH penalty. Increase the AIM_PENALTY_PER_TARGET_SHOCK value to make this a close-quarters game, where characters need to get very close to get a good kill.

MAX_SHOOTER_COWERING_PENALTY
Range: 0 to 65535
30 = When cowering, a cowering character can lose no more than 30 CTH points to his shooting, no matter how much suppression shock he's received.
0 = HAM Default. There is no limit to how many CTH points a cowering character can lose when shooting. Of course, it's still limited based on the number of suppression points that can be inflicted on that character.

MAX_TARGET_COWERING_PENALTY
Range: 0 to 65535
30 = When shooting at a cowering target, the shooter lose no more than 30 CTH points, no matter how much suppression shock his target has received.
0 = HAM Default. There is no limit to how many CTH points a character can lose when shooting at a cowering target. Of course, it's still limited based on the number of suppression points that can be inflicted on that target.

AP_LOST_PER_MORALE_DROP
Range: 0 to 255
0 = Suppression will NOT reduce morale at all.
2 = JA2 default. For each 2 APs the character has lost under suppression fire, he will lose 1 morale point.
3 = New recommended value. For each 3 APs the character has lost under suppression fire, he will lose 1 morale point.

Please note: Increasing this value further will reduce the chance of enemies fleeing due to suppression fire. If you think enemies flee too much, increase the value. If you want to see mass enemy retreats (at least at early stages of the campaign), reduce this value.

INCREASE_AI_WILLINGNESS_TO_SUPPRESS
Range: TRUE/FALSE
TRUE = Computer-controlled characters (Enemies and Militia) will use autofire more often if they can, will be more likely to use suppression fire from beyond sight-range, and will (hopefully) be less willing to retreat after being suppressed. Hopefully.
FALSE = Computer-controlled characters behave as normal (JA2 1.13 standards)





New Tracer Ammo System

In yet another attempt to revamp the autofiring system, I've introduced a new method to handle Tracer Ammo.

In JA2 1.13, Tracer Ammo (color-coded yellow) is used mainly to increase the accuracy of autofiring weapons. When tracer ammo is loaded into the gun, the gun's Auto Penalty and Burst Penalty will drop considerably, making it more stable. Combined with a foregrip and/or bipod, the penalty can be completely eliminated, meaning that all shots will be fired with the same accuracy (same CTH as an unaimed single shot).

In addition, tracer fire also "lights up the night", by causing a trail of light to follow each bullet. This light can reveal enemies at night, but also reveals the shooter himself.

Unfortunately, neither of these effects is very realistic. As I see it, the Auto/Burst penalty goes to simulate recoil, meaning that the gun jerks around while you're firing it, so that each consecutive bullet will make it fire less accurately than before. In real life, tracer fire does nothing against this. It only allows the firer to see where (SOME!) of his bullets are going, making it easier for him to know how far his gun has jerked, so that the shooter can compensate. But even with tracers, it is still hard to compensate for recoil. Furthermore, the ligh trails shouldn't be created by every bullet in the magazine - in tracer magazines, only 1 out of every few bullets is a tracer.

So there are two problems to fix, and this is how I've done it:

With the new tracer-fire system, the first and most important effect is that not every bullet in the tracer magazine is a tracer bullet. In fact, using an INI setting, you can tell the program how many bullets there are per every 1 tracer bullet, as it is in real life. The first noticeable effect of this is that in the game, you'll only see light trails for tracer bullets, while all other bullets in the magazine will not produce a light trail. But the effect goes much deeper than that.

When auto-firing, the program keeps track of the bullets left in the magazine. Using a simple calculation, it now knows which bullet we are firing, and determines whether this bullet should be a tracer. If it is, the tracer bullet will "bump up" your Chance-to-Hit by a certain amount (also INI-settable). This bump increases the accuracy of the remainder of your autofire salvo. So on the one hand, the CTH keeps decreasing because of the gun's Autofire Penalty. On the other hand, the more bullets you fire (and hence, more tracers), the more CTH bumps you'll get. This more accurately depicts the shooter's struggle to aim his weapon correctly, as he sees where the tracers are going.

Here's an animated explanation of this:
Tracer Bump Examples

So overall, you can control how good Tracers are at negating auto penalties, and if you set it high enough, then longer bursts will actually become more accurate than they started! The key would be to find a balance between the number of bumps, and the number of tracers in each magazine. This is done through the INI settings.

INI Settings:
REALISTIC_TRACERS
Range: 0/1/2
0 = Disabled. Tracers will behave like they do in JA2 1.13 - each bullet will cause a light effect, and just loading a tracer magazine into a gun gives a reduction of the auto-penalty.
1 = Fully-Realistic. Only some bullets in the magazine are considered tracers, and will cause a lightpath as well as a "bump" to all of the following bullets in the salvo. The magazine does NOT reduce the gun's inherent auto-penalty.
2 = Semi-Realistic. Same as option #1, except the tracer magazine DOES reduce the weapon's auto-penalty. In general, if you choose this option instead of #1, you'll want to reduce the CTH bump considerably...

NUM_BULLETS_PER_TRACER
Range: 0 to 255
0 = No tracers. If REALISTIC_TRACERS is set to 1, this will effectively remove all tracer fire from the game.
1 = Every bullet in a Tracer magazine is considered a tracer. They will all cause CTH bumps, and will all cause a light effect.
5 = Every 5th bullet in a Tracer Magazine is considered a tracer bullet. This is the most realistic option.

CTH_BUMP_PER_TRACER
Range: about -30000 to 30000
0 = Tracer bullets do not cause a CTH bump. They will still cause a light effect.
10 = Each tracer will cause a bump of 10 CTH points to all bullets following it in the same autofire volley. This is usually only enough to counteract the autopenalty generated by the tracer itself.
50 = Each tracer will cause a bump of 50 CTH points to all bullets following it in the same autofire volley. This causes a considerable increase in CTH, usually enough to overcome all auto penalties, and will sometimes increase CTH above its original value.

Please note: while you can raise and lower the bump to very large numbers, do try to keep it low, otherwise, game balance will suffer considerably. The important thing here is to find a combination of settings that work for you.






Fixed Progress-Weight Controls

JA2 1.13's INI file (Data-1.13\JA2_Options.INI) allows us to decide what parts of the game influence our progress level, and how much influence they each give. Progress, if you don't know, determines the difficulty of the enemies you meet, and also the types of weapons and equipment available, both from enemy drops and from Bobby Ray's.

The four controls in JA2_Options.INI are:
  • GAME_PROGRESS_KILLS
    How much the kill count affects progress level
  • GAME_PROGRESS_CONTROL
    How much does control of cities affect the progress level
  • GAME_PROGRESS_INCOME
    How much does mine income affect the progress level
  • GAME_PROGRESS_VISITED
    How much does the number of sectors we've visited affects the progress level
The idea is that you can set them to different values, totalling 100, and thus decide how important each of these things is, when calculating your current progress. For instance, if "GAME_PROGRESS_CONTROL" is set very high (like 50 or more), then each city sector you conquer will boost your progress level. If "GAME_PROGRESS_INCOME" is set very high, then the loyalty level in your captured cities will be very important in determining the progress.

Unfortunately, there was a problem with the inner-workings of the system, in the way the game calculates GAME_PROGRESS_CONTROL and GAME_PROGRESS_VISITED.

  • GAME_PROGRESS_CONTROL
    The problem here was that if this value was set to more than 34 (giving it more importance than the other settings), a progress level of 100 became unreachable. This was because the program simply tallied up the number of "important" sectors we controlled (with SAMs counting as two points instead of one), and added that to the progress level. To fix this, I've made the program compare the amount of conquered sectors to the number of "important" sectors available in the game, and apply the result to the GAME_PROGRESS_CONTROL setting. The bottom line is, this value can now be raised to 100 safely, which means that controlling all SAM sites and city sectors on the map would allow reaching 100 progress.

  • GAME_PROGRESS_VISITED
    The way this originally worked was to compare the number of sectors you've visited to the total size of the map. The result would be applied as a percentage to the value of GAME_PROGRESS_VISITED, and then added to the progress level. However, the JA2 map has more than a few sectors that cannot be visited (like the ocean), which meant that the percentage could never reach 100, and thus you'd never be able to reach a progress level of 100. Instead, I now have the program compare the number of visited sectors to the number of VISITABLE sectors. This allows setting GAME_PROGRESS_VISITED to any value you want and still be able to reach 100 progress.






Increased APs to fire aimed shots

One of the most annoying problems in JA2 is that despite the fact that we have autofire capability, long-range weapons fitted with scopes are still the most important tool on the battlefield. As the campaign progresses, tactics quickly require more and more long-range sniper fire, rendering Machine-Guns and other automatic weapons relatively useless.

H.A.M offers several solutions to this problem. One is the new
Suppression System, another is the Realistic Tracer System. There is also the option of increasing the AP costs required to aim a weapon.

With this Increased AP system, aimed shots will cost a lot more APs than they used to. If the AP cost used to be 1 AP per aiming level, then now it relies on the weapon itself, as well as the type of scope attached.

Here's the outline of the system:
  1. When the first aiming level is added, there's an extra AP cost equal to 1/2 of the weapon's "APs to Ready" cost, rounded up. So a weapon with 2 APs to draw would cost 1 extra AP for the first aiming level.
  2. If the weapon has a scope attached, the first aiming level costs yet another 1 extra AP.
  3. Aiming levels 2-4 cost 1 AP each, as normal in JA2.
  4. Aiming levels 5-6 cost 2 APs each (instead of 1).
  5. Aiming levels 7-8 cost 3 APs each (instead of 1).
The main effect is that this makes sniper rifles (or any weapon capable of more than 4 aiming levels) will cost considerably more APs to aim to its full potential. This discourages aimed shots in favour of maneuvering (to close the distance and use less APs).

However, this system has several problems. Most importantly, since some of the huge anti-material rifles (like the M2 Gepard) cost a ton of APs already, this system could increase the aiming costs so much that it would be impossible to aim these weapons to their full extent. Still, I assume some people would want to play with this, to nerf down the power of scope-equipped rifles in favour of suppressive fire and flanking tactics.

Still, if this system doesn't sound good to you, check out the Dynamic Aiming Levels System, below. It is a far better system, which doesn't cause any issues, and is also more realistic, in my opinion.

INI Setting:
INCREASED_AIM_COST
Range: TRUE/FALSE
TRUE = Enables this system. Aimed shots will cost more, as per the system outlined above.
FALSE = Disables this system. Aimed shots will cost 1 AP per level of aiming.





Dynamic Aiming Levels Restriction

Another way to tackle the overwhelming superiority of aimed shots is to reduce the number of aiming levels that some weapons can achieve. After all, no matter how much time you spend on aiming a pistol, it will never be as accurate as a sniper rifle.

When this system is activated, it will reduce the number of aiming levels that most weapons can achieve. A scope will increase the number of allowed aiming levels, but most scopes will only increase it by one or two points. Furthermore, no weapon can achieve its true aiming potential unless a bipod is used (and prone).

Here is a table of the weapons and the number of aiming levels they can achieve:

Pistols, Machine-Pistols, one-handed SMGs, and all other one-handed weapons. Maximum aiming levels without scope 1
Maximum aiming levels without using a bipod 2
Maximum aiming levels when using a bipod and scope 2
Two-Handed SMGs, Shotguns, and Machine-Guns. Maximum aiming levels without scope 2
Maximum aiming levels without using a bipod 3
Maximum aiming levels when using a bipod and scope 3
Assault Rifles, Rifles and Sniper Rifles, with a range of no more than 50 tiles. Maximum aiming levels without scope 2
Maximum aiming levels without using a bipod 3
Maximum aiming levels when using a bipod and scope 4
Assault Rifles, Rifles and Sniper Rifles, with a range of 50 tiles or more. Maximum aiming levels without scope 3
Maximum aiming levels without using a bipod 4
Maximum aiming levels when using a bipod and scope 8

As you can see, without a scope you won't be able to aim most weapons very well, and the longer-ranged weapons cannot fully benefit from a scope if you aren't using a bipod.

The type of scope you're using also has an important effect on the number of aiming levels:
  • Scope 2x or 4x
    • Adds one aiming level to the basic allowed levels.
  • Scope 7x or 8x
    • Adds 50% to the basic allowed levels (rounded up).
  • Scope 10x
    • Doubles the basic number of allowed levels.
Of course, you'll need a bipod to reach the highest potential with weapons that have a 7x to 10x scope. Also note that the game calculates this based on the scope's "Minimum Range for Aiming Bonus" value, so it's mod-friendly. Mostly.

INI Setting:
DYNAMIC_AIM_LIMITS
Range: TRUE/FALSE
TRUE = Enables this system. It will override JA2 1.13's 4/6/8 system.
FALSE = Disables this system. Weapons with a 7x Scope can aim up to 6 levels, and weapons with a 10x Scope can aim up to 8 levels.

Please note that the in-game option "Restrict Extra Aim Levels" will disable this system, as well as the normal 4/6/8 system.






CTH Approximation system

There's been some resentment in the community towards the CTH bars, with the claim that in reality, soldiers don't know how likely they are to hit. I agree partially with this, as a trained soldier will know at least roughly how accurate his shot is. So I've made sort of a half-way system.

In JA2 1.13, the CTH bar shows our exact CTH, as does the "F" key readout. With the CTH Approximation system, most soldiers will not show the exact CTH of their shot. Instead, the CTH will be "rounded". If a soldier is particularly bad at marksmanship, and is untrained, his approximation would be so bad that he'll see a CTH readout of either 0%, 50%, or 100%. With the CTH bar, this will show either an empty bar, a half-empty bar, or a full bar. As the soldier gets better, his CTH readout will be more accurate (I.E., actual CTH will be rounded to a closer number). The expert soldiers (roughly 9 EXP Level, 90 Marksmanship, and 90 Wisdom) will have a fully-accurate CTH which is what we have today. The SNIPER trait will help the soldier reach a better approximation ability much sooner than that. Of course, this works on a scale, so a mediocre soldier will have mediocre approximation.

INI Settings:
APPROXIMATE_CTH
Range: TRUE/FALSE
TRUE = Use the Approximation CTH system. CTH readouts are not 100% accurate unless the soldier is highly trained.
FALSE = JA2 Default - CTH readouts are fully accurate.






Militia Drop their Equipment

One of the greatest frustrations in JA2 1.13 is that militia, while mildly useful, tend to pick up equipment from the ground, often good equipment dropped from enemies (before you can pick it up! AAARRGGG), and they don't give it back. With this new feature turned on, militia who get themselves killed (which happens too often) will actually drop some or all of their equipment on the ground.

There are two things that control how this behaves. The first is the INI setting - you can decide the conditions in which militia will drop their stuff. You can decide that this happens every time a militia dies, or that killing militia yourself will NOT cause them to drop their equipment (to prevent you from going on a killing spree just to get that cool enemy drop a militia just picked up, hehehehe). Also, your in-game menu-options setting, the infamous "ENEMIES DROP ALL", will decide whether militia drop all of their equipment, or just some of it (like enemies do).


INI Settings:
MILITIA_DROP_EQUIPMENT
Range: 0/1/2
0 = JA2 Default. Militia do not drop their equipment, ever. Kiss that mortar goodbye.
1 = Militia will drop their equipment only when killed by anyone EXCEPT the player's characters. You'll get their stuff even if they manage to kill each other ;)
2 = Militia will always drop equipment when they die.

Also use your in-game options menu to decide whether they drop everything they have, or randomly drop some (or none) of it.






Smart Training Handler

In JA2, the way that trainers and students work is a bit lopsided. Mercs become tired at different speeds, and require different amounts of sleep. Therefore, when training, it is not rare for a trainer to be asleep while his trainee is getting tired, and so they keep switching around (one's asleep while the other's awake). If we want to make them work at the same time (and thus earn the bonus involved), we need to micromanage the sleeping hours, which can get tedious very fast, and is much harder when you're training a large group of mercs simultaneously.

The Smart Training Handler takes care of this problem by synchronizing the sleeping hours of all trainers and students so that they go to sleep and wake up at the same times.

While this may be a minor feature, it's quite a complex one, as it has lots of different INI settings - but you'll probably want to keep the default settings anyway.

With the system fully turned on, if a trainer goes to sleep then all his students will go to sleep as well. Also, if all students go to sleep, the trainer will also go to sleep. It works the same with the wake-up times.

There's also a nice new setting that will control what a student/trainer does if they wake up and no one's available to work with them. Instead of training on their own (without the trainer, who's sleeping), they'll actually rest and wait until the trainer wakes up. The same occurs if the trainer wakes up and finds that all his students are still sleeping (although he should automatically wake them all up, if the system is fully activated). Please note that if students rest, they don't study, so in a trainer/student combo you can ONLY gain experience when both characters are awake!

The effect of the fully activated system is an increase of roughly 10%-20% in the efficiency of training. You won't have to micromanage your character's sleep times. Additionally, you won't need a second trainer to cover the "dead hours" when the main trainer is asleep. On the other hand, the trainer's characteristics are much more important now, as his sleep/fatigue values will affect the training speed of the whole group - so characters who get tired quickly and/or have to sleep alot are less efficient trainers!

Also note that with the system fully turned on, sending a trainer to bet will send all students to bed automatically, and sending all students to bed will send the trainer to bed automatically. This will keep the synchronization. If for some reason you want the trainer to sleep alone, you'll have to change his assignment first.


INI Settings:
SMART_TRAINING-SLEEP_HANDLER
Range: 0/1/2/3
0 = JA2 Default. Both Trainers and Students will go to sleep whenever they're tired enough.
2 = If a trainer goes to sleep, all of his students will go to sleep automatically.
3 = If all students go to sleep, their trainer will also go to sleep.
1 = HAM default, fully automated sleep synchronization.

SMART_TRAINING-WAKE_HANDLER
Range: 0/1/2/3
0 = JA2 Default. Both Trainers and Students will wake up whenever they're done sleeping.
2 = If a trainer wakes up, all of his students will wake up automatically.
3 = If all students wake up, their trainer will also wake up.
1 = HAM default, fully automated waking hour synchronization.

SMART_TRAINING_REST
Range: 0/1/2/3
0 = JA2 Default. When awake, Students and Trainers will work (and become tired) regardless of whether they have any awake character to work with.
2 = If a trainer is awake but all his students are asleep, he'll rest until at least one of them wakes up. While resting, the trainer regains any lost fatigue.
3 = If a student is awake but his trainer is not, he'll rest until the trainer wakes up. While resting, the student regains lost fatigue, but he does NOT study alone. If you still want the student to study alone, set him to "PRACTICE" instead of "STUDY"... Or just let the smart training handler do its thing - good results are guaranteed!
1 = HAM default, if a student/trainer is awake but their counterpart isn't, they'll wait and regain fatigue until the counterpart wakes up. This is the optimal setting, as it allows full synchronization between characters who require different amounts of sleep, or get tired at different rates.






LBE's Repaired Last

This feature is only important to those who use the New Inventory System.

In JA2 1.13, characters will repair our LBE's much sooner than the rest of our inventory. This is odd, since the condition of an LBE isn't really important - it has no effect, unless you let it drop to 0. Therefore, it's often a much better idea to repair other items first, such as headgear, slung guns, or any other piece of inventory for that matter.

With the new system, LBE's will be repaired LAST. Only once the repairer has repaired all other items in the inventory, he/she will start repairing the LBE's. This makes repairs more efficient, especially if you're pressed for time.

INI Setting:
None! I consider this a bug fix, as I truly see no reason why LBEs should be repaired first.






Smarter Item Switch when Repairing or Doctoring

In JA2, assigning a merc to REPAIR or DOCTOR will automatically place that character's toolkit or medikit into his hand. If the character doesn't have a kit, the assignment cannot be started at all.

The problem is that because of the way this was handled, the item that was in our main hand (usually our weapon!) is moved somewhere else in the inventory, usually swapped with the kit. This is annoying because it can take some tedious work to put all the weapons back into the characters' hands, especially if you have a large group of mercs.

With the Smarter Item Switch, the program looks at the item we're holding in our main hand. If it is a weapon, the program first tries to swap hands (putting the weapon into your second hand). If it fails to do that, it'll try to put the weapon into the sling slot. Only if both these attempts fail, the program will put the weapon where the kit was.

Now, after you've finished repairs, you can switch back the weapons much faster. Go to tactical mode, and on the team panel, right-click each weapon, and it'll be switched back to your main hand. Obviously this is a little less useful with dual-wielded weapons, but that was also true in the original item swap method.

INI Setting:
None! I consider this a bugfix, as it certainly doesn't make the situation any worse than it already was no matter how you look at it.






Alternate Goggle-Switching Hotkey

ChrisL created a hotkey that will switch goggles for an entire squad, but I find that this hotkey doesn't always perform what I want it to perform. So I've fixed that hotkey, and added an alternate one which in my opionion works much better.

Fix to the SHIFT-N hotkey
SHIFT-N will swap our worn sungoggles with the best night goggles it can find in our inventory, and vice-versa. However, if it can't find a better set of goggles anywhere in our inventory, it will not remove what we are wearing. Therefore, if the whole team switches from sun goggles to nightvision goggles, but Dr. Q has no nightvision goggles in his inventory, he'll stay with the sun-goggles on. This will give him a penalty to his nightvision until we realize that he's still wearing sun goggles, which can sometimes be at the end of the battle. :(
So now, SHIFT-N will remove any worn goggles even if it can't find something to replace them with. Another SHIFT-N click will put the goggles back on, as normal.

New Hotkey: CTRL-SHIFT-N
Another problem with SHIFT-N is that mercs will switch goggles based on what they're wearing. So if a merc is wearing nightvision goggles, he'll switch to day vision goggles, and vice versa. This is fine when you have one merc, but goes nutty when you have two or more. If one merc is wearing nightvision goggles, and the other is wearing sun goggles, they'll each swap their goggles, ending up, again, with a mismatch. This is worst when you have a squad of 6 - if one of the characters is wearing the correct goggles before SHIFT-N, then afterwards he'll be wearing the wrong goggles while everyone else is wearing the correct goggles. You then have to go through the inventory of each character and make sure they're wearing the correct goggles for the time of day. GRRRRRR.

The new hotkey solves this. Instead of changing each merc's goggles to the opposite of what they were wearing, the feature picks either day or night and switches everyone in the team to the appropriate goggles. Inappropriate goggles (like sungoggles, if night is chosen) will be removed even if there's nothing to switch them with. A second CTRL-SHIFT-N will choose the other setting.

Why is this better? Because now, we can force our entire team to use the same type of goggles. If after SHIFT-N, one of our squaddies is wearing his night goggles, it means that EVERYBODY is wearing night goggles (or at least not wearing sun goggles). If our merc is wearing sun goggles, that means all his buddies are wearing sun-goggles too. This is mainly a timesaving feature, and can be very important when you find yourself in a hostile sector and want to find the best goggles as quickly as possible, for everybody.

INI Setting:
None! This is an extra hotkey, so nothing is forcing you to use it if you don't want to. Give it a try though, see if you like it.






Select entire squads or groups of mercs with a single click

There are many situations when we want to select our entire squad. One way to do this in JA2 involves trying to move a squad member, then cancelling the move - this selects the entire squad, but requires several clicks. I've reduced this to a single click.

When looking at the merc list in the strategic screen, right-click the assignment field of the merc, where it says (for instance) "SQUAD 1". This will select all of the mercs who are in squad one, immediately.

You can use CTRL or SHIFT (either one is fine) together with a right-click, to select multiple squads. Clicking on a squad name that's already selected will deselect that squad.

The same thing goes for groups. For instance, click on a "DOCTOR" assignment field, and all doctors in the same sector will also be selected. CTRL/SHIFT works here too.

This allows us to quickly select an entire squad or several squads, regardless of the sorting of the mercenary panel. This allows us, for instance, to give a new assignment to all squad members, so basically it saves us some extra clicking.

INI Setting:
None! This is an extra feature that simply allows an alternative - you don't have to use it if you don't want to. But why on earth wouldn't you want to?






Externalized Mine Income

With HAM, you can decide how much money you want to get from your controlled mines. This is done with a percentage value that allows both decreasing and increasing the cashflow. So, basically, you can make a game where money flows easily, or a game where a few dollars a day is all you get.

Please note that it is currently impossible to turn off mine income completely (as that would crash the game). But you can set it so low that any incoming money would be really pathetic (a few dozen dollars a day).

INI Setting:
MINE_INCOME_PERCENTAGE
Range: 1 to 65535
100 = Mine income is normal.
150 = Mines produce 50% more than normal.
50 = Mines produce half as much as they normally would.
1 = Mines produce very little. The Drassen mine, for instance, would make only $80 a day.

Please note: If you set it to 0, the program will immediately reset it to 1, to prevent crashes.






Externalized Auto-Resolve Luck Factor

Whether we like it or not, autoresolve happens. And there isn't much I can do to help make it work better, but I do what I can. I've externalized a specific value that controls how much Autoresolve depends on pure luck (rather than the skills of all participants).

By adjusting this value, you can make luck more or less of a factor in autoresolve. It will ALWAYS be a factor, but in my opinion it was simply too important in the past.

INI Setting:
AUTORESOLVE_LUCK_FACTOR
Range: 1.0 to 255.0
2.0 = Normal JA2 1.13 behavior - luck is about as important as skill.
1.0 = Luck plays a minimal part in AutoResolve. This means that a small group of blackshirts can probably destroy 20 green militia. It also means that mercs are much less likely to die in autoresolve...
10.0 = Luck is almost everything. Cross your fingers and pray to god.






Externalized Minimum and Maximum Chance to Hit

JA2 has a serious problem. Take a pistol, walk to one side of the map, and put a buddy on the other side of the map. Make sure there are no obstacles between them that could block the shot. Now fire the pistol at your buddy about 100 times. Statistically, one of those bullets will be a sure hit.

This is because the Chance to Hit can never drop below 1% . So one in every 100 shots is a sure hit, which is absolutely ridiculous (and leads to such hopeless shots). Since in JA2 our automatic weapons can spit out a lot of lead, it means that lucky shots occur far too often. To fix this, I've externalized both the minimum and maximum CTH values. We can now lower the minimum to 0, meaning that hopeless shots are just that - hopeless.

In addition, I've created a third value that allows placing the minimum CTH somewhere between 1% and 0%. This is called the "Minimum CTH Divisor". It works only if Minimum CTH has been set to 0.

To find out how to set the divisor, do this:

  1. Decide how low the minimum should be. For instance, 1 in 200 shots, 1 in 10000 shots, etc.
  2. Divide the second number (in the above examples, 200 or 10000) by 100. The result is your CTH divisor.

So if the CTH divisor is set to 50, the minimum CTH will be 1/5000. This means that 1 in every 5000 bullets is a sure hit.

INI Settings:
MAXIMUM_POSSIBLE_CTH
Range: 1 to 100
1 = Bullets will never have more than a 1 in 100 chance to hit their target, no matter how well they are aimed, or how close you are to the target.
99 = Normal JA2 value. This means that you can never have a sure hit.
100 = Makes it possible for well-aimed shots to hit the target for sure. If your CTH for a shot reaches 100%, you can't miss the target.

MINIMUM_POSSIBLE_CTH
Range: 0 to 99
1 = Normal JA2 value. At least one bullet in every 100 fired will be a hit, no matter how lousy your aim, how great the distance, etcetera.
99 = Bullets will hit almost always! Not recommended, unless you're suicidal.
0 = Makes it possible for badly-aimed bullets to be hopeless (I.E. have absolutely no chance of hitting the target). Also enables the use of the CTH Divisor.

There's a trick here though, caused by the way the physics engine works in the game. When a bullet is designated as a "hit", it'll be fired directly at the target. It can still hit obstacles on the way, but it'll at least be flying directly at the targets. However, a "missed" bullet can go pretty much anywhere, so there's always a statistical chance that it would STILL fly in the right direction and hit the target, even if it was designated to miss completely. This is something I can't easily resolve, but allowing the CTH to drop to 0 makes that less probable.
MINIMUM_CTH_DIVISOR
Range: 0 to 255
This value is only relevant if you've set MINIMUM_POSSIBLE_CTH to 0!
1 or 0 = Disabled.
2 = Minimum Chance to Hit is 1 in every 200 bullets.
100 = Minimum Chance to Hit is 1 in every 10,000 bullets.






Externalized Movement's effect on Aiming

If your target has moved at all during its turn, you will receive a penalty to your CTH when firing at that target. This is true for both enemies and mercs. Following many requests on this subject, I've externalized the value of the penalty.

Basically, this value determines how much CTH the shooter loses for every tile his target has moved.

Please note that there's a hardcoded maximum limit of 30 CTH loss. I might externalize it in the future.

INI Settings:
MOVEMENT_EFFECT_ON_AIMING
Range: 0.0 and above
0.0 = Target's movement will not affect aiming at that target.
1.5 = Normal JA2 value. For each tile a target has moved during its turn, anyone shooting at this target will suffer -1.5 to their CTH.
3.0 = For each tile a target has moved during its turn, anyone shooting at this target will suffer -3 to their CTH. (double the original effect)

Again, remember that you cannot suffer more than a 30 CTH penalty for target movement!





Global "Autofire Bullets / 5 AP" modifier

This setting allows us to place a modifier on ALL automatic weapons in the game, increasing or decreasing their rate of fire. This is a flat modifier, it adds or subtracts a number from the "Autofire Bullets / 5 AP" value of all automatic weapons. This is simply a hack that allows us make autofire faster (or slower) without having to change the XML. INI Settings:
AUTOFIRE_BULLETS_PER_5AP_MODIFIER
Range: -127 to 128
0 = No change.
1 = All automatic weapons will fire an extra bullet per 5 APs spent on autofire. This means that firing a lot of bullets in autofire now costs less APs!
-2 = All automatic weapons will fire two FEWER bullets per 5 APs spent on autofire. This means that firing a lot of bullets in autofire now costs a LOT more APs!






Externalized Level-up Speed

The method in which skills are gained in JA2 is unconventional. In essence, each time a character performs some skill-related action, he or she will be eligible to gain several "Sub-Points" in one or more skills. Whether they gain those Sub-Points is based on luck and of course how high their skill level already is. Once enough Sub-Points have been accumulated, the skill goes up one point. Again, as you get better in the skill, you'll gain less and less Sub-Points, but the number you need to accumulate stays the same.

Also note that Experience Level works a bit differently - You gain EXP Sub-Points every time you gain sub-points in any other skill or attribute, and the number of sub-points you need to gather grows larger and larger with each experience level. To go from level 1 to level 2 you need X sub-points, to go from level 2 to level 3 you need 2*X sub-points, from 3 to 4 requires 3*X sub-points points, etcetera.

The INI settings in HAM allow you to change the number of Sub-Points you need to collect to advance in skill, attribute, or Experience Level.

Here's a list of the skills/attributes:

SKILLS
  • Strength
  • Dexterity
  • Agility
  • Health
  • Wisdom
ATTRIBUTES
  • Marksmanship
  • Mechanical
  • Medical
  • Leadership
  • Explosives

INI Settings:
SKILLS_SUBPOINTS_TO_IMPROVE
Range: 1 to 65535
25 = JA2 Default. You need to gather at least 25 Sub-Points to advance up a skill level.
50 = Skills take twice as long to improve.
12 = Skllls improve twice as fast.

ATTRIBS_SUBPOINTS_TO_IMPROVE
Range: 1 to 65535
50 = JA2 Default. You need to gather at least 50 Sub-Points to advance up an attribute level.
100 = Attributes take twice as long to improve.
25 = Attributes improve twice as fast.

LEVEL_SUBPOINTS_TO_IMPROVE
Range: 1 to 6500
350 = JA2 Default. You need to gather at least 350 Sub-Points to advance up from level 1 to level 2, twice that (700) to advance from level 2 to level 3, three times that (1050) to advance from level 3 to level 4, etcetera.
700 = Experience Level takes twice as long to improve.
175 = Experience Level improves twice as fast.

PLEASE NOTE: These are independent from one another - you can make one category improve faster without changing the others.
ALSO NOTE: Experience Level Cost cannot be higher than 6500 (the program will correct higher values automatically). This is due to program limitations. Still, a value of 6500 means it takes 20 times longer to go up an experience level!