Browse Source

sync monster mWhoHit and hitpoints

pull/3123/head
qndel 4 years ago committed by Anders Jenbo
parent
commit
b00feb4c3d
  1. 7
      Source/msg.cpp
  2. 3
      Source/msg.h
  3. 4
      Source/sync.cpp

7
Source/msg.cpp

@ -408,6 +408,7 @@ void DeltaLeaveSync(BYTE bLevel)
delta._menemy = encode_enemy(monster);
delta._mhitpoints = monster._mhitpoints;
delta._mactive = monster._msquelch;
delta.mWhoHit = monster.mWhoHit;
}
memcpy(&sgLocals[bLevel].automapsv, AutomapView, sizeof(AutomapView));
}
@ -2062,6 +2063,8 @@ void delta_sync_monster(const TSyncMonster &monsterSync, uint8_t level)
monster._my = monsterSync._my;
monster._mactive = UINT8_MAX;
monster._menemy = monsterSync._menemy;
monster._mhitpoints = monsterSync._mhitpoints;
monster.mWhoHit = monsterSync.mWhoHit;
}
bool delta_portal_inited(int i)
@ -2171,8 +2174,10 @@ void DeltaLoadLevel()
monster.position.tile = { x, y };
monster.position.old = { x, y };
monster.position.future = { x, y };
if (sgLevels[currlevel].monster[i]._mhitpoints != -1)
if (sgLevels[currlevel].monster[i]._mhitpoints != -1) {
monster._mhitpoints = sgLevels[currlevel].monster[i]._mhitpoints;
monster.mWhoHit = sgLevels[currlevel].monster[i].mWhoHit;
}
if (sgLevels[currlevel].monster[i]._mhitpoints == 0) {
M_ClearSquares(i);
if (monster._mAi != AI_DIABLO) {

3
Source/msg.h

@ -357,6 +357,8 @@ struct TSyncMonster {
uint8_t _my;
uint8_t _menemy;
uint8_t _mdelta;
int32_t _mhitpoints;
int8_t mWhoHit;
};
struct TPktHdr {
@ -385,6 +387,7 @@ struct DMonsterStr {
uint8_t _menemy;
uint8_t _mactive;
int32_t _mhitpoints;
int8_t mWhoHit;
};
struct DObjectStr {

4
Source/sync.cpp

@ -41,6 +41,8 @@ void SyncMonsterPos(TSyncMonster &monsterSync, int ndx)
monsterSync._my = monster.position.tile.y;
monsterSync._menemy = encode_enemy(monster);
monsterSync._mdelta = sgnMonsterPriority[ndx] > 255 ? 255 : sgnMonsterPriority[ndx];
monsterSync.mWhoHit = monster.mWhoHit;
monsterSync._mhitpoints = monster._mhitpoints;
sgnMonsterPriority[ndx] = 0xFFFF;
sgwLRU[ndx] = monster._msquelch == 0 ? 0xFFFF : 0xFFFE;
@ -195,6 +197,8 @@ void SyncMonster(int pnum, const TSyncMonster &monsterSync)
}
decode_enemy(monster, enemyId);
monster.mWhoHit = monsterSync.mWhoHit;
monster._mhitpoints = monsterSync._mhitpoints;
}
bool IsEnemyIdValid(const Monster &monster, int enemyId)

Loading…
Cancel
Save