diff --git a/Source/msg.cpp b/Source/msg.cpp index 106d0bc9a..a06cc2fcb 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -194,7 +194,11 @@ static BYTE *DeltaExportItem(BYTE *dst, TCmdPItem *src) *dst = 0xFF; dst++; } else { +#ifdef HELLFIRE + *reinterpret_cast(dst) = *src; +#else memcpy(dst, src, sizeof(TCmdPItem)); +#endif dst += sizeof(TCmdPItem); } src++; @@ -212,7 +216,11 @@ static BYTE *DeltaImportItem(BYTE *src, TCmdPItem *dst) memset(dst, 0xFF, sizeof(TCmdPItem)); src++; } else { +#ifdef HELLFIRE + *dst = *reinterpret_cast(src); +#else memcpy(dst, src, sizeof(TCmdPItem)); +#endif src += sizeof(TCmdPItem); } dst++; @@ -238,11 +246,15 @@ static BYTE *DeltaExportMonster(BYTE *dst, DMonsterStr *src) int i; for (i = 0; i < MAXMONSTERS; i++) { - if (*(BYTE *)src == 0xFF) { + if (src->_mx == 0xFF) { *dst = 0xFF; dst++; } else { +#ifdef HELLFIRE + *reinterpret_cast(dst) = *src; +#else memcpy(dst, src, sizeof(DMonsterStr)); +#endif dst += sizeof(DMonsterStr); } src++; @@ -260,7 +272,11 @@ static BYTE *DeltaImportMonster(BYTE *src, DMonsterStr *dst) memset(dst, 0xFF, sizeof(DMonsterStr)); src++; } else { +#ifdef HELLFIRE + *dst = *reinterpret_cast(src); +#else memcpy(dst, src, sizeof(DMonsterStr)); +#endif src += sizeof(DMonsterStr); } dst++; @@ -271,30 +287,34 @@ static BYTE *DeltaImportMonster(BYTE *src, DMonsterStr *dst) static BYTE *DeltaExportJunk(BYTE *dst) { - int i; - MultiQuests *mq; - DPortal *pD; + int i, q; for (i = 0; i < MAXPORTAL; i++) { - pD = &sgJunk.portal[i]; - if (pD->x == 0xFF) { + if (sgJunk.portal[i].x == 0xFF) { *dst = 0xFF; dst++; } else { - memcpy(dst, pD, sizeof(*pD)); - dst += sizeof(*pD); +#ifdef HELLFIRE + *reinterpret_cast(dst) = sgJunk.portal[i]; +#else + memcpy(dst, &sgJunk.portal[i], sizeof(DPortal)); +#endif + dst += sizeof(DPortal); } } - mq = sgJunk.quests; - for (i = 0; i < MAXQUESTS; i++) { + for (i = 0, q = 0; i < MAXQUESTS; i++) { if (questlist[i]._qflags & QUEST_ANY) { - mq->qlog = quests[i]._qlog; - mq->qstate = quests[i]._qactive; - mq->qvar1 = quests[i]._qvar1; - memcpy(dst, mq, sizeof(*mq)); - dst += sizeof(*mq); - mq++; + sgJunk.quests[q].qlog = quests[i]._qlog; + sgJunk.quests[q].qstate = quests[i]._qactive; + sgJunk.quests[q].qvar1 = quests[i]._qvar1; +#ifdef HELLFIRE + *reinterpret_cast(dst) = sgJunk.quests[q]; +#else + memcpy(dst, &sgJunk.quests[q], sizeof(MultiQuests)); +#endif + dst += sizeof(MultiQuests); + q++; } } @@ -303,8 +323,7 @@ static BYTE *DeltaExportJunk(BYTE *dst) static void DeltaImportJunk(BYTE *src) { - int i; - MultiQuests *mq; + int i, q; for (i = 0; i < MAXPORTAL; i++) { if (*src == 0xFF) { @@ -312,7 +331,11 @@ static void DeltaImportJunk(BYTE *src) src++; SetPortalStats(i, FALSE, 0, 0, 0, DTYPE_TOWN); } else { +#ifdef HELLFIRE + sgJunk.portal[i] = *reinterpret_cast(src); +#else memcpy(&sgJunk.portal[i], src, sizeof(DPortal)); +#endif src += sizeof(DPortal); SetPortalStats( i, @@ -324,15 +347,18 @@ static void DeltaImportJunk(BYTE *src) } } - mq = sgJunk.quests; - for (i = 0; i < MAXQUESTS; i++) { + for (i = 0, q = 0; i < MAXQUESTS; i++) { if (questlist[i]._qflags & QUEST_ANY) { - memcpy(mq, src, sizeof(MultiQuests)); +#ifdef HELLFIRE + sgJunk.quests[q] = *reinterpret_cast(src); +#else + memcpy(&sgJunk.quests[q], src, sizeof(MultiQuests)); +#endif src += sizeof(MultiQuests); - quests[i]._qlog = mq->qlog; - quests[i]._qactive = mq->qstate; - quests[i]._qvar1 = mq->qvar1; - mq++; + quests[i]._qlog = sgJunk.quests[q].qlog; + quests[i]._qactive = sgJunk.quests[q].qstate; + quests[i]._qvar1 = sgJunk.quests[q].qvar1; + q++; } } } @@ -1058,7 +1084,11 @@ void NetSendCmdGItem2(BOOL usonly, BYTE bCmd, BYTE mast, BYTE pnum, TCmdGItem *p int ticks; TCmdGItem cmd; +#ifdef HELLFIRE + cmd = *p; +#else memcpy(&cmd, p, sizeof(cmd)); +#endif cmd.bPnum = pnum; cmd.bCmd = bCmd; cmd.bMaster = mast; @@ -1109,7 +1139,11 @@ void NetSendCmdExtra(TCmdGItem *p) { TCmdGItem cmd; +#ifdef HELLFIRE + cmd = *p; +#else memcpy(&cmd, p, sizeof(cmd)); +#endif cmd.dwTime = 0; cmd.bCmd = CMD_ITEMEXTRA; NetSendHiPri((BYTE *)&cmd, sizeof(cmd)); @@ -1143,6 +1177,14 @@ void NetSendCmdPItem(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y) cmd.bCh = plr[myplr].HoldItem._iCharges; cmd.bMCh = plr[myplr].HoldItem._iMaxCharges; cmd.wValue = plr[myplr].HoldItem._ivalue; +#ifdef HELLFIRE + cmd.wToHit = plr[myplr].HoldItem._iPLToHit; + cmd.wMaxDam = plr[myplr].HoldItem._iMaxDam; + cmd.bMinStr = plr[myplr].HoldItem._iMinStr; + cmd.bMinMag = plr[myplr].HoldItem._iMinMag; + cmd.bMinDex = plr[myplr].HoldItem._iMinDex; + cmd.bAC = plr[myplr].HoldItem._iAC; +#endif } if (bHiPri)