diff --git a/GameVersion.cpp b/GameVersion.cpp index e6a28080..40b9a817 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -55,8 +55,8 @@ #endif -CHAR8 czVersionNumber[16] = { "Build 19.08.14" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 19.08.20" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; -CHAR16 zRevisionNumber[16] = { L"Revision 8689" }; +CHAR16 zRevisionNumber[16] = { L"Revision 8690" }; // SAVE_GAME_VERSION is defined in header, change it there diff --git a/Strategic/Map Screen Interface Map Inventory.cpp b/Strategic/Map Screen Interface Map Inventory.cpp index 007dd214..a31a9cc6 100644 --- a/Strategic/Map Screen Interface Map Inventory.cpp +++ b/Strategic/Map Screen Interface Map Inventory.cpp @@ -2702,6 +2702,8 @@ BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo, IN pInventoryPoolList[cnt].bVisible = 1; pInventoryPoolList[cnt].fExists = TRUE; } + if(sGridNo == -1) + pInventoryPoolList[cnt].usFlags |= WORLD_ITEM_GRIDNO_NOT_SET_USE_ENTRY_POINT; } else { diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index 19c90b31..9b542901 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -7059,8 +7059,20 @@ BOOLEAN AutoPlaceObjectToWorld(SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, INT8 b if(pObj->exists() == false) return FALSE; - INT32 sGridNo = pSoldier?pSoldier->sGridNo:0; - INT8 bLevel = pSoldier?pSoldier->pathing.bLevel:0; + // silversurfer: Bad idea. Our pSoldier always has sGridNo set but it could be from a previous sector so the tile is completely irrelevant if the sector isn't the current merc sector. + // The same applies to bLevel. So before we assign anything we need to check if the merc sector is loaded. + // INT32 sGridNo = pSoldier?pSoldier->sGridNo:0; + // INT8 bLevel = pSoldier?pSoldier->pathing.bLevel:0; + + INT32 sGridNo = -1; + INT8 bLevel = 0; + + // is this sector loaded? + if ( pSoldier && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) ) + { + sGridNo = pSoldier->sGridNo; + bLevel = pSoldier->pathing.bLevel; + } if( guiCurrentScreen == MAP_SCREEN ) { @@ -7088,6 +7100,8 @@ BOOLEAN AutoPlaceObjectToWorld(SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, INT8 b CreateDestroyMapInventoryPoolButtons(FALSE); } + // silversurfer: No, let the game handle item placement by setting WORLD_ITEM_GRIDNO_NOT_SET_USE_ENTRY_POINT in function AutoPlaceObjectInInventoryStash(). + /* // set a grid no for item from mercs with invalid grid no in sector inventory, e.g. merc arriving in sector with a different tactical map loaded if(!GridNoOnVisibleWorldTile(sGridNo)) { @@ -7105,7 +7119,7 @@ BOOLEAN AutoPlaceObjectToWorld(SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, INT8 b // empty sector to use the center grid no of the loaded tactical sector, hope that it's accessible if(!GridNoOnVisibleWorldTile(sGridNo)) sGridNo = gMapInformation.sCenterGridNo; - } + }*/ fMapPanelDirty = TRUE; return( AutoPlaceObjectInInventoryStash(pObj, sGridNo, bLevel) );