From cf55e6ddf3d66c3a933a3adf0a0c0065b529590e Mon Sep 17 00:00:00 2001 From: Sevenfm Date: Sat, 15 May 2021 05:18:12 +0000 Subject: [PATCH] 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 --- Tactical/Handle Items.cpp | 79 ++++----------------------------------- Tactical/Overhead.cpp | 2 +- 2 files changed, 9 insertions(+), 72 deletions(-) diff --git a/Tactical/Handle Items.cpp b/Tactical/Handle Items.cpp index 517177083..65f8f0e43 100644 --- a/Tactical/Handle Items.cpp +++ b/Tactical/Handle Items.cpp @@ -860,10 +860,6 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa { // See if we can get there to stab sActionGridNo = FindAdjacentGridEx(pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE); - if (sActionGridNo == -1) - { - sActionGridNo = FindAdjacentGridEx(pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE); - } if (sActionGridNo != NOWHERE) { @@ -904,35 +900,11 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa //USING THE 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 sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); if ( sActionGridNo == -1 ) { - // Try another location... - sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); - - if ( sActionGridNo == -1 ) - { - return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); - } - - if ( !gTacticalStatus.fAutoBandageMode ) - { - fHadToUseCursorPos = TRUE; - } + return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); } // Calculate AP costs... @@ -950,20 +922,13 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa // SEND PENDING ACTION pSoldier->aiData.ubPendingAction = MERC_GIVEAID; - if ( fHadToUseCursorPos ) + if ( pTargetSoldier != NULL ) { - pSoldier->aiData.sPendingActionData2 = usMapPos; + pSoldier->aiData.sPendingActionData2 = pTargetSoldier->sGridNo; } else { - if ( pTargetSoldier != NULL ) - { - pSoldier->aiData.sPendingActionData2 = pTargetSoldier->sGridNo; - } - else - { - pSoldier->aiData.sPendingActionData2 = sGridNo; - } + pSoldier->aiData.sPendingActionData2 = sGridNo; } pSoldier->aiData.bPendingActionData3 = ubDirection; 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 ); if ( sActionGridNo == -1 ) { - // Try another location... - sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); - - if ( sActionGridNo == -1 ) - { - return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); - } + return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); /*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 ); if ( sActionGridNo == -1 ) { - // Try another location... - sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); - - if ( sActionGridNo == -1 ) - { - return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); - } + return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); } // 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 ); if ( sActionGridNo == -1 ) { - // Try another location... - sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); - - if ( sActionGridNo == -1 ) - { - return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); - } + return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); } // 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 ); if ( sActionGridNo == -1 ) { - // Try another location... - sActionGridNo = FindAdjacentGridEx( pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); - - if ( sActionGridNo == -1 ) - { - return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); - } + return( ITEM_HANDLE_CANNOT_GETTO_LOCATION ); } // 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 sActionGridNo = FindAdjacentGridEx(pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE); - if (sActionGridNo == -1) - { - sActionGridNo = FindAdjacentGridEx(pSoldier, usMapPos, &ubDirection, &sAdjustedGridNo, TRUE, FALSE); - } } if ( sActionGridNo != NOWHERE ) diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 242bb1f0f..775f0486a 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -5535,7 +5535,7 @@ INT32 FindAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pubDirect { SOLDIERTYPE *pTargetSoldier = MercPtrs[usSoldierIndex]; 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... for (INT8 cnt = 0; cnt < NUM_WORLD_DIRECTIONS; cnt++)