diff options
-rw-r--r-- | src/environment.cpp | 6 | ||||
-rw-r--r-- | src/network/packethandlers/server.cpp | 12 | ||||
-rw-r--r-- | src/server.cpp | 2 |
3 files changed, 13 insertions, 7 deletions
diff --git a/src/environment.cpp b/src/environment.cpp index f75e7a0b7..953fa2860 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -2563,9 +2563,11 @@ void ClientEnvironment::damageLocalPlayer(u8 damage, bool handle_hp) LocalPlayer *lplayer = getLocalPlayer(); assert(lplayer); - if(handle_hp){ - if (lplayer->hp == 0) // Don't damage a dead player + if(handle_hp) { + // Don't damage a dead player + if (lplayer->isDead()) return; + if(lplayer->hp > damage) lplayer->hp -= damage; else diff --git a/src/network/packethandlers/server.cpp b/src/network/packethandlers/server.cpp index b188bb931..537858e52 100644 --- a/src/network/packethandlers/server.cpp +++ b/src/network/packethandlers/server.cpp @@ -556,7 +556,9 @@ void Server::handleCommand_PlayerPos(NetworkPacket* pkt) } // If player is dead we don't care of this packet - if (player->hp == 0) { + if (player->isDead()) { + verbosestream << "TOSERVER_PLAYERPOS: " << player->getName() + << " is dead. Ignoring packet"; return; } @@ -921,6 +923,8 @@ void Server::handleCommand_Breath(NetworkPacket* pkt) * He is dead ! */ if (player->isDead()) { + verbosestream << "TOSERVER_BREATH: " << player->getName() + << " is dead. Ignoring packet"; return; } @@ -1051,7 +1055,7 @@ void Server::handleCommand_Respawn(NetworkPacket* pkt) return; } - if (player->hp != 0 || !g_settings->getBool("enable_damage")) + if (!player->isDead() || !g_settings->getBool("enable_damage")) return; RespawnPlayer(pkt->getPeerId()); @@ -1108,9 +1112,9 @@ void Server::handleCommand_Interact(NetworkPacket* pkt) return; } - if (player->hp == 0) { + if (player->isDead()) { verbosestream << "TOSERVER_INTERACT: " << player->getName() - << " tried to interact, but is dead!" << std::endl; + << " is dead. Ignoring packet"; return; } diff --git a/src/server.cpp b/src/server.cpp index 1e2c445f7..a21d12e6a 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1106,7 +1106,7 @@ PlayerSAO* Server::StageTwoClientInit(u16 peer_id) SendPlayerBreath(peer_id); // Show death screen if necessary - if(player->hp == 0) + if(player->isDead()) SendDeathscreen(peer_id, false, v3f(0,0,0)); // Note things in chat if not in simple singleplayer mode |