From 2d6f5d09b8425ad752bd3f8cb747a132ecdf8469 Mon Sep 17 00:00:00 2001 From: qndel Date: Thu, 22 Oct 2020 16:36:01 +0200 Subject: [PATCH] delta_get_item cleanup --- Source/msg.cpp | 103 ++++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 49 deletions(-) diff --git a/Source/msg.cpp b/Source/msg.cpp index 0a3b941ac..8c5dc49bc 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -1497,62 +1497,67 @@ DWORD On_GETITEM(TCmd *pCmd, int pnum) BOOL delta_get_item(TCmdGItem *pI, BYTE bLevel) { - BOOL result; TCmdPItem *pD; int i; - BOOL found; - result = TRUE; - found = FALSE; - if (gbMaxPlayers != 1) { - pD = sgLevels[bLevel].item; - for (i = 0; i < MAXITEMS; i++, pD++) { - if (pD->bCmd != 0xFF && pD->wIndx == pI->wIndx && pD->wCI == pI->wCI && pD->dwSeed == pI->dwSeed) { - found = TRUE; - break; - } + if (gbMaxPlayers == 1) + return TRUE; + + pD = sgLevels[bLevel].item; + for (i = 0; i < MAXITEMS; i++, pD++) { + if (pD->bCmd == 0xFF || pD->wIndx != pI->wIndx || pD->wCI != pI->wCI || pD->dwSeed != pI->dwSeed) + continue; + + if (pD->bCmd == CMD_WALKXY) { + return TRUE; } - if (found) { - if (pD->bCmd == CMD_WALKXY) { - return result; - } - if (pD->bCmd == CMD_STAND) { - sgbDeltaChanged = 1; - pD->bCmd = CMD_WALKXY; - return result; - } - if (pD->bCmd == CMD_ACK_PLRINFO) { - pD->bCmd = 0xFF; - sgbDeltaChanged = 1; - return result; - } - app_fatal("delta:1"); + if (pD->bCmd == CMD_STAND) { + sgbDeltaChanged = TRUE; + pD->bCmd = CMD_WALKXY; + return TRUE; } - if (((pI->wCI >> 8) & 0x80) == 0) - return FALSE; - pD = sgLevels[bLevel].item; - for (i = 0; i < MAXITEMS; i++, pD++) { - if (pD->bCmd == 0xFF) { - sgbDeltaChanged = 1; - pD->bCmd = CMD_WALKXY; - pD->x = pI->x; - pD->y = pI->y; - pD->wIndx = pI->wIndx; - pD->wCI = pI->wCI; - pD->dwSeed = pI->dwSeed; - pD->bId = pI->bId; - pD->bDur = pI->bDur; - pD->bMDur = pI->bMDur; - pD->bCh = pI->bCh; - pD->bMCh = pI->bMCh; - pD->wValue = pI->wValue; - pD->dwBuff = pI->dwBuff; - result = TRUE; - break; - } + if (pD->bCmd == CMD_ACK_PLRINFO) { + sgbDeltaChanged = TRUE; + pD->bCmd = 0xFF; + return TRUE; + } + + app_fatal("delta:1"); + break; + } + + if ((pI->wCI & CF_PREGEN) == 0) + return FALSE; + + pD = sgLevels[bLevel].item; + for (i = 0; i < MAXITEMS; i++, pD++) { + if (pD->bCmd == 0xFF) { + sgbDeltaChanged = TRUE; + pD->bCmd = CMD_WALKXY; + pD->x = pI->x; + pD->y = pI->y; + pD->wIndx = pI->wIndx; + pD->wCI = pI->wCI; + pD->dwSeed = pI->dwSeed; + pD->bId = pI->bId; + pD->bDur = pI->bDur; + pD->bMDur = pI->bMDur; + pD->bCh = pI->bCh; + pD->bMCh = pI->bMCh; + pD->wValue = pI->wValue; + pD->dwBuff = pI->dwBuff; +#ifdef HELLFIRE + pD->wToHit = pI->wToHit; + pD->wMaxDam = pI->wMaxDam; + pD->bMinStr = pI->bMinStr; + pD->bMinMag = pI->bMinMag; + pD->bMinDex = pI->bMinDex; + pD->bAC = pI->bAC; +#endif + break; } } - return result; + return TRUE; } DWORD On_GOTOAGETITEM(TCmd *pCmd, int pnum)