diff --git a/Source/msg.cpp b/Source/msg.cpp index a6e6b5eca..044651e0c 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -1721,48 +1721,34 @@ int __fastcall On_PUTITEM(TCmdPItem *pCmd, int pnum) void __fastcall delta_put_item(TCmdPItem *pI, int x, int y, BYTE bLevel) { - TCmdPItem *v4; // ebx - int v5; // eax - DLevel *v6; // esi - DLevel *v7; // edi - char v8; // al - signed int v9; // eax - char v10; // [esp+Ch] [ebp-4h] - signed int bLevela; // [esp+1Ch] [ebp+Ch] - - v10 = x; - v4 = pI; + int i; + TCmdPItem *pD; + if (gbMaxPlayers != 1) { - v5 = bLevel; - bLevela = 0; - v6 = &sgLevels[v5]; - v7 = &sgLevels[v5]; - do { - v8 = v7->item[0].bCmd; - if (v7->item[0].bCmd != 1 - && v8 != -1 - && v7->item[0].wIndx == v4->wIndx - && v7->item[0].wCI == v4->wCI - && v7->item[0].dwSeed == v4->dwSeed) { - if (v8 == 2) + for (i = 0; i < MAXITEMS; i++) { + pD = &sgLevels[bLevel].item[i]; + if (pD->bCmd != CMD_WALKXY + && pD->bCmd != 0xFF + && pD->wIndx == pI->wIndx + && pD->wCI == pI->wCI + && pD->dwSeed == pI->dwSeed) { + if (pD->bCmd == CMD_ACK_PLRINFO) return; TermMsg("Trying to drop a floor item?"); } - ++bLevela; - v7 = (DLevel *)((char *)v7 + 22); - } while (bLevela < 127); - v9 = 0; - while (v6->item[0].bCmd != -1) { - ++v9; - v6 = (DLevel *)((char *)v6 + 22); - if (v9 >= 127) + } + + for (i = 0; i < MAXITEMS; i++) { + pD = &sgLevels[bLevel].item[i]; + if (pD->bCmd == 0xFF) { + sgbDeltaChanged = 1; + memcpy(pD, pI, sizeof(TCmdPItem)); + pD->bCmd = CMD_ACK_PLRINFO; + pD->x = x; + pD->y = y; return; + } } - sgbDeltaChanged = 1; - memcpy(v6, v4, sizeof(TCmdPItem)); - v6->item[0].x = v10; - v6->item[0].bCmd = 2; - v6->item[0].y = y; } } // 67618C: using guessed type char sgbDeltaChanged;