From 06367419c02469b2ff2801d3c32655d87f999e59 Mon Sep 17 00:00:00 2001 From: Wanne Date: Thu, 9 Oct 2014 11:34:54 +0000 Subject: [PATCH] Merged from revision: 7548 Bugfix: Place inventory on same bLevel as merc when dropping items through map screen inventory (by Ocular) - see: http://www.ja-galaxy-forum.com/ubbthreads.php/ubb/showflat/Number/336500/gonew/1/[PATCH]_Place_inventory_on_sam#UNREAD git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7549 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Map Screen Interface Map Inventory.cpp | 3 ++- Strategic/Map Screen Interface Map Inventory.h | 2 +- Strategic/mapscreen.cpp | 10 +++++----- Tactical/Items.cpp | 7 ++++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Strategic/Map Screen Interface Map Inventory.cpp b/Strategic/Map Screen Interface Map Inventory.cpp index b4bbc54c..634ce2d1 100644 --- a/Strategic/Map Screen Interface Map Inventory.cpp +++ b/Strategic/Map Screen Interface Map Inventory.cpp @@ -2535,7 +2535,7 @@ BOOLEAN PlaceObjectInInventoryStash( OBJECTTYPE *pInventorySlot, OBJECTTYPE *pIt } -BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo ) +BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo, INT8 ubLevel ) { OBJECTTYPE *pInventorySlot; INT32 cnt = 0; @@ -2563,6 +2563,7 @@ BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo ) { pInventoryPoolList[cnt].sGridNo = sGridNo; pInventoryPoolList[cnt].usFlags |= WORLD_ITEM_REACHABLE; + pInventoryPoolList[cnt].ubLevel = ubLevel; pInventoryPoolList[cnt].bVisible = 1; pInventoryPoolList[cnt].fExists = TRUE; } diff --git a/Strategic/Map Screen Interface Map Inventory.h b/Strategic/Map Screen Interface Map Inventory.h index 86abd206..6c0a387d 100644 --- a/Strategic/Map Screen Interface Map Inventory.h +++ b/Strategic/Map Screen Interface Map Inventory.h @@ -49,7 +49,7 @@ void HandleFlashForHighLightedItem( void ); extern std::vector pInventoryPoolList; // autoplace down object -BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo=0 ); +BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo=0, INT8 ubLevel=0 ); // the current inventory item extern INT32 iCurrentlyHighLightedItem; diff --git a/Strategic/mapscreen.cpp b/Strategic/mapscreen.cpp index 9043f67f..4d739c42 100644 --- a/Strategic/mapscreen.cpp +++ b/Strategic/mapscreen.cpp @@ -7654,7 +7654,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if(pSoldier->inv[i].exists() == true) { - AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo); + AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo, pSoldier->pathing.bLevel); DeleteObj(&pSoldier->inv[i]); } fTeamPanelDirty = TRUE; @@ -7665,7 +7665,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if(pSoldier->inv[i].exists() == true) { - AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo); + AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo, pSoldier->pathing.bLevel); DeleteObj(&pSoldier->inv[i]); } fTeamPanelDirty = TRUE; @@ -7683,7 +7683,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if(pSoldier->inv[i].exists() == true) { - AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo); + AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo, pSoldier->pathing.bLevel); DeleteObj(&pSoldier->inv[i]); } fTeamPanelDirty = TRUE; @@ -8241,7 +8241,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if(pSoldier->inv[i].exists() == true) { - AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo); + AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo, pSoldier->pathing.bLevel); DeleteObj(&pSoldier->inv[i]); } fTeamPanelDirty = TRUE; @@ -8252,7 +8252,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if(pSoldier->inv[i].exists() == true) { - AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo); + AutoPlaceObjectInInventoryStash(&pSoldier->inv[i], pSoldier->sGridNo, pSoldier->pathing.bLevel); DeleteObj(&pSoldier->inv[i]); } fTeamPanelDirty = TRUE; diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index a990bd55..b8409b17 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -85,7 +85,7 @@ extern OBJECTTYPE *gpItemDescOrigAttachmentObject; extern OBJECTTYPE gCloneItemDescObject; extern BOOLEAN fShowMapInventoryPool; extern UINT32 guiCurrentItemDescriptionScreen; -extern BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo ); +extern BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo, INT8 ubLevel ); // HEADROCK HAM 5: Also need these to trigger Map Inventory changes appropriately. extern BOOLEAN fMapInventoryZoom; // HEADROCK HAM 5: And this, for checking whether an item is in the pool. @@ -5775,7 +5775,7 @@ void RemoveProhibitedAttachments(SOLDIERTYPE* pSoldier, OBJECTTYPE* pObj, UINT16 if(sGridNo != NOWHERE) { if(guiCurrentItemDescriptionScreen == MAP_SCREEN && fShowMapInventoryPool) - AutoPlaceObjectInInventoryStash(&(*iter), sGridNo); + AutoPlaceObjectInInventoryStash(&(*iter), sGridNo, ubLevel); else AddItemToPool(sGridNo, &(*iter), 1, ubLevel, WORLD_ITEM_REACHABLE, 0); } @@ -6930,6 +6930,7 @@ BOOLEAN AutoPlaceObjectToWorld(SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, INT8 b if( pInventoryPoolList[i].bVisible == 1 && pInventoryPoolList[i].fExists == TRUE && pInventoryPoolList[i].usFlags & WORLD_ITEM_REACHABLE ) { sGridNo = pInventoryPoolList[i].sGridNo; + bLevel = pInventoryPoolList[i].ubLevel; break; } } @@ -6940,7 +6941,7 @@ BOOLEAN AutoPlaceObjectToWorld(SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, INT8 b } fMapPanelDirty = TRUE; - return( AutoPlaceObjectInInventoryStash(pObj, sGridNo) ); + return( AutoPlaceObjectInInventoryStash(pObj, sGridNo, bLevel) ); } else {