From abacbb485ce8cc98adfbce3ebdb233aabbf7ba34 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Thu, 11 Apr 2019 20:18:37 +0200 Subject: [PATCH 1/4] Clean up SwapItem --- Source/inv.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Source/inv.cpp b/Source/inv.cpp index ad439434c..1b7476e80 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -799,14 +799,13 @@ int WeaponAutoPlace(int pnum) int SwapItem(ItemStruct *a, ItemStruct *b) { - int v2; // eax - ItemStruct h; // [esp+8h] [ebp-170h] - - qmemcpy(&h, a, sizeof(h)); - v2 = h._iCurs; - qmemcpy(a, b, sizeof(ItemStruct)); - qmemcpy(b, &h, sizeof(ItemStruct)); - return v2 + CURSOR_FIRSTITEM; + ItemStruct h; + + h = *a; + *a = *b; + *b = h; + + return h._iCurs + CURSOR_FIRSTITEM; } void CheckInvPaste(int pnum, int mx, int my) From e705511d226638c0db5bd8ad73bc3045a174639b Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Thu, 11 Apr 2019 21:12:03 +0200 Subject: [PATCH 2/4] Clean up WeaponAutoPlace --- Source/inv.cpp | 59 +++++++++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/Source/inv.cpp b/Source/inv.cpp index 1b7476e80..02e82d6de 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -760,41 +760,32 @@ int GoldAutoPlace(int pnum) int WeaponAutoPlace(int pnum) { - int v1; // edi - int v2; // eax - int v3; // ecx - ItemStruct *v4; // esi - ItemStruct *v5; // edi - int result; // eax - - v1 = pnum; - if (plr[pnum].HoldItem._iLoc == ILOC_TWOHAND) { - if (plr[v1].InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_NONE || plr[v1].InvBody[INVLOC_HAND_RIGHT]._itype != ITYPE_NONE) - return 0; - LABEL_12: - NetSendCmdChItem(TRUE, 4u); - v4 = &plr[v1].HoldItem; - v5 = &plr[v1].InvBody[INVLOC_HAND_LEFT]; - goto LABEL_13; - } - v2 = plr[v1].InvBody[INVLOC_HAND_LEFT]._itype; - if (v2 != ITYPE_NONE && plr[v1].InvBody[INVLOC_HAND_LEFT]._iClass == 1) - return 0; - v3 = plr[v1].InvBody[INVLOC_HAND_RIGHT]._itype; - if (v3 != ITYPE_NONE && plr[v1].InvBody[INVLOC_HAND_RIGHT]._iClass == 1) - return 0; - if (v2 == ITYPE_NONE) - goto LABEL_12; - if (v3 == ITYPE_NONE && plr[v1].InvBody[INVLOC_HAND_LEFT]._iLoc != ILOC_TWOHAND) { - NetSendCmdChItem(TRUE, 5u); - v4 = &plr[v1].HoldItem; - v5 = &plr[v1].InvBody[INVLOC_HAND_RIGHT]; - LABEL_13: - result = 1; - qmemcpy(v5, v4, sizeof(ItemStruct)); - return result; + if (plr[pnum].HoldItem._iLoc != ILOC_TWOHAND) { + if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iClass == ICLASS_WEAPON) + return FALSE; + if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype != ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iClass == ICLASS_WEAPON) + return FALSE; + if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE) { + NetSendCmdChItem(TRUE, INVLOC_HAND_LEFT); + plr[pnum].InvBody[INVLOC_HAND_LEFT] = plr[pnum].HoldItem; + return TRUE; + } + if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iLoc != ILOC_TWOHAND) { + NetSendCmdChItem(TRUE, INVLOC_HAND_RIGHT); + plr[pnum].InvBody[INVLOC_HAND_RIGHT] = plr[pnum].HoldItem; + return TRUE; + } + } else { + if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE) { + NetSendCmdChItem(TRUE, INVLOC_HAND_LEFT); + plr[pnum].InvBody[INVLOC_HAND_LEFT] = plr[pnum].HoldItem; + return TRUE; + } else { + return FALSE; + } } - return 0; + + return FALSE; } int SwapItem(ItemStruct *a, ItemStruct *b) From 11d625cf5a22badf371e4ccded8b10cc4ab0f8ea Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Thu, 11 Apr 2019 21:18:03 +0200 Subject: [PATCH 3/4] Clean up InvGetItem --- Source/inv.cpp | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/Source/inv.cpp b/Source/inv.cpp index 02e82d6de..30d1f518c 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -1743,42 +1743,33 @@ void CheckQuestItem(int pnum) void InvGetItem(int pnum, int ii) { - int v2; // ebp - int v3; // edx - int v4; // ecx - int v5; // ecx - int pnuma; // [esp+4h] [ebp-8h] - int v7; // [esp+8h] [ebp-4h] - - v7 = ii; - pnuma = pnum; + int i; + if (dropGoldFlag) { dropGoldFlag = FALSE; dropGoldValue = 0; } - v2 = ii; + if (dItem[item[ii]._ix][item[ii]._iy]) { if (myplr == pnum && pcurs >= CURSOR_FIRSTITEM) NetSendCmdPItem(TRUE, CMD_SYNCPUTITEM, plr[myplr].WorldX, plr[myplr].WorldY); - _HIBYTE(item[v2]._iCreateInfo) &= 0x7Fu; - qmemcpy(&plr[pnuma].HoldItem, &item[v2], sizeof(plr[pnuma].HoldItem)); - CheckQuestItem(pnuma); - CheckBookLevel(pnuma); - CheckItemStats(pnuma); - v3 = 0; - dItem[item[v2]._ix][item[v2]._iy] = 0; - while (v3 < numitems) { - v4 = itemactive[v3]; - if (v4 == v7) { - DeleteItem(v4, v3); - v3 = 0; + item[ii]._iCreateInfo &= ~0x8000; + plr[pnum].HoldItem = item[ii]; + CheckQuestItem(pnum); + CheckBookLevel(pnum); + CheckItemStats(pnum); + dItem[item[ii]._ix][item[ii]._iy] = 0; + i = 0; + while (i < numitems) { + if (itemactive[i] == ii) { + DeleteItem(itemactive[i], i); + i = 0; } else { - ++v3; + i++; } } - v5 = plr[pnuma].HoldItem._iCurs; pcursitem = -1; - SetCursor_(v5 + CURSOR_FIRSTITEM); + SetCursor_(plr[pnum].HoldItem._iCurs + CURSOR_FIRSTITEM); } } // 4B8CC0: using guessed type char pcursitem; From 8d7cb9e2fe0b7a5ad78763b530dffa4ac5cf9664 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Fri, 12 Apr 2019 02:16:55 +0200 Subject: [PATCH 4/4] Clean up WeaponAutoPlace --- Source/inv.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Source/inv.cpp b/Source/inv.cpp index 30d1f518c..f8b3ce0ce 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -775,14 +775,10 @@ int WeaponAutoPlace(int pnum) plr[pnum].InvBody[INVLOC_HAND_RIGHT] = plr[pnum].HoldItem; return TRUE; } - } else { - if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE) { - NetSendCmdChItem(TRUE, INVLOC_HAND_LEFT); - plr[pnum].InvBody[INVLOC_HAND_LEFT] = plr[pnum].HoldItem; - return TRUE; - } else { - return FALSE; - } + } else if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE) { + NetSendCmdChItem(TRUE, INVLOC_HAND_LEFT); + plr[pnum].InvBody[INVLOC_HAND_LEFT] = plr[pnum].HoldItem; + return TRUE; } return FALSE;