MCPcopy Create free account
hub / github.com/diasurgical/DevilutionX / DeltaGetItem

Function DeltaGetItem

Source/msg.cpp:734–790  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

732}
733
734bool DeltaGetItem(const TCmdGItem &message, uint8_t bLevel)
735{
736 if (!gbIsMultiplayer)
737 return true;
738
739 DLevel &deltaLevel = GetDeltaLevel(bLevel);
740
741 for (TCmdPItem &item : deltaLevel.item) {
742 if (item.bCmd == CMD_INVALID || item.def.wIndx != message.def.wIndx
743 || item.def.wCI != message.def.wCI || item.def.dwSeed != message.def.dwSeed) {
744 continue;
745 }
746
747 if (item.bCmd == TCmdPItem::PickedUpItem) {
748 return true;
749 }
750 if (item.bCmd == TCmdPItem::FloorItem) {
751 item.bCmd = TCmdPItem::PickedUpItem;
752 return true;
753 }
754 if (item.bCmd == TCmdPItem::DroppedItem) {
755 item.bCmd = CMD_INVALID;
756 return true;
757 }
758
759 app_fatal("delta:1");
760 }
761
762 if ((message.def.wCI & CF_PREGEN) == 0)
763 return false;
764
765 for (TCmdPItem &delta : deltaLevel.item) {
766 if (delta.bCmd == CMD_INVALID) {
767 delta.bCmd = TCmdPItem::PickedUpItem;
768 delta.x = message.x;
769 delta.y = message.y;
770 delta.def.wIndx = message.def.wIndx;
771 delta.def.wCI = message.def.wCI;
772 delta.def.dwSeed = message.def.dwSeed;
773 if (message.def.wIndx == IDI_EAR) {
774 delta.ear.bCursval = message.ear.bCursval;
775 CopyUtf8(delta.ear.heroname, message.ear.heroname, sizeof(delta.ear.heroname));
776 } else {
777 delta.item.bId = message.item.bId;
778 delta.item.bDur = message.item.bDur;
779 delta.item.bMDur = message.item.bMDur;
780 delta.item.bCh = message.item.bCh;
781 delta.item.bMCh = message.item.bMCh;
782 delta.item.wValue = message.item.wValue;
783 delta.item.dwBuff = message.item.dwBuff;
784 delta.item.wToHit = message.item.wToHit;
785 }
786 break;
787 }
788 }
789 return true;
790}
791

Callers 3

OnGetItemFunction · 0.85
OnAutoGetItemFunction · 0.85
OnItemExtraFunction · 0.85

Calls 2

app_fatalFunction · 0.85
CopyUtf8Function · 0.85

Tested by

no test coverage detected