diff --git a/Source/msg.cpp b/Source/msg.cpp index 47cf3c5c6..d3933aa03 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -1905,15 +1905,16 @@ size_t OnKnockback(const TCmdParam1 &message, Player &player) return sizeof(message); } -size_t OnResurrect(const TCmdParam1 &message, Player &player) +size_t OnResurrect(const TCmdParam1 &message, Player &caster) { const uint16_t playerIdx = Swap16LE(message.wParam1); + Player &target = Players[playerIdx]; if (gbBufferMsgs == 1) { - BufferMessage(player, &message, sizeof(message)); - } else if (playerIdx < Players.size()) { - DoResurrect(player, Players[playerIdx]); - if (&player == MyPlayer) + BufferMessage(caster, &message, sizeof(message)); + } else if (caster.isOnActiveLevel() && playerIdx < Players.size()) { + DoResurrect(caster, target); + if (&target == MyPlayer) pfile_update(true); }