|
|
|
|
@ -1544,9 +1544,10 @@ DWORD OnMonstDeath(const TCmd *pCmd, int pnum)
|
|
|
|
|
if (gbBufferMsgs != 1) { |
|
|
|
|
Player &player = Players[pnum]; |
|
|
|
|
if (&player != MyPlayer && InDungeonBounds(position) && message.wParam1 < MaxMonsters) { |
|
|
|
|
Monster &monster = Monsters[message.wParam1]; |
|
|
|
|
if (player.isOnActiveLevel()) |
|
|
|
|
M_SyncStartKill(message.wParam1, position, pnum); |
|
|
|
|
delta_kill_monster(message.wParam1, position, player); |
|
|
|
|
delta_kill_monster(monster, position, player); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
SendPacket(pnum, &message, sizeof(message)); |
|
|
|
|
@ -1563,9 +1564,10 @@ DWORD OnKillGolem(const TCmd *pCmd, int pnum)
|
|
|
|
|
if (gbBufferMsgs != 1) { |
|
|
|
|
Player &player = Players[pnum]; |
|
|
|
|
if (&player != MyPlayer && InDungeonBounds(position)) { |
|
|
|
|
Monster &monster = Monsters[pnum]; |
|
|
|
|
if (player.isOnActiveLevel()) |
|
|
|
|
M_SyncStartKill(pnum, position, pnum); |
|
|
|
|
delta_kill_monster(pnum, position, player); |
|
|
|
|
delta_kill_monster(monster, position, player); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
SendPacket(pnum, &message, sizeof(message)); |
|
|
|
|
@ -2256,15 +2258,15 @@ void delta_init()
|
|
|
|
|
deltaload = false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void delta_kill_monster(int mi, Point position, const Player &player) |
|
|
|
|
void delta_kill_monster(const Monster &monster, Point position, const Player &player) |
|
|
|
|
{ |
|
|
|
|
if (!gbIsMultiplayer) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
sgbDeltaChanged = true; |
|
|
|
|
DMonsterStr *pD = &GetDeltaLevel(player).monster[mi]; |
|
|
|
|
DMonsterStr *pD = &GetDeltaLevel(player).monster[monster.getId()]; |
|
|
|
|
pD->position = position; |
|
|
|
|
pD->_mdir = Monsters[mi].direction; |
|
|
|
|
pD->_mdir = monster.direction; |
|
|
|
|
pD->hitPoints = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|