Fix: removes the usMapPos code from actions that can be used by AI + improves function FindAdjacentGridEx to handle monsters and find adjacent tile for any of the tile they occupy (by Shadooow).

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9026 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2021-05-15 05:18:12 +00:00
parent b923471914
commit cf55e6ddf3
2 changed files with 9 additions and 72 deletions
+8 -71
View File
@@ -860,10 +860,6 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
{ {
// See if we can get there to stab // See if we can get there to stab
sActionGridNo = FindAdjacentGridEx(pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE); sActionGridNo = FindAdjacentGridEx(pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE);
if (sActionGridNo == -1)
{
sActionGridNo = FindAdjacentGridEx(pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE);
}
if (sActionGridNo != NOWHERE) if (sActionGridNo != NOWHERE)
{ {
@@ -904,35 +900,11 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
//USING THE MEDKIT //USING THE MEDKIT
if ( Item[ usHandItem ].usItemClass == IC_MEDKIT ) if ( Item[ usHandItem ].usItemClass == IC_MEDKIT )
{ {
// ATE: AI CANNOT GO THROUGH HERE!
INT32 usMapPos;
BOOLEAN fHadToUseCursorPos = FALSE;
if (gTacticalStatus.fAutoBandageMode)
{
usMapPos = sGridNo;
}
else
{
GetMouseMapPos( &usMapPos );
}
// See if we can get there to stab // See if we can get there to stab
sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 ) if ( sActionGridNo == -1 )
{ {
// Try another location... return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 )
{
return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
}
if ( !gTacticalStatus.fAutoBandageMode )
{
fHadToUseCursorPos = TRUE;
}
} }
// Calculate AP costs... // Calculate AP costs...
@@ -950,20 +922,13 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
// SEND PENDING ACTION // SEND PENDING ACTION
pSoldier->aiData.ubPendingAction = MERC_GIVEAID; pSoldier->aiData.ubPendingAction = MERC_GIVEAID;
if ( fHadToUseCursorPos ) if ( pTargetSoldier != NULL )
{ {
pSoldier->aiData.sPendingActionData2 = usMapPos; pSoldier->aiData.sPendingActionData2 = pTargetSoldier->sGridNo;
} }
else else
{ {
if ( pTargetSoldier != NULL ) pSoldier->aiData.sPendingActionData2 = sGridNo;
{
pSoldier->aiData.sPendingActionData2 = pTargetSoldier->sGridNo;
}
else
{
pSoldier->aiData.sPendingActionData2 = sGridNo;
}
} }
pSoldier->aiData.bPendingActionData3 = ubDirection; pSoldier->aiData.bPendingActionData3 = ubDirection;
pSoldier->aiData.ubPendingActionAnimCount = 0; pSoldier->aiData.ubPendingActionAnimCount = 0;
@@ -1338,13 +1303,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 ) if ( sActionGridNo == -1 )
{ {
// Try another location... return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 )
{
return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
}
/*if ( !gTacticalStatus.fAutoBandageMode ) /*if ( !gTacticalStatus.fAutoBandageMode )
{ {
@@ -1445,13 +1404,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 ) if ( sActionGridNo == -1 )
{ {
// Try another location... return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 )
{
return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
}
} }
// Calculate AP costs... // Calculate AP costs...
@@ -1520,13 +1473,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 ) if ( sActionGridNo == -1 )
{ {
// Try another location... return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 )
{
return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
}
} }
// Calculate AP costs... // Calculate AP costs...
@@ -1600,13 +1547,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 ) if ( sActionGridNo == -1 )
{ {
// Try another location... return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
if ( sActionGridNo == -1 )
{
return( ITEM_HANDLE_CANNOT_GETTO_LOCATION );
}
} }
// Calculate AP costs... // Calculate AP costs...
@@ -1838,10 +1779,6 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
{ {
// See if we can get there to stab // See if we can get there to stab
sActionGridNo = FindAdjacentGridEx(pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE); sActionGridNo = FindAdjacentGridEx(pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE);
if (sActionGridNo == -1)
{
sActionGridNo = FindAdjacentGridEx(pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE);
}
} }
if ( sActionGridNo != NOWHERE ) if ( sActionGridNo != NOWHERE )
+1 -1
View File
@@ -5535,7 +5535,7 @@ INT32 FindAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pubDirect
{ {
SOLDIERTYPE *pTargetSoldier = MercPtrs[usSoldierIndex]; SOLDIERTYPE *pTargetSoldier = MercPtrs[usSoldierIndex];
sGridNo = pTargetSoldier->sGridNo; sGridNo = pTargetSoldier->sGridNo;
if (gAnimControl[pTargetSoldier->usAnimState].ubEndHeight == ANIM_PRONE) if (CREATURE_OR_BLOODCAT(pTargetSoldier) || gAnimControl[pTargetSoldier->usAnimState].ubEndHeight == ANIM_PRONE)
{ {
// prone; could be the base tile is inaccessible but the rest isn't... // prone; could be the base tile is inaccessible but the rest isn't...
for (INT8 cnt = 0; cnt < NUM_WORLD_DIRECTIONS; cnt++) for (INT8 cnt = 0; cnt < NUM_WORLD_DIRECTIONS; cnt++)