diff --git a/Source/msg.cpp b/Source/msg.cpp index 6ea1c80fc..a6e6b5eca 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -1365,52 +1365,35 @@ BYTE *__fastcall DeltaImportMonster(BYTE *src, DMonsterStr *dst) void __fastcall DeltaImportJunk(BYTE *src) { - _BYTE *v1; // ebx - int v2; // edi - DJunk *v3; // esi - char result; // al - MultiQuests *v5; // esi - unsigned char *v6; // edi - int *v7; // ebp - - v1 = (_BYTE *)src; - v2 = 0; - v3 = &sgJunk; - do { - if (*v1 == -1) { - memset(v3, 255, 5u); - ++v1; - SetPortalStats(v2, 0, 0, 0, 0, 0); + int i; + + for (i = 0; i < MAXPORTAL; i++) { + if (*src == 0xFF) { + memset(&sgJunk.portal[i], 0xFF, sizeof(DPortal)); + src++; + SetPortalStats(i, 0, 0, 0, 0, 0); } else { - memcpy(v3, v1, 5u); - v1 += 5; + memcpy(&sgJunk.portal[i], src, sizeof(DPortal)); + src += sizeof(DPortal); SetPortalStats( - v2, + i, 1, - (unsigned char)v3->portal[0].x, - (unsigned char)v3->portal[0].y, - (unsigned char)v3->portal[0].level, - (unsigned char)v3->portal[0].ltype); + sgJunk.portal[i].x, + sgJunk.portal[i].y, + sgJunk.portal[i].level, + sgJunk.portal[i].ltype); } - v3 = (DJunk *)((char *)v3 + 5); - ++v2; - } while ((signed int)v3 < (signed int)sgJunk.quests); - v5 = sgJunk.quests; - v6 = &quests[0]._qactive; - v7 = &questlist[0]._qflags; - do { - if (*(_BYTE *)v7 & 1) { - memcpy(v5, v1, 3u); - *(_DWORD *)(v6 + 18) = (unsigned char)v5->qlog; - *v6 = v5->qstate; - result = v5->qvar1; - v1 += 3; - v6[13] = result; - ++v5; + } + + for (i = 0; i < MAXMULTIQUESTS; i++) { + if (questlist[i]._qflags & 1) { + memcpy(&sgJunk.quests[i], src, sizeof(MultiQuests)); + src += sizeof(MultiQuests); + quests[i]._qlog = sgJunk.quests[i].qlog; + quests[i]._qactive = sgJunk.quests[i].qstate; + quests[i]._qvar1 = sgJunk.quests[i].qvar1; } - v7 += 5; - v6 += 24; - } while ((signed int)v7 < (signed int)&questlist[16]._qflags); + } } int __fastcall On_SYNCDATA(void *packet, int pnum)