Resource icon

Counter-Reconnaissance 3


Aug 12, 2016
Mod function
  • "Ignore Terrain Cost" promotion (on pre-paratrooper recon) is only available temporarily after combat: ie after unit attacks/defends, the "ignore" promo is added temporarily
  • pre-combat recon promo:
    • replaces VP's ignore terrain cost promo, w/ following additions
    • +10% CS if not adjacent to any friendly
    • applies malus promo to any unit engaged in melee combat
    • disabled for 2-turns after combat
  • post-combat recon promo:
    • ignore terrain cost
    • cannot attack
    • vision reduced to 1
    • expires after 1-turn combat free (recon then spends 1-turn with no mod promo)
  • malus promo to opponent of pre-combat promo'd recon:
    • movement into rough terrain ends turn
    • increased movement cost in desert, snow, and marsh
    • vision reduced to 1
    • expires after 2 turns
In-game effect:

Recon unit gets bonus when not adjacent to friendlies, but loses this ability temporarily as soon as it is engaged. Recon's high vision can also be temporarily disabled by attacking it, rather than needing to destroy the unit entirely. In its pre-combat status, recon unit applies malus to the first opponent engaged in melee combat -- the malus makes enemy slow where recon is quick, but does not remove movement points nor weaken strength directly. In the turn after combat, recon unit receives "ignore terrain cost" mobility, emphasizing recon line hit & run role in rough terrain. Recon's pre-combat promo is re-applied only if unit remains combat-free for 2 turns. Para-trooper and beyond unchanged.

  • Recon movement cheese remains high, favoring human player; here its mitigated directly with ignore terrain cost only available for 1 turn after combat.
  • Early-recon units' role feels undefined, partially overlapping with mounted, partially with melee infantry; aim is to sharpen their hit-and-run, "recon" role, make them different from any other unit line
  • Available tweaks to address recon function are limited, we had an elected proposal fail to implement for technical reasons... making best use of what's available w/ a touch of .lua duct tape, trying not to unbalance things (too much), keep it all AI-accessible.
I've taken a few stabs at retrofitting our recon units, though none so far really have hit the target tbh. This one does a better job of addressing recon movement issues while maintaining wide compatibility with other mods. If you enjoy it, please provide feedback on balance.

Recommend combining with Recon Pay Terrain Cost and Exploration Heritage
Last edited:
I've played through the early-to-mid game with this a couple times now, including one game where I purposefully built an army of recon & ranged and a few mounted, no ordinary melee. I generally enjoy the effect, it's not all that impactful really, or at least I haven't figured out how to exploit it to any big advantage, yet -- but as currently deployed, it seems to make recon slightly better at holding ground rather than the intention of conferring a hit-and-run, or some other unique role.

In hindsight, obviously the slower movement post-combat, along with defense and weak-pilum bonus during these turns would have this effect, though my intention there was to give the unit some versatility & survivability while it had its mobility impaired, rather than make fortifying the obvious post-combat play. There are many promotion effects that could be added or swapped for the current benefit/malus combo on the post-combat promo, I think this is what I'll be looking at adjusting, just not sure exactly what direction to take. I think the 'screened' promotion on opponents works well enough for what it is, though am open to tweaking it too.

The first change I'm considering is inverting the attack/defense bonus/malus. ie currently, recon becomes better defender and worse attacker temporarily, post-combat; should probably be better attacker and worse defender in some capacity (maybe via something other than just straight % changes)

For anyone that's given it a serious go and enjoys the concept of recon transitioning between pre- and post-combat configuration, have a look at the promo table field headings pasted below, they're partially self-explanatory... the ones we might use here should mostly be anyway. Let me know if anything strikes you as a good fit for this mod:

Spoiler :

