MapNode n = m_env->getMap().getNodeNoEx(p);
const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n);
// If node generates drown
- if (c.drowning > 0) {
- if (m_hp > 0 && m_breath > 0)
+ if (c.drowning > 0 && m_hp > 0) {
+ if (m_breath > 0)
setBreath(m_breath - 1);
// No more breath, damage player
}
if (g_settings->getBool("enable_damage")) {
+ if (playerSAO->isDead()) {
+ verbosestream << "Server::ProcessData(): Info: "
+ "Ignoring damage as player " << player->getName()
+ << " is already dead." << std::endl;
+ return;
+ }
+
actionstream << player->getName() << " damaged by "
<< (int)damage << " hp at " << PP(playersao->getBasePosition() / BS)
<< std::endl;
// Send inventory
SendInventory(playersao);
- // Send HP
- SendPlayerHPOrDie(playersao);
+ // Send HP or death screen
+ if (playersao->isDead())
+ SendDeathscreen(peer_id, false, v3f(0,0,0));
+ else
+ SendPlayerHPOrDie(playersao);
// Send Breath
SendPlayerBreath(playersao);
- // Show death screen if necessary
- if (playersao->isDead())
- SendDeathscreen(peer_id, false, v3f(0,0,0));
-
// Note things in chat if not in simple singleplayer mode
if (!m_simple_singleplayer_mode && g_settings->getBool("show_statusline_on_connect")) {
// Send information about server to player in chat