Browse Source

Deduplicate PItem and DItem

pull/3994/head
ephphatha 4 years ago committed by Anders Jenbo
parent
commit
db1d776539
  1. 4
      Source/controls/plrctrls.cpp
  2. 2
      Source/diablo.cpp
  3. 6
      Source/inv.cpp
  4. 14
      Source/items.cpp
  5. 102
      Source/msg.cpp
  6. 3
      Source/msg.h
  7. 4
      Source/player.cpp

4
Source/controls/plrctrls.cpp

@ -1588,12 +1588,12 @@ bool TryDropItem()
if (currlevel == 0) {
if (UseItemOpensHive(myPlayer.HoldItem, myPlayer.position.tile)) {
NetSendCmdPItem(true, CMD_PUTITEM, { 79, 61 });
NetSendCmdPItem(true, CMD_PUTITEM, { 79, 61 }, myPlayer.HoldItem);
NewCursor(CURSOR_HAND);
return true;
}
if (UseItemOpensCrypt(myPlayer.HoldItem, myPlayer.position.tile)) {
NetSendCmdPItem(true, CMD_PUTITEM, { 35, 20 });
NetSendCmdPItem(true, CMD_PUTITEM, { 35, 20 }, myPlayer.HoldItem);
NewCursor(CURSOR_HAND);
return true;
}

2
Source/diablo.cpp

@ -331,7 +331,7 @@ void LeftMouseDown(int wParam)
CheckSBook();
} else if (pcurs >= CURSOR_FIRSTITEM) {
if (TryInvPut()) {
NetSendCmdPItem(true, CMD_PUTITEM, cursPosition);
NetSendCmdPItem(true, CMD_PUTITEM, cursPosition, Players[MyPlayerId].HoldItem);
NewCursor(CURSOR_HAND);
}
} else {

6
Source/inv.cpp

@ -1645,7 +1645,7 @@ void InvGetItem(int pnum, int ii)
auto &player = Players[pnum];
if (MyPlayerId == pnum && pcurs >= CURSOR_FIRSTITEM)
NetSendCmdPItem(true, CMD_SYNCPUTITEM, player.position.tile);
NetSendCmdPItem(true, CMD_SYNCPUTITEM, player.position.tile, player.HoldItem);
item._iCreateInfo &= ~CF_PREGEN;
player.HoldItem = item;
@ -1720,7 +1720,7 @@ void AutoGetItem(int pnum, Item *item, int ii)
}
player.HoldItem = *item;
RespawnItem(item, true);
NetSendCmdPItem(true, CMD_RESPAWNITEM, item->position);
NetSendCmdPItem(true, CMD_RESPAWNITEM, item->position, player.HoldItem);
player.HoldItem._itype = ItemType::None;
}
@ -2211,7 +2211,7 @@ bool DropItemBeforeTrig()
return false;
}
NetSendCmdPItem(true, CMD_PUTITEM, cursPosition);
NetSendCmdPItem(true, CMD_PUTITEM, cursPosition, Players[MyPlayerId].HoldItem);
NewCursor(CURSOR_HAND);
return true;
}

14
Source/items.cpp

@ -1578,7 +1578,7 @@ void SetupBaseItem(Point position, int idx, bool onlygood, bool sendmsg, bool de
SetupAllItems(item, idx, AdvanceRndSeed(), 2 * curlv, 1, onlygood, false, delta);
if (sendmsg)
NetSendCmdDItem(false, ii);
NetSendCmdPItem(false, CMD_DROPITEM, item.position, item);
if (delta)
DeltaAddItem(ii);
}
@ -2413,7 +2413,7 @@ void CreateMagicItem(Point position, int lvl, ItemType itemType, int imid, int i
GetSuperItemSpace(position, ii);
if (sendmsg)
NetSendCmdDItem(false, ii);
NetSendCmdPItem(false, CMD_DROPITEM, item.position, item);
if (delta)
DeltaAddItem(ii);
}
@ -3319,7 +3319,7 @@ void SpawnItem(Monster &monster, Point position, bool sendmsg)
SetupAllItems(item, idx, AdvanceRndSeed(), mLevel, uper, onlygood, false, false);
if (sendmsg)
NetSendCmdDItem(false, ii);
NetSendCmdPItem(false, CMD_DROPITEM, item.position, item);
}
void CreateRndItem(Point position, bool onlygood, bool sendmsg, bool delta)
@ -3341,7 +3341,7 @@ void CreateRndUseful(Point position, bool sendmsg)
SetupAllUseful(item, AdvanceRndSeed(), curlv);
if (sendmsg)
NetSendCmdDItem(false, ii);
NetSendCmdPItem(false, CMD_DROPITEM, item.position, item);
}
void CreateTypeItem(Point position, bool onlygood, ItemType itemType, int imisc, bool sendmsg, bool delta)
@ -4584,7 +4584,7 @@ void CreateSpellBook(Point position, spell_id ispell, bool sendmsg, bool delta)
GetSuperItemSpace(position, ii);
if (sendmsg)
NetSendCmdDItem(false, ii);
NetSendCmdPItem(false, CMD_DROPITEM, item.position, item);
if (delta)
DeltaAddItem(ii);
}
@ -4710,7 +4710,7 @@ std::string DebugSpawnItem(std::string itemName)
}
item._iIdentified = true;
NetSendCmdDItem(false, ii);
NetSendCmdPItem(false, CMD_DROPITEM, item.position, item);
return fmt::format("Item generated successfully - iterations: {:d}", i);
}
@ -4787,7 +4787,7 @@ std::string DebugSpawnUniqueItem(std::string itemName)
}
item._iIdentified = true;
NetSendCmdDItem(false, ii);
NetSendCmdPItem(false, CMD_DROPITEM, item.position, item);
return fmt::format("Item generated successfully - iterations: {:d}", i);
}
#endif

