From 3146cd9b9d885cb903470c514ae7bf2016c7f776 Mon Sep 17 00:00:00 2001 From: Sevenfm Date: Tue, 11 May 2021 04:50:27 +0000 Subject: [PATCH] Fix for for using items on enemies on roofs from inside room below. This includes multiple actions like first aid kit, blade or punch that shown path into room below enemy on roof and even allowed to stab from there (with zero chance to hit) or punch from there (clocks running for minute) (by Shadooow). git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9016 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/UI Cursors.cpp | 52 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/Tactical/UI Cursors.cpp b/Tactical/UI Cursors.cpp index 1708c258..c500bf9d 100644 --- a/Tactical/UI Cursors.cpp +++ b/Tactical/UI Cursors.cpp @@ -1647,6 +1647,11 @@ UINT8 HandleKnifeCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivate INT8 bFutureAim; BOOLEAN fEnoughPoints = TRUE; + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return KNIFE_REG_UICURSOR; + } + // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_MERCS ); @@ -1779,6 +1784,11 @@ UINT8 HandlePunchCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivate INT8 bFutureAim; BOOLEAN fEnoughPoints = TRUE; + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return ACTION_PUNCH_GRAY; + } + // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_MERCS ); @@ -1901,6 +1911,11 @@ UINT8 HandlePunchCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivate UINT8 HandleAidCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivated, UINT32 uiCursorFlags ) { + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return ACTION_FIRSTAID_GRAY; + } + // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_MERCSFORAID ); @@ -2119,6 +2134,10 @@ UINT8 HandleRefuelCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCursorF UINT8 HandleJarCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCursorFlags ) { + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return BAD_JAR_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_JAR ); @@ -2138,6 +2157,10 @@ UINT8 HandleTinCanCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCursorF INT32 sIntTileGridNo; LEVELNODE *pIntTile; + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return PLACE_TINCAN_RED_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_CAN ); @@ -2201,6 +2224,10 @@ UINT8 HandleCameraCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivat UINT8 HandleBloodbagCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivated, UINT32 uiCursorFlags ) { + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return BLOODBAG_RED_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_APPLYITEM ); @@ -2220,6 +2247,10 @@ UINT8 HandleBloodbagCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActiv UINT8 HandleSplintCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivated, UINT32 uiCursorFlags ) { + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return SPLINT_RED_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_APPLYITEM ); @@ -2251,7 +2282,10 @@ UINT8 HandleSplintCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivat UINT8 HandleBombCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivated, UINT32 uiCursorFlags ) { - + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return PLACE_BOMB_GREY_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_BOMB ); @@ -2281,6 +2315,10 @@ UINT8 HandleBombCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivated UINT8 HandleFortificationCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCursorFlags ) { + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return FORTIFICATION_RED_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_FORTIFICATION ); @@ -2306,6 +2344,10 @@ UINT8 HandleFortificationCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 ui UINT8 HandleHandcuffCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCursorFlags ) { + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return HANDCUFF_RED_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_HANDCUFF ); @@ -2325,6 +2367,10 @@ UINT8 HandleHandcuffCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCurso UINT8 HandleApplyItemCursor(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCursorFlags) { + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return APPLYITEM_RED_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor(pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_APPLYITEM); @@ -2343,6 +2389,10 @@ UINT8 HandleApplyItemCursor(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCurso UINT8 HandleHackCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCursorFlags ) { + if (pSoldier->pathing.bLevel != gsInterfaceLevel) + { + return NO_UICURSOR; + } // DRAW PATH TO GUY HandleUIMovementCursor( pSoldier, uiCursorFlags, sGridNo, MOVEUI_TARGET_INTERACTIVEACTION );