diff --git a/Tactical/Points.cpp b/Tactical/Points.cpp index b6a8c1153..8f0fc79b5 100644 --- a/Tactical/Points.cpp +++ b/Tactical/Points.cpp @@ -653,6 +653,11 @@ INT16 ActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, UINT16 u } INT16 EstimateActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, UINT16 usMovementMode, INT8 bPathIndex, INT8 bPathLength ) +{ + return EstimateActionPointCost( pSoldier, sGridNo, bDir, usMovementMode, bPathIndex, bPathLength, pSoldier->usAnimState ); +} + +INT16 EstimateActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, UINT16 usMovementMode, INT8 bPathIndex, INT8 bPathLength, UINT16 usPrevMovementMode ) { // This action point cost code includes the penalty for having to change // stance after jumping a fence IF our path continues... @@ -723,7 +728,7 @@ INT16 EstimateActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, } } - sPoints += ActionPointCost( pSoldier, sGridNo, bDir, usMovementMode ); + sPoints += ActionPointCost( pSoldier, sGridNo, bDir, usMovementMode, usPrevMovementMode ); return (sPoints); } diff --git a/Tactical/Points.h b/Tactical/Points.h index ce3833522..ad2fda698 100644 --- a/Tactical/Points.h +++ b/Tactical/Points.h @@ -290,6 +290,10 @@ INT16 TerrainActionPoints( SOLDIERTYPE *pSoldier, INT32 sGridno, INT8 bDir, INT8 INT16 ActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, UINT16 usMovementMode, UINT16 usPrevMovementMode ); // Convenience overload: prev mode = the soldier's current anim state (correct for real, per-step movement). INT16 ActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, UINT16 usMovementMode ); +// bPathIndex/bPathLength give the fence-continuation context; usPrevMovementMode is the +// previous tile's mode (see ActionPointCost). Estimators summing a path pass their simulated +// prior mode; the shorter overload uses the soldier's live anim state. +INT16 EstimateActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, UINT16 usMovementMode, INT8 bPathIndex, INT8 bPathLength, UINT16 usPrevMovementMode ); INT16 EstimateActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, UINT16 usMovementMode, INT8 bPathIndex, INT8 bPathLength ); BOOLEAN SelectedMercCanAffordMove( );