A quick search gave me the following: The standard reload function does not check for abilities that might grant free reloads as can be seen in X2Ability_DefaultAbilitySet.uc
// check for free reload upgrade
bFreeReload = false;
WeaponUpgrades = WeaponState.GetMyWeaponUpgradeTemplates();
for (i = 0; i < WeaponUpgrades.Length; ++i)
{
if (WeaponUpgrades[i].FreeReloadCostFn != none && WeaponUpgrades[i].FreeReloadCostFn(WeaponUpgrades[i], AbilityState, UnitState))
{
bFreeReload = true;
break;
}
}
if (!bFreeReload)
AbilityState.GetMyTemplate().ApplyCost(AbilityContext, AbilityState, UnitState, NewWeaponState, NewGameState);
// refill the weapon's ammo
NewWeaponState.Ammo = NewWeaponState.GetClipSize();
So as far as i know there are three ways you could do it Replace the Reload Ability Template with a complete new Template (not recommended) Override the class 'X2AbilityCost_ActionPoints' to check whether a certain ability is present (not recommended) Change the TemplateAbilityCost to a custom ability cost (okay) Change the reload abilities BuildNewGameStateFn to account for free reloads granted via custom abilities (okay)