changeset 2024:bb0da61e4a7e

substract item and AddItem for Alexis fix
author Ritor1
date Sat, 16 Nov 2013 00:02:24 +0600
parents beb97b20c3ed
children 4000f8184c29
files Events.cpp Party.cpp
diffstat 2 files changed, 25 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/Events.cpp	Thu Nov 14 17:25:09 2013 +0600
+++ b/Events.cpp	Sat Nov 16 00:02:24 2013 +0600
@@ -954,19 +954,23 @@
             v4 = v124;
             break;
           }
-          v67 = (int)pPlayers[uActiveCharacter]->pInventoryMatrix.data();
+          //v67 = (int)pPlayers[uActiveCharacter]->pInventoryMatrix.data();
           for ( v65 = 0; v65 < 126; ++v65 )
           {
-            if ( (int)&pPlayers[uActiveCharacter]->pInventoryItemList[v67] == pValue )
+            v67 = pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex(&pPlayers[uActiveCharacter]->pInventoryMatrix[v65]);
+			if (v67)
+			{
+            if ( pPlayers[uActiveCharacter]->pInventoryItemList[v67 - 1].uItemID == pValue )
             {
-              pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(v65);
+              pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pPlayers[uActiveCharacter]->pInventoryMatrix[v65]);
               ++curr_seq_num;
               v4 = v124;
-              break;
+              goto substract;
             }
-            v67 += 4;
+			}
+            //v67 += 4;
           }
-          while ( (signed int)v65 < 126 );
+          //while ( (signed int)v65 < 126 );
           v69 = (int)&pPlayers[uActiveCharacter]->pEquipment;
           for ( v68 = 0; v68 < 16; ++v68 )
           {
@@ -981,15 +985,19 @@
           }
           for (int i = 1; i < 5; i++)
           {
-            v72 = (int)pPlayers[i]->pInventoryMatrix.data();
+            //v72 = (int)pPlayers[i]->pInventoryMatrix.data();
             for ( int v71 = 0; v71 < 126; ++v71 )
             {
-              if ( (int)&pPlayers[i]->pInventoryItemList[v72] == pValue )
+              v72 = pPlayers[i]->GetItemIDAtInventoryIndex(&pPlayers[i]->pInventoryMatrix[v71]);
+			  if (v72)
+			  {
+              if ( pPlayers[i]->pInventoryItemList[v72 - 1].uItemID == pValue )
               {
-                pPlayers[i]->RemoveItemAtInventoryIndex(v71);
-                break;
+                pPlayers[i]->RemoveItemAtInventoryIndex(pPlayers[i]->pInventoryMatrix[v71]);
+                goto substract;
               }
-              v72 += 4;
+			  }
+              //v72 += 4;
             }
             v73 = 0;
             v74 = (int)&pPlayers[i]->pEquipment;
@@ -1031,6 +1039,7 @@
           pPlayer = &pParty->pPlayers[player_choose];
           pPlayer->SubtractVariable((enum VariableType)EVT_WORD(_evt->v5), pValue);
         }
+substract:
         ++curr_seq_num;
         v4 = v124;
         break;
--- a/Party.cpp	Thu Nov 14 17:25:09 2013 +0600
+++ b/Party.cpp	Sat Nov 16 00:02:24 2013 +0600
@@ -1120,9 +1120,13 @@
     v7 = pIcons_LOD->LoadTexturePtr(v5, TEXTURE_16BIT_PALETTE);
     v21 = areWeLoadingTexture;
     v8 = 0;
+    uint current_player = uActiveCharacter;
     for (int i = 0; i < 4; i++)
     {
-      v9 = ::pPlayers[(uActiveCharacter + i) % 4];  //start with current active player, then cycle right if item won't fit
+     current_player = current_player + i;
+     if ( current_player > 4 )
+       current_player = current_player - 4;
+      v9 = ::pPlayers[current_player];
       v10 = v9->AddItem(-1, pItem->uItemID);
       if ( v10 )
       {