Simplified ImprovedAutoFastForward feature (allows to accelerate only invisible enemies) (by sevenfm)

Now single option IMPROVED_AUTO_FAST_FORWARD=TRUE by default
Removed options:
AUTO_FAST_FORWARD_ENEMIES
AUTO_FAST_FORWARD_MILITIA
AUTO_FAST_FORWARD_CIVS
AUTO_FAST_FORWARD_CREATURES
ENEMY_CLOCK_SPEED_PERCENT

Also a small fix (additional update of AutoFastForward status when soldier arrives at new gridno)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7828 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2015-04-21 21:50:47 +00:00
parent ab3eec17c6
commit 7a163e8a3e
5 changed files with 47 additions and 135 deletions
+1 -121
View File
@@ -73,7 +73,7 @@ extern void AdjustNoAPToFinishMove( SOLDIERTYPE *pSoldier, BOOLEAN fSet );
void TurnBasedHandleNPCAI(SOLDIERTYPE *pSoldier);
void HandleAITacticalTraversal( SOLDIERTYPE * pSoldier );
void UpdateFastForwardMode( SOLDIERTYPE* pSoldier );
extern void UpdateFastForwardMode( SOLDIERTYPE* pSoldier );
extern UINT8 gubElementsOnExplosionQueue;
@@ -2619,123 +2619,3 @@ void HandleAITacticalTraversal( SOLDIERTYPE * pSoldier )
}
CheckForEndOfBattle( TRUE );
}
void UpdateFastForwardMode( SOLDIERTYPE* pSoldier )
{
BOOLEAN action = FALSE;
BOOLEAN forward = FALSE;
BOOLEAN found = FALSE;
UINT16 cnt;
SOLDIERTYPE * ps;
if( ( gGameExternalOptions.ubAutoFastForwardEnemies == 0 && gGameExternalOptions.ubAutoFastForwardMilitia == 0 ) ||
!gGameSettings.fOptions[TOPTION_AUTO_FAST_FORWARD_MODE] ||
is_networked ||
!( gTacticalStatus.uiFlags & TURNBASED && gTacticalStatus.uiFlags & INCOMBAT ) ||
pSoldier->bTeam == OUR_TEAM )
return;
switch ( pSoldier->aiData.bAction )
{
case AI_ACTION_TOSS_PROJECTILE:
case AI_ACTION_KNIFE_MOVE:
case AI_ACTION_FIRE_GUN:
case AI_ACTION_THROW_KNIFE:
case AI_ACTION_PULL_TRIGGER:
case AI_ACTION_USE_DETONATOR:
case AI_ACTION_OPEN_OR_CLOSE_DOOR:
case AI_ACTION_LOWER_GUN:
case AI_ACTION_RAISE_GUN:
case AI_ACTION_CLIMB_ROOF:
case AI_ACTION_STEAL_MOVE:
case AI_ACTION_JUMP_WINDOW:
case AI_ACTION_USE_SKILL:
action = TRUE;
break;
}
if ( pSoldier->bTeam == MILITIA_TEAM )
{
switch( gGameExternalOptions.ubAutoFastForwardMilitia )
{
case 0: // default mode
forward = gGameSettings.fOptions[TOPTION_AUTO_FAST_FORWARD_MODE];
break;
case 1: // auto fast forward this militiaman if he does not see opponents
if( pSoldier->aiData.bOppCnt == 0 )
forward = TRUE && !action;
break;
case 2: // auto fast forward all militia
forward = TRUE && !action;
break;
}
}
else if ( pSoldier->bTeam == CIV_TEAM )
{
switch( gGameExternalOptions.ubAutoFastForwardCivs )
{
case 0: // default mode
forward = gGameSettings.fOptions[TOPTION_AUTO_FAST_FORWARD_MODE];
break;
case 1: // auto fast forward only invisible civs
if( pSoldier->bVisible == -1 )
forward = TRUE && !action;
break;
case 2: // auto fast forward civs always
forward = TRUE && !action;
break;
}
}
else if ( pSoldier->bTeam == CREATURE_TEAM )
{
switch( gGameExternalOptions.ubAutoFastForwardCreatures )
{
case 0: // default mode
forward = gGameSettings.fOptions[TOPTION_AUTO_FAST_FORWARD_MODE];
break;
case 1: // auto fast forward only invisible
if( pSoldier->bVisible == -1 )
forward = TRUE && !action;
break;
case 2: // auto fast forward always
forward = TRUE && !action;
break;
}
}
else
{
switch ( gGameExternalOptions.ubAutoFastForwardEnemies )
{
case 0: // default mode
forward = gGameSettings.fOptions[TOPTION_AUTO_FAST_FORWARD_MODE];
break;
case 1: // auto fast forward enemy soldier only if player team does not see him
for ( cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++ )
{
ps = MercPtrs[ cnt ];
found= FALSE;
if (ps->bActive && ps->bInSector && ps->stats.bLife >= OKLIFE)
{
if (ps->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY)
{
found= TRUE;
break;
}
}
}
forward = !found && !action;
break;
case 2: // auto fast forward only invisible enemies
if( pSoldier->bVisible == -1 )
forward = TRUE && !action;
break;
case 3: // always auto fast forward movements
forward = TRUE && !action;
break;
}
}
if ( IsFastForwardMode() != forward )
SetFastForwardMode( forward );
}