diff --git a/Source/monster.cpp b/Source/monster.cpp index f3eeba4cf..d31440ef0 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1050,7 +1050,7 @@ void HitMonster(int monsterId, int dam) assert(monsterId >= 0 && monsterId < MaxMonsters); auto &monster = Monsters[monsterId]; - delta_monster_hp(monsterId, monster._mhitpoints, *MyPlayer); + delta_monster_hp(monster, *MyPlayer); NetSendCmdMonDmg(false, monsterId, dam); PlayEffect(monster, 1); @@ -3929,7 +3929,7 @@ void M_StartHit(int monsterId, int pnum, int dam) monster.mWhoHit |= 1 << pnum; if (pnum == MyPlayerId) { - delta_monster_hp(monsterId, monster._mhitpoints, *MyPlayer); + delta_monster_hp(monster, *MyPlayer); NetSendCmdMonDmg(false, monsterId, dam); } if (IsAnyOf(monster.type().type, MT_SNEAK, MT_STALKER, MT_UNSEEN, MT_ILLWEAV) || dam >> 6 >= monster.mLevel + 3) { diff --git a/Source/msg.cpp b/Source/msg.cpp index 6849f2b5f..3c0cd68bc 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -1592,7 +1592,7 @@ DWORD OnMonstDamage(const TCmd *pCmd, int pnum) monster._mhitpoints -= message.dwDam; if ((monster._mhitpoints >> 6) < 1) monster._mhitpoints = 1 << 6; - delta_monster_hp(message.wMon, monster._mhitpoints, player); + delta_monster_hp(monster, player); } } } @@ -2220,15 +2220,15 @@ void delta_kill_monster(int mi, Point position, const Player &player) pD->_mhitpoints = 0; } -void delta_monster_hp(int mi, int hp, const Player &player) +void delta_monster_hp(const Monster &monster, const Player &player) { if (!gbIsMultiplayer) return; sgbDeltaChanged = true; - DMonsterStr *pD = &GetDeltaLevel(player).monster[mi]; - if (pD->_mhitpoints > hp) - pD->_mhitpoints = hp; + DMonsterStr *pD = &GetDeltaLevel(player).monster[monster.getId()]; + if (pD->_mhitpoints > monster._mhitpoints) + pD->_mhitpoints = monster._mhitpoints; } void delta_sync_monster(const TSyncMonster &monsterSync, uint8_t level) diff --git a/Source/msg.h b/Source/msg.h index 8a52507d7..27e514ea4 100644 --- a/Source/msg.h +++ b/Source/msg.h @@ -722,7 +722,7 @@ void DeltaExportData(int pnum); void DeltaSyncJunk(); void delta_init(); void delta_kill_monster(int mi, Point position, const Player &player); -void delta_monster_hp(int mi, int hp, const Player &player); +void delta_monster_hp(const Monster &monster, const Player &player); void delta_sync_monster(const TSyncMonster &monsterSync, uint8_t level); uint8_t GetLevelForMultiplayer(const Player &player); bool IsValidLevelForMultiplayer(uint8_t level);