From afb19f3a1f73d36207b8b64e4eed5846e78f5a32 Mon Sep 17 00:00:00 2001
From: Loic Blot <loic.blot@unix-experience.fr>
Date: Thu, 12 Mar 2015 11:27:28 +0100
Subject: [PATCH] handleCommand_Breath mustn't update breath is player is dead.
 A dead player doesn't breath. Add Player::isDead function to check player is
 dead

---
 src/network/packethandlers/server.cpp | 9 +++++++++
 src/player.h                          | 3 +++
 2 files changed, 12 insertions(+)

diff --git a/src/network/packethandlers/server.cpp b/src/network/packethandlers/server.cpp
index d24e8df5b..b188bb931 100644
--- a/src/network/packethandlers/server.cpp
+++ b/src/network/packethandlers/server.cpp
@@ -916,6 +916,15 @@ void Server::handleCommand_Breath(NetworkPacket* pkt)
 		return;
 	}
 
+	/*
+	 * If player is dead, we don't need to update the breath
+	 * He is dead !
+	 */
+	if (player->isDead()) {
+		return;
+	}
+
+
 	PlayerSAO *playersao = player->getPlayerSAO();
 	if (playersao == NULL) {
 		errorstream << "Server::ProcessData(): Cancelling: "
diff --git a/src/player.h b/src/player.h
index 4459b421a..def428847 100644
--- a/src/player.h
+++ b/src/player.h
@@ -238,6 +238,9 @@ class Player
 			inventory.setModified(x);
 	}
 
+	// Use a function, if isDead can be defined by other conditions
+	bool isDead() { return hp == 0; }
+
 	bool touching_ground;
 	// This oscillates so that the player jumps a bit above the surface
 	bool in_liquid;
-- 
GitLab