From 5eb525dfc0811119f809febaa7dd34a5b262982c Mon Sep 17 00:00:00 2001 From: Robin Eklind Date: Fri, 12 Apr 2019 01:48:02 +0900 Subject: [PATCH 1/3] IdItemOk bin exact --- Source/stores.cpp | 15 +++++++-------- Source/stores.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Source/stores.cpp b/Source/stores.cpp index d948516ab..6496747da 100644 --- a/Source/stores.cpp +++ b/Source/stores.cpp @@ -1590,16 +1590,15 @@ void S_StartStory() // 6A09E0: using guessed type char stextsize; // 6A6BB8: using guessed type int stextscrl; -BOOLEAN IdItemOk(ItemStruct *i) +BOOL IdItemOk(ItemStruct *i) { - BOOLEAN result; // al - - result = 0; - if (i->_itype != -1) { - if (i->_iMagical != ITEM_QUALITY_NORMAL) - result = !i->_iIdentified; + if (i->_itype == -1) { + return FALSE; + } + if (i->_iMagical == ITEM_QUALITY_NORMAL) { + return FALSE; } - return result; + return !i->_iIdentified; } void AddStoreHoldId(ItemStruct itm, int i) diff --git a/Source/stores.h b/Source/stores.h index 435d8aebc..07da28c1a 100644 --- a/Source/stores.h +++ b/Source/stores.h @@ -79,7 +79,7 @@ void S_StartHealer(); void S_ScrollHBuy(int idx); void S_StartHBuy(); void S_StartStory(); -BOOLEAN IdItemOk(ItemStruct *i); +BOOL IdItemOk(ItemStruct *i); void AddStoreHoldId(ItemStruct itm, int i); void S_StartSIdentify(); void S_StartIdShow(); From 98af23a891fe3e532b267c9ebaf7799c92d508e7 Mon Sep 17 00:00:00 2001 From: Robin Eklind Date: Fri, 12 Apr 2019 01:31:18 +0900 Subject: [PATCH 2/3] AddStoreHoldId bin exact --- Source/stores.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/stores.cpp b/Source/stores.cpp index 6496747da..d389c9bfb 100644 --- a/Source/stores.cpp +++ b/Source/stores.cpp @@ -1603,10 +1603,11 @@ BOOL IdItemOk(ItemStruct *i) void AddStoreHoldId(ItemStruct itm, int i) { - qmemcpy(&storehold[storenumh], &itm, sizeof(ItemStruct)); + storehold[storenumh] = itm; storehold[storenumh]._ivalue = 100; storehold[storenumh]._iIvalue = 100; - storehidx[storenumh++] = i; + storehidx[storenumh] = i; + storenumh++; } // 69F108: using guessed type int stextup; // 69F10C: using guessed type int storenumh; From dbe9e4d152b4e254577bc8a64fe3834d83826ae6 Mon Sep 17 00:00:00 2001 From: Robin Eklind Date: Fri, 12 Apr 2019 02:22:40 +0900 Subject: [PATCH 3/3] S_StartSIdentify bin exact Depends on #914 and #913. --- Source/stores.cpp | 72 +++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/Source/stores.cpp b/Source/stores.cpp index d389c9bfb..29d1616c1 100644 --- a/Source/stores.cpp +++ b/Source/stores.cpp @@ -1614,62 +1614,61 @@ void AddStoreHoldId(ItemStruct itm, int i) void S_StartSIdentify() { - ItemStruct itm; // [esp-170h] [ebp-18Ch] - BOOLEAN idok; // [esp+10h] [ebp-Ch] - int i; // [esp+14h] [ebp-8h] + BOOL idok; + int i; - idok = 0; - storenumh = 0; + idok = FALSE; stextsize = 1; + storenumh = 0; for (i = 0; i < 48; i++) storehold[i]._itype = -1; - if (IdItemOk(plr[myplr].InvBody)) { - idok = 1; - qmemcpy(&itm, plr[myplr].InvBody, sizeof(ItemStruct)); - AddStoreHoldId(itm, -1); + if (IdItemOk(&plr[myplr].InvBody[INVLOC_HEAD])) { + idok = TRUE; + AddStoreHoldId(plr[myplr].InvBody[INVLOC_HEAD], -1); } if (IdItemOk(&plr[myplr].InvBody[INVLOC_CHEST])) { - idok = 1; - qmemcpy(&itm, &plr[myplr].InvBody[INVLOC_CHEST], sizeof(ItemStruct)); - AddStoreHoldId(itm, -2); + idok = TRUE; + AddStoreHoldId(plr[myplr].InvBody[INVLOC_CHEST], -2); } if (IdItemOk(&plr[myplr].InvBody[INVLOC_HAND_LEFT])) { - idok = 1; - qmemcpy(&itm, &plr[myplr].InvBody[INVLOC_HAND_LEFT], sizeof(ItemStruct)); - AddStoreHoldId(itm, -3); + idok = TRUE; + AddStoreHoldId(plr[myplr].InvBody[INVLOC_HAND_LEFT], -3); } if (IdItemOk(&plr[myplr].InvBody[INVLOC_HAND_RIGHT])) { - idok = 1; - qmemcpy(&itm, &plr[myplr].InvBody[INVLOC_HAND_RIGHT], sizeof(ItemStruct)); - AddStoreHoldId(itm, -4); + idok = TRUE; + AddStoreHoldId(plr[myplr].InvBody[INVLOC_HAND_RIGHT], -4); } if (IdItemOk(&plr[myplr].InvBody[INVLOC_RING_LEFT])) { - idok = 1; - qmemcpy(&itm, &plr[myplr].InvBody[INVLOC_RING_LEFT], sizeof(ItemStruct)); - AddStoreHoldId(itm, -5); + idok = TRUE; + AddStoreHoldId(plr[myplr].InvBody[INVLOC_RING_LEFT], -5); } if (IdItemOk(&plr[myplr].InvBody[INVLOC_RING_RIGHT])) { - idok = 1; - qmemcpy(&itm, &plr[myplr].InvBody[INVLOC_RING_RIGHT], sizeof(ItemStruct)); - AddStoreHoldId(itm, -6); + idok = TRUE; + AddStoreHoldId(plr[myplr].InvBody[INVLOC_RING_RIGHT], -6); } if (IdItemOk(&plr[myplr].InvBody[INVLOC_AMULET])) { - idok = 1; - qmemcpy(&itm, &plr[myplr].InvBody[INVLOC_AMULET], sizeof(ItemStruct)); - AddStoreHoldId(itm, -7); + idok = TRUE; + AddStoreHoldId(plr[myplr].InvBody[INVLOC_AMULET], -7); } for (i = 0; i < plr[myplr]._pNumInv; i++) { if (IdItemOk(&plr[myplr].InvList[i])) { - idok = 1; - qmemcpy(&itm, &plr[myplr].InvList[i], sizeof(ItemStruct)); - AddStoreHoldId(itm, i); + idok = TRUE; + AddStoreHoldId(plr[myplr].InvList[i], i); } } - if (idok) { + if (!idok) { + stextscrl = 0; + sprintf(tempstr, "You have nothing to identify. Your gold : %i", plr[myplr]._pGold); + AddSText(0, 1, 1, tempstr, COL_GOLD, 0); + AddSLine(3); + AddSLine(21); + AddSText(0, 22, 1, "Back", COL_WHITE, 1); + OffsetSTextY(22, 6); + } else { stextscrl = 1; stextsval = 0; stextsmax = plr[myplr]._pNumInv; @@ -1678,16 +1677,9 @@ void S_StartSIdentify() AddSLine(3); AddSLine(21); S_ScrollSSell(stextsval); - } else { - stextscrl = 0; - sprintf(tempstr, "You have nothing to identify. Your gold : %i", plr[myplr]._pGold); - AddSText(0, 1, 1, tempstr, COL_GOLD, 0); - AddSLine(3); - AddSLine(21); + AddSText(0, 22, 1, "Back", COL_WHITE, 1); + OffsetSTextY(22, 6); } - - AddSText(0, 22, 1, "Back", COL_WHITE, 1); - OffsetSTextY(22, 6); } // 69F10C: using guessed type int storenumh; // 6A09E0: using guessed type char stextsize;