102
Source/msg.cpp

@ -2547,42 +2547,41 @@ void NetSendCmdGItem(bool bHiPri, _cmd_id bCmd, BYTE mast, BYTE pnum, BYTE ii)
NetSendLoPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));
}
void NetSendCmdPItem(bool bHiPri, _cmd_id bCmd, Point position)
void NetSendCmdPItem(bool bHiPri, _cmd_id bCmd, Point position, const Item &item)
{
TCmdPItem cmd;
TCmdPItem cmd {};
cmd.bCmd = bCmd;
cmd.x = position.x;
cmd.y = position.y;
auto &myPlayer = Players[MyPlayerId];
cmd.wIndx = myPlayer.HoldItem.IDidx;
if (myPlayer.HoldItem.IDidx == IDI_EAR) {
cmd.wCI = myPlayer.HoldItem._iName[8] | (myPlayer.HoldItem._iName[7] << 8);
cmd.dwSeed = myPlayer.HoldItem._iName[12] | ((myPlayer.HoldItem._iName[11] | ((myPlayer.HoldItem._iName[10] | (myPlayer.HoldItem._iName[9] << 8)) << 8)) << 8);
cmd.bId = myPlayer.HoldItem._iName[13];
cmd.bDur = myPlayer.HoldItem._iName[14];
cmd.bMDur = myPlayer.HoldItem._iName[15];
cmd.bCh = myPlayer.HoldItem._iName[16];
cmd.bMCh = myPlayer.HoldItem._iName[17];
cmd.wValue = myPlayer.HoldItem._ivalue | (myPlayer.HoldItem._iName[18] << 8) | ((myPlayer.HoldItem._iCurs - ICURS_EAR_SORCERER) << 6);
cmd.dwBuff = myPlayer.HoldItem._iName[22] | ((myPlayer.HoldItem._iName[21] | ((myPlayer.HoldItem._iName[20] | (myPlayer.HoldItem._iName[19] << 8)) << 8)) << 8);
cmd.wIndx = item.IDidx;
if (item.IDidx == IDI_EAR) {
cmd.wCI = item._iName[8] | (item._iName[7] << 8);
cmd.dwSeed = item._iName[12] | ((item._iName[11] | ((item._iName[10] | (item._iName[9] << 8)) << 8)) << 8);
cmd.bId = item._iName[13];
cmd.bDur = item._iName[14];
cmd.bMDur = item._iName[15];
cmd.bCh = item._iName[16];
cmd.bMCh = item._iName[17];
cmd.wValue = item._ivalue | (item._iName[18] << 8) | ((item._iCurs - ICURS_EAR_SORCERER) << 6);
cmd.dwBuff = item._iName[22] | ((item._iName[21] | ((item._iName[20] | (item._iName[19] << 8)) << 8)) << 8);
} else {
cmd.wCI = myPlayer.HoldItem._iCreateInfo;
cmd.dwSeed = myPlayer.HoldItem._iSeed;
cmd.bId = myPlayer.HoldItem._iIdentified ? 1 : 0;
cmd.bDur = myPlayer.HoldItem._iDurability;
cmd.bMDur = myPlayer.HoldItem._iMaxDur;
cmd.bCh = myPlayer.HoldItem._iCharges;
cmd.bMCh = myPlayer.HoldItem._iMaxCharges;
cmd.wValue = myPlayer.HoldItem._ivalue;
cmd.wToHit = myPlayer.HoldItem._iPLToHit;
cmd.wMaxDam = myPlayer.HoldItem._iMaxDam;
cmd.bMinStr = myPlayer.HoldItem._iMinStr;
cmd.bMinMag = myPlayer.HoldItem._iMinMag;
cmd.bMinDex = myPlayer.HoldItem._iMinDex;
cmd.bAC = myPlayer.HoldItem._iAC;
cmd.dwBuff = myPlayer.HoldItem.dwBuff;
cmd.wCI = item._iCreateInfo;
cmd.dwSeed = item._iSeed;
cmd.bId = item._iIdentified ? 1 : 0;
cmd.bDur = item._iDurability;
cmd.bMDur = item._iMaxDur;
cmd.bCh = item._iCharges;
cmd.bMCh = item._iMaxCharges;
cmd.wValue = item._ivalue;
cmd.wToHit = item._iPLToHit;
cmd.wMaxDam = item._iMaxDam;
cmd.bMinStr = item._iMinStr;
cmd.bMinMag = item._iMinMag;
cmd.bMinDex = item._iMinDex;
cmd.bAC = item._iAC;
cmd.dwBuff = item.dwBuff;
}
if (bHiPri)
@ -2623,49 +2622,6 @@ void NetSendCmdDelItem(bool bHiPri, BYTE bLoc)
NetSendLoPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));
}
void NetSendCmdDItem(bool bHiPri, int ii)
{
TCmdPItem cmd;
cmd.bCmd = CMD_DROPITEM;
cmd.x = Items[ii].position.x;
cmd.y = Items[ii].position.y;
cmd.wIndx = Items[ii].IDidx;
if (Items[ii].IDidx == IDI_EAR) {
cmd.wCI = Items[ii]._iName[8] | (Items[ii]._iName[7] << 8);
cmd.dwSeed = Items[ii]._iName[12] | ((Items[ii]._iName[11] | ((Items[ii]._iName[10] | (Items[ii]._iName[9] << 8)) << 8)) << 8);
cmd.bId = Items[ii]._iName[13];
cmd.bDur = Items[ii]._iName[14];
cmd.bMDur = Items[ii]._iName[15];
cmd.bCh = Items[ii]._iName[16];
cmd.bMCh = Items[ii]._iName[17];
cmd.wValue = Items[ii]._ivalue | (Items[ii]._iName[18] << 8) | ((Items[ii]._iCurs - ICURS_EAR_SORCERER) << 6);
cmd.dwBuff = Items[ii]._iName[22] | ((Items[ii]._iName[21] | ((Items[ii]._iName[20] | (Items[ii]._iName[19] << 8)) << 8)) << 8);
} else {
cmd.wCI = Items[ii]._iCreateInfo;
cmd.dwSeed = Items[ii]._iSeed;
cmd.bId = Items[ii]._iIdentified ? 1 : 0;
cmd.bDur = Items[ii]._iDurability;
cmd.bMDur = Items[ii]._iMaxDur;
cmd.bCh = Items[ii]._iCharges;
cmd.bMCh = Items[ii]._iMaxCharges;
cmd.wValue = Items[ii]._ivalue;
cmd.wToHit = Items[ii]._iPLToHit;
cmd.wMaxDam = Items[ii]._iMaxDam;
cmd.bMinStr = Items[ii]._iMinStr;
cmd.bMinMag = Items[ii]._iMinMag;
cmd.bMinDex = Items[ii]._iMinDex;
cmd.bAC = Items[ii]._iAC;
cmd.dwBuff = Items[ii].dwBuff;
}
if (bHiPri)
NetSendHiPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));
else
NetSendLoPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));
}
void NetSendCmdDamage(bool bHiPri, uint8_t bPlr, uint32_t dwDam)
{
TCmdDamage cmd;

3
Source/msg.h

@ -782,10 +782,9 @@ void NetSendCmdParam3(bool bHiPri, _cmd_id bCmd, uint16_t wParam1, uint16_t wPar
void NetSendCmdParam4(bool bHiPri, _cmd_id bCmd, uint16_t wParam1, uint16_t wParam2, uint16_t wParam3, uint16_t wParam4);
void NetSendCmdQuest(bool bHiPri, const Quest &quest);
void NetSendCmdGItem(bool bHiPri, _cmd_id bCmd, BYTE mast, BYTE pnum, BYTE ii);
void NetSendCmdPItem(bool bHiPri, _cmd_id bCmd, Point position);
void NetSendCmdPItem(bool bHiPri, _cmd_id bCmd, Point position, const Item &item);
void NetSendCmdChItem(bool bHiPri, BYTE bLoc);
void NetSendCmdDelItem(bool bHiPri, BYTE bLoc);
void NetSendCmdDItem(bool bHiPri, int ii);
void NetSendCmdDamage(bool bHiPri, uint8_t bPlr, uint32_t dwDam);
void NetSendCmdMonDmg(bool bHiPri, uint16_t wMon, uint32_t dwDam);
void NetSendCmdString(uint32_t pmask, const char *pszStr);

4
Source/player.cpp

@ -563,7 +563,7 @@ void DeadItem(Player &player, Item *itm, Displacement direction)
if (direction != Displacement { 0, 0 } && ItemSpaceOk(target)) {
RespawnDeadItem(itm, target);
player.HoldItem = *itm;
NetSendCmdPItem(false, CMD_RESPAWNITEM, target);
NetSendCmdPItem(false, CMD_RESPAWNITEM, target, player.HoldItem);
return;
}
@ -574,7 +574,7 @@ void DeadItem(Player &player, Item *itm, Displacement direction)
if (ItemSpaceOk(next)) {
RespawnDeadItem(itm, next);
player.HoldItem = *itm;
NetSendCmdPItem(false, CMD_RESPAWNITEM, next);
NetSendCmdPItem(false, CMD_RESPAWNITEM, next, player.HoldItem);
return;
}
}

Loading…
Cancel
Save