Hopefully improved AI code: don't try to resume movement after ActionDone was executed.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8911 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2020-10-26 17:37:44 +00:00
parent 3f2fd185e6
commit 80554bcde8
+26 -20
View File
@@ -782,31 +782,37 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier ) // FIXME - this function is named
} }
//*** TRICK- TAKE INTO ACCOUNT PAUSED FOR NO TIME ( FOR NOW ) //*** TRICK- TAKE INTO ACCOUNT PAUSED FOR NO TIME ( FOR NOW )
if (pSoldier->flags.fNoAPToFinishMove ) // sevenfm: check if we still have where to go and what to do
if (pSoldier->aiData.bAction != AI_ACTION_NONE &&
pSoldier->aiData.bNewSituation != IS_NEW_SITUATION &&
!TileIsOutOfBounds(pSoldier->aiData.usActionData) &&
NewOKDestination(pSoldier, pSoldier->aiData.usActionData, TRUE, pSoldier->pathing.bLevel))
{ {
SoldierTriesToContinueAlongPath(pSoldier); if (pSoldier->flags.fNoAPToFinishMove)
}
// ATE: Let's also test if we are in any stationary animation...
else if ( ( gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_STATIONARY ) )
{
// ATE: Put some ( MORE ) refinements on here....
// If we are trying to open door, or jump fence don't continue until done...
if ( !pSoldier->flags.fContinueMoveAfterStanceChange && !pSoldier->bEndDoorOpenCode )
{ {
//ATE: just a few more..... SoldierTriesToContinueAlongPath(pSoldier);
// If we have ANY pending aninmation that is movement..... }
if ( pSoldier->usPendingAnimation != NO_PENDING_ANIMATION && ( gAnimControl[ pSoldier->usPendingAnimation ].uiFlags & ANIM_MOVING ) ) // ATE: Let's also test if we are in any stationary animation...
else if ((gAnimControl[pSoldier->usAnimState].uiFlags & ANIM_STATIONARY))
{
// ATE: Put some ( MORE ) refinements on here....
// If we are trying to open door, or jump fence don't continue until done...
if (!pSoldier->flags.fContinueMoveAfterStanceChange && !pSoldier->bEndDoorOpenCode)
{ {
// Don't do anything, we're waiting on a pending animation.... //ATE: just a few more.....
} // If we have ANY pending aninmation that is movement.....
else if (pSoldier->usPendingAnimation != NO_PENDING_ANIMATION && (gAnimControl[pSoldier->usPendingAnimation].uiFlags & ANIM_MOVING))
{ {
// OK, we have a move to finish... // Don't do anything, we're waiting on a pending animation....
}
else
{
// OK, we have a move to finish...
#ifdef TESTAI #ifdef TESTAI
DebugMsg( TOPIC_JA2AI, DBG_LEVEL_0, String("GONNA TRY TO CONTINUE PATH FOR %d", pSoldier->ubID ) ); DebugMsg( TOPIC_JA2AI, DBG_LEVEL_0, String("GONNA TRY TO CONTINUE PATH FOR %d", pSoldier->ubID ) );
#endif #endif
SoldierTriesToContinueAlongPath(pSoldier);
SoldierTriesToContinueAlongPath(pSoldier); }
} }
} }
} }