Browse Source

♻️ Pass ItemStruct on inv AutoGetItem function

pull/1407/head
Juliano Leal Goncalves 5 years ago committed by Anders Jenbo
parent
commit
e33ea53086
  1. 18
      Source/inv.cpp
  2. 2
      Source/inv.h
  3. 6
      Source/msg.cpp

18
Source/inv.cpp

@ -2150,7 +2150,7 @@ void InvGetItem(int pnum, ItemStruct *item, int ii)
SetCursor_(plr[pnum].HoldItem._iCurs + CURSOR_FIRSTITEM);
}
void AutoGetItem(int pnum, int ii)
void AutoGetItem(int pnum, ItemStruct *item, int ii)
{
int i, idx;
int w, h;
@ -2165,11 +2165,11 @@ void AutoGetItem(int pnum, int ii)
dropGoldValue = 0;
}
if (dItem[items[ii]._ix][items[ii]._iy] == 0)
if (dItem[item->_ix][item->_iy] == 0)
return;
items[ii]._iCreateInfo &= ~CF_PREGEN;
plr[pnum].HoldItem = items[ii]; /// BUGFIX: overwrites cursor item, allowing for belt dupe bug
item->_iCreateInfo &= ~CF_PREGEN;
plr[pnum].HoldItem = *item; /// BUGFIX: overwrites cursor item, allowing for belt dupe bug
CheckQuestItem(pnum);
CheckBookLevel(pnum);
CheckItemStats(pnum);
@ -2177,8 +2177,8 @@ void AutoGetItem(int pnum, int ii)
if (plr[pnum].HoldItem._itype == ITYPE_GOLD) {
done = GoldAutoPlace(pnum);
if (!done) {
items[ii]._ivalue = plr[pnum].HoldItem._ivalue;
SetPlrHandGoldCurs(&items[ii]);
item->_ivalue = plr[pnum].HoldItem._ivalue;
SetPlrHandGoldCurs(item);
}
} else {
done = AutoEquipEnabled(plr[pnum], plr[pnum].HoldItem) && AutoEquip(pnum, plr[pnum].HoldItem);
@ -2210,9 +2210,9 @@ void AutoGetItem(int pnum, int ii)
PlaySFX(random_(0, 3) + PS_WARR14);
}
}
plr[pnum].HoldItem = items[ii];
RespawnItem(&items[ii], TRUE);
NetSendCmdPItem(TRUE, CMD_RESPAWNITEM, items[ii]._ix, items[ii]._iy);
plr[pnum].HoldItem = *item;
RespawnItem(item, TRUE);
NetSendCmdPItem(TRUE, CMD_RESPAWNITEM, item->_ix, item->_iy);
plr[pnum].HoldItem._itype = ITYPE_NONE;
}

2
Source/inv.h

@ -53,7 +53,7 @@ void CheckInvItem(bool isShiftHeld = false);
void CheckInvScrn(bool isShiftHeld);
void CheckItemStats(int pnum);
void InvGetItem(int pnum, ItemStruct *item, int ii);
void AutoGetItem(int pnum, int ii);
void AutoGetItem(int pnum, ItemStruct *item, int ii);
int FindGetItem(int idx, WORD ci, int iseed);
void SyncGetItem(int x, int y, int idx, WORD ci, int iseed);
BOOL CanPut(int x, int y);

6
Source/msg.cpp

@ -1461,7 +1461,7 @@ static DWORD On_REQUESTAGITEM(TCmd *pCmd, int pnum)
if (p->bPnum != myplr)
SyncGetItem(p->x, p->y, p->wIndx, p->wCI, p->dwSeed);
else
AutoGetItem(myplr, p->bCursitem);
AutoGetItem(myplr, &items[p->bCursitem], p->bCursitem);
SetItemRecord(p->dwSeed, p->wCI, p->wIndx);
} else if (!NetSendCmdReq2(CMD_REQUESTAGITEM, myplr, p->bPnum, p))
NetSendCmdExtra(p);
@ -1485,9 +1485,9 @@ static DWORD On_AGETITEM(TCmd *pCmd, int pnum)
if (currlevel != p->bLevel) {
int ii = SyncPutItem(myplr, plr[myplr]._px, plr[myplr]._py, p->wIndx, p->wCI, p->dwSeed, p->bId, p->bDur, p->bMDur, p->bCh, p->bMCh, p->wValue, p->dwBuff, p->wToHit, p->wMaxDam, p->bMinStr, p->bMinMag, p->bMinDex, p->bAC);
if (ii != -1)
AutoGetItem(myplr, ii);
AutoGetItem(myplr, &items[ii], ii);
} else
AutoGetItem(myplr, p->bCursitem);
AutoGetItem(myplr, &items[p->bCursitem], p->bCursitem);
} else
SyncGetItem(p->x, p->y, p->wIndx, p->wCI, p->dwSeed);
}

Loading…
Cancel
Save