<Column name="InstaHeal" type="boolean" default="0"/>
<Column name="Leader" type="boolean" default="0"/>
<Column name="Blitz" type="boolean" default="0"/>
<Column name="Amphib" type="boolean" default="0"/>
<Column name="River" type="boolean" default="0"/>
<Column name="EnemyRoute" type="boolean" default="0"/>
<Column name="RivalTerritory" type="boolean" default="0"/>
<Column name="MustSetUpToRangedAttack" type="boolean" default="0"/>
<Column name="RangedSupportFire" type="boolean" default="0"/>
<Column name="CanMoveAfterAttacking" type="boolean" default="0"/>
<Column name="AlwaysHeal" type="boolean" default="0"/>
<Column name="HealOutsideFriendly" type="boolean" default="0"/>
<Column name="HillsDoubleMove" type="boolean" default="0"/>
<Column name="RoughTerrainEndsTurn" type="boolean" default="0"/>
<Column name="IgnoreTerrainCost" type="boolean" default="0"/>
<Column name="HoveringUnit" type="boolean" default="0"/>
<Column name="FlatMovementCost" type="boolean" default="0"/>
<Column name="CanMoveImpassable" type="boolean" default="0"/>
<Column name="NoCapture" type="boolean" default="0"/>
<Column name="OnlyDefensive" type="boolean" default="0"/>
<Column name="NoDefensiveBonus" type="boolean" default="0"/>
<Column name="NukeImmune" type="boolean" default="0"/>
<Column name="HiddenNationality" type="boolean" default="0"/>
<Column name="AlwaysHostile" type="boolean" default="0"/>
<Column name="NoRevealMap" type="boolean" default="0"/>
<Column name="Recon" type="boolean" default="0"/>
<Column name="CanMoveAllTerrain" type="boolean" default="0"/>
<Column name="FreePillageMoves" type="boolean" default="0"/>
<Column name="AirSweepCapable" type="boolean" default="0"/>
<Column name="AllowsEmbarkation" type="boolean" default="0"/>
<Column name="EmbarkedAllWater" type="boolean" default="0"/>
<Column name="HealIfDestroyExcludesBarbarians" type="boolean" default="0"/>
<Column name="RangeAttackIgnoreLOS" type="boolean" default="0"/>
<Column name="CityAttackOnly" type="boolean" default="0"/>
<Column name="CaptureDefeatedEnemy" type="boolean" default="0"/>
<Column name="HealOnPillage" type="boolean" default="0"/>
<Column name="IgnoreGreatGeneralBenefit" type="boolean" default="0"/>
<Column name="IgnoreZOC" type="boolean" default="0"/>
<Column name="HasPostCombatPromotions" type="boolean" default="0"/>
<Column name="PostCombatPromotionsExclusive" type="boolean" default="0"/>
<Column name="RangedAttackModifier" type="integer" default="0"/>
<Column name="InterceptionCombatModifier" type="integer" default="0"/>
<Column name="InterceptionDefenseDamageModifier" type="integer" default="0"/>
<Column name="AirSweepCombatModifier" type="integer" default="0"/>
<Column name="ExtraAttacks" type="integer" default="0"/>
<Column name="ExtraNavalMovement" type="integer" default="0"/>
<Column name="VisibilityChange" type="integer" default="0"/>
<Column name="MovesChange" type="integer" default="0"/>
<Column name="MoveDiscountChange" type="integer" default="0"/>
<Column name="RangeChange" type="integer" default="0"/>
<Column name="InterceptChanceChange" type="integer" default="0"/>
<Column name="NumInterceptionChange" type="integer" default="0"/>
<Column name="EvasionChange" type="integer" default="0"/>
<Column name="CargoChange" type="integer" default="0"/>
<Column name="EnemyHealChange" type="integer" default="0"/>
<Column name="NeutralHealChange" type="integer" default="0"/>
<Column name="FriendlyHealChange" type="integer" default="0"/>
<Column name="SameTileHealChange" type="integer" default="0"/>
<Column name="AdjacentTileHealChange" type="integer" default="0"/>
<Column name="EnemyDamageChance" type="integer" default="0"/>
<Column name="NeutralDamageChance" type="integer" default="0"/>
<Column name="EnemyDamage" type="integer" default="0"/>
<Column name="NeutralDamage" type="integer" default="0"/>
<Column name="CombatPercent" type="integer" default="0"/>
<Column name="CityAttack" type="integer" default="0"/>
<Column name="CityDefense" type="integer" default="0"/>
<Column name="RangedDefenseMod" type="integer" default="0"/>
<Column name="HillsAttack" type="integer" default="0"/>
<Column name="HillsDefense" type="integer" default="0"/>
<Column name="OpenAttack" type="integer" default="0"/>
<Column name="OpenRangedAttackMod" type="integer" default="0"/>
<Column name="OpenDefense" type="integer" default="0"/>
<Column name="RoughAttack" type="integer" default="0"/>
<Column name="RoughRangedAttackMod" type="integer" default="0"/>
<Column name="RoughDefense" type="integer" default="0"/>
<Column name="AttackFortifiedMod" type="integer" default="0"/>
<Column name="AttackWoundedMod" type="integer" default="0"/>
<Column name="FlankAttackModifier" type="integer" default="0"/>
<Column name="NearbyEnemyCombatMod" type="integer" default="0"/>
<Column name="NearbyEnemyCombatRange" type="integer" default="0"/>
<Column name="UpgradeDiscount" type="integer" default="0"/>
<Column name="ExperiencePercent" type="integer" default="0"/>
<Column name="AdjacentMod" type="integer" default="0"/>
<Column name="AttackMod" type="integer" default="0"/>
<Column name="DefenseMod" type="integer" default="0"/>
<Column name="DropRange" type="integer" default="0"/>
<Column name="GreatGeneral" type="boolean" default="0"/>
<Column name="GreatAdmiral" type="boolean" default="0"/>
<Column name="GreatGeneralModifier" type="integer" default="0"/>
<Column name="GreatGeneralReceivesMovement" type="boolean" default="0"/>
<Column name="GreatGeneralCombatModifier" type="integer" default="0"/>
<Column name="FriendlyLandsModifier" type="integer" default="0"/>
<Column name="FriendlyLandsAttackModifier" type="integer" default="0"/>
<Column name="OutsideFriendlyLandsModifier" type="integer" default="0"/>
<Column name="HPHealedIfDestroyEnemy" type="integer" default="0"/>
<Column name="ExtraWithdrawal" type="integer" default="0"/>
<Column name="EmbarkExtraVisibility" type="integer" default="0"/>
<Column name="EmbarkDefenseModifier" type="integer" default="0"/>
<Column name="CapitalDefenseModifier" type="integer" default="0"/>
<Column name="CapitalDefenseFalloff" type="integer" default="0"/>
<Column name="CityAttackPlunderModifier" type="integer" default="0"/>
<Column name="ReligiousStrengthLossRivalTerritory" type="integer" default="0"/>
<Column name="TradeMissionInfluenceModifier" type="integer" default="0"/>
<Column name="TradeMissionGoldModifier" type="integer" default="0"/>
<Column name="GoldenAgeValueFromKills" type="integer" default="0"/>
<Column name="Sapper" type="boolean" default="0"/>
<Column name="HeavyCharge" type="boolean" default="0"/>
<Column name="LayerAnimationPath" type="text" default="NULL"/>
<Column name="TechPrereq" type="text" default="NULL"/>
<Column name="Invisible" type="text" default="NULL"/>
<Column name="SeeInvisible" type="text" default="NULL"/>
<Column name="PromotionPrereq" type="text" default="NULL"/>
<Column name="PromotionPrereqOr1" type="text" default="NULL"/>
<Column name="PromotionPrereqOr2" type="text" default="NULL"/>
<Column name="PromotionPrereqOr3" type="text" default="NULL"/>
<Column name="PromotionPrereqOr4" type="text" default="NULL"/>
<Column name="PromotionPrereqOr5" type="text" default="NULL"/>
<Column name="PromotionPrereqOr6" type="text" default="NULL"/>
<Column name="PromotionPrereqOr7" type="text" default="NULL"/>
<Column name="PromotionPrereqOr8" type="text" default="NULL"/>
<Column name="PromotionPrereqOr9" type="text" default="NULL"/>
<Column name="PediaType" type="text" />
<Column name="PediaEntry" type="text" />
<Column name="MaxHitPointsChange" type="INTEGER" default="0"/>
<Column name="MaxHitPointsModifier" type="INTEGER" default="0"/>
<Column name="MinimumRangeRequired" type="INTEGER" default="0"/>
<Column name="MaximumRangeRequired" type="INTEGER" default="0"/>
<Column name="MountedOnly" type="BOOLEAN" default="0"/>
<Column name="AttackFullyHealedMod" type="INTEGER" default="0"/>
<Column name="AttackAbove50HealthMod" type="INTEGER" default="0"/>
<Column name="AttackBelowEqual50HealthMod" type="INTEGER" default="0"/>
<Column name="RangedFlankAttack" type="INTEGER" default="0"/>
<Column name="ExtraFlankPower" type="INTEGER" default="0"/>
<Column name="SplashDamage" type="INTEGER" default="0"/>
<Column name="AOEDamageOnKill" type="INTEGER" default="0"/>
<Column name="AoEWhileFortified" type="INTEGER" default="0"/>
<Column name="AoEDamageOnMove" type="INTEGER" default="0"/>
<Column name="WorkRateMod" type="INTEGER" default="0"/>
<Column name="ReconChange" type="INTEGER" default="0"/>
<Column name="PromotionDuration" type="INTEGER" default="0"/>
<Column name="IsLostOnMove" type="BOOLEAN" default="0"/>
<Column name="NegatesPromotion" type="TEXT" default="NULL"/>
<Column name="ForcedDamageValue" type="INTEGER" default="0"/>
<Column name="ChangeDamageValue" type="INTEGER" default="0"/>
<Column name="CannotBeCaptured" type="BOOLEAN" default="0"/>
<Column name="CapturedUnitsConscripted" type="BOOLEAN" default="0"/>
<Column name="BarbarianCombatBonus" type="INTEGER" default="0"/>
<Column name="MoraleBreakChance" type="INTEGER" default="0"/>
<Column name="BarbarianOnly" type="BOOLEAN" default="0"/>
<Column name="CityStateOnly" type="BOOLEAN" default="0"/>
<Column name="StrongerDamaged" type="BOOLEAN" default="0"/>
<Column name="FightWellDamaged" type="BOOLEAN" default="0"/>
<Column name="GeneralGoldenAgeExpPercent" type="INTEGER" default="0"/>
<Column name="IsNearbyPromotion" type="BOOLEAN" default="0"/>
<Column name="NearbyRange" type="INTEGER" default="0"/>
<Column name="GiveDomain" type="TEXT" default="NULL"/>
<Column name="GiveCombatMod" type="INTEGER" default="0"/>
<Column name="GiveHPHealedIfEnemyKilled" type="INTEGER" default="0"/>
<Column name="GiveExperiencePercent" type="INTEGER" default="0"/>
<Column name="GiveOutsideFriendlyLandsModifier" type="INTEGER" default="0"/>
<Column name="GiveExtraAttacks" type="INTEGER" default="0"/>
<Column name="GiveDefenseMod" type="INTEGER" default="0"/>
<Column name="GiveInvisibility" type="BOOLEAN" default="0"/>
<Column name="GiveOnlyOnStartingTurn" type="BOOLEAN" default="0"/>
<Column name="NearbyCityCombatMod" type="INTEGER" default="0"/>
<Column name="NearbyFriendlyCityCombatMod" type="INTEGER" default="0"/>
<Column name="NearbyEnemyCityCombatMod" type="INTEGER" default="0"/>
<Column name="NearbyHealEnemyTerritory" type="INTEGER" default="0"/>
<Column name="NearbyHealNeutralTerritory" type="INTEGER" default="0"/>
<Column name="NearbyHealFriendlyTerritory" type="INTEGER" default="0"/>
<Column name="MountainsDoubleMove" type="BOOLEAN" default="0"/>
<Column name="EmbarkFlatCost" type="BOOLEAN" default="0"/>
<Column name="DisembarkFlatCost" type="BOOLEAN" default="0"/>
<Column name="NumRepairCharges" type="INTEGER" default="0"/>
<Column name="GetGroundAttackDamage" type="INTEGER" default="0"/>
<Column name="MilitaryCapChange" type="INTEGER" default="0"/>
<Column name="CombatBonusFromNearbyUnitClass" type="INTEGER" default="-1"/>
<Column name="NearbyUnitClassBonusRange" type="INTEGER" default="0"/>
<Column name="NearbyUnitClassBonus" type="INTEGER" default="0"/>
<Column name="AirInterceptRangeChange" type="INTEGER" default="0"/>
<Column name="ConvertDomainUnit" type="TEXT" default="NULL"/>
<Column name="ConvertDomain" type="TEXT" default="NULL"/>
<Column name="WonderProductionModifier" type="INTEGER" default="0"/>
<Column name="LandAirDefenseBonus" type="INTEGER" default="0"/>
<Column name="DiploMissionInfluence" type="INTEGER" default="0"/>
<Column name="PlagueChance" type="INTEGER" default="0"/>
<Column name="PlaguePromotion" type="TEXT" default="NULL"/>
<Column name="IsPlague" type="BOOLEAN" default="0"/>
<Column name="PlagueID" type="INTEGER" default="-1"/>
<Column name="PlaguePriority" type="INTEGER" default="0"/>
<Column name="PlagueIDImmunity" type="INTEGER" default="0"/>
<Column name="OpenFromMod" type="INTEGER" default="0"/>
<Column name="RoughFromMod" type="INTEGER" default="0"/>
<Column name="NoSupply" type="INTEGER" default="0"/>
<Column name="StackedGreatGeneralXP" type="INTEGER" default="0"/>
<Column name="GoodyHutYieldBonus" type="INTEGER" default="0"/>
<Column name="GainsXPFromScouting" type="BOOLEAN" default="0"/>
<Column name="GainsXPFromPillaging" type="BOOLEAN" default="0"/>
<Column name="GainsXPFromSpotting" type="BOOLEAN" default="0"/>
<Column name="MultiAttackBonus" type="INTEGER" default="0"/>
<Column name="DamageReductionCityAssault" type="INTEGER" default="0"/>
<Column name="IsConvertOnDamage" type="BOOLEAN" default="0"/>
<Column name="IsConvertOnFullHP" type="BOOLEAN" default="0"/>
<Column name="ConvertDamageOrFullHPUnit" type="TEXT" default="NULL"/>
<Column name="DamageThreshold" type="INTEGER" default="0"/>
<Column name="IsConvertEnemyUnitToBarbarian" type="BOOLEAN" default="0"/>
<Column name="PillageBonusStrength" type="INTEGER" default="0"/>
<Column name="ReligiousPressureModifier" type="INTEGER" default="0"/>
<Column name="AdjacentCityDefenseMod" type="INTEGER" default="0"/>
<Column name="NearbyEnemyDamage" type="INTEGER" default="0"/>
<Column name="AdjacentEnemySapMovement" type="INTEGER" default="0"/>
<Column name="MilitaryProductionModifier" type="INTEGER" default="0"/>
<Column name="HighSeaRaider" type="BOOLEAN" default="0"/>
<Column name="NoAdjacentUnitMod" type="INTEGER" default="0"/>
<Column name="AuraRangeChange" type="INTEGER" default="0"/>
<Column name="AuraEffectChange" type="INTEGER" default="0"/>
<Column name="IgnoreTerrainDamage" type="INTEGER" default="0"/>
<Column name="IgnoreFeatureDamage" type="INTEGER" default="0"/>
<Column name="ExtraTerrainDamage" type="INTEGER" default="0"/>
<Column name="ExtraFeatureDamage" type="INTEGER" default="0"/>
<Column name="CanCrossIce" type="INTEGER" default="0"/>
<Column name="CanCrossMountains" type="INTEGER" default="0"/>
<Column name="CanCrossOceans" type="INTEGER" default="0"/>
<Column name="EmbarkedDeepWater" type="INTEGER" default="0"/>
<Column name="NearbyImprovementCombatBonus" type="INTEGER" default="0"/>
<Column name="NearbyImprovementBonusRange" type="INTEGER" default="0"/>
<Column name="CombatBonusImprovement" type="INTEGER" default="-1"/>
Last edited:
Tekamthi updated Counter-Reconnaissance (for VP) with a new update entry:

re-designed bonus/malus

same concept as v1 ie. recon have a pre- and post-combat status, but with effects re-aligned and scaled back:

pre-combat recon promo:
  • replaces ignore terrain cost promo, applies same effect w/ following additions
  • disabled for 2-turns after combat
  • 5 dmg to adjacent enemies on fortify (weak pilum)
  • applies malus promo to any unit engaged in melee combat
post-combat promo:
  • 'ignore terrain cost' disabled
  • vision reduced to 1
  • +10% CS if not adjacent to...

Read the rest of this update entry...
Tekamthi updated Counter-Reconnaissance (for VP) with a new update entry:

Hit & run update

intended to be paired with Recon Pay Terrain Cost.
  • Removed AoE dmg on fortify (pointless infringement on pilum UU)
  • Flipped the combat strength bonus when not adjacent to friendlies to the pre-combat promo
  • Also flipped "Ignore Terrain Cost" bonus to the post-combat promo only, and added "defensiveOnly" (you get 1 turn of super speed to get away, but cannot attack...

Read the rest of this update entry...
Top Bottom