diff --git a/doc/lua_api.md b/doc/lua_api.md index ed4fa2647..fbe7c11dc 100644 --- a/doc/lua_api.md +++ b/doc/lua_api.md @@ -11086,7 +11086,8 @@ The `PlayerHPChangeReason` table specifies a reason for player health changes. * `node_damage`: `damage_per_second` from a neighboring node. `reason.node` will hold the node name or nil. `reason.node_pos` will hold the position of the node - * `drown`: Drowning damage. + * `drown`: Drowning damage from a node with the `drowning` field set. + `reason.node` and `reason.node_pos` are same as for `node_damage` * `respawn`: HP restored by respawning. * The `detail` field may optionally be used to provide a more detailed reason as a string. It's recommended to follow the `modname:detail` naming convention. diff --git a/src/server/player_sao.cpp b/src/server/player_sao.cpp index 068b2b29f..0be301a79 100644 --- a/src/server/player_sao.cpp +++ b/src/server/player_sao.cpp @@ -154,7 +154,8 @@ void PlayerSAO::step(float dtime, bool send_recommended) // No more breath, damage player if (m_breath == 0) { - PlayerHPChangeReason reason(PlayerHPChangeReason::DROWNING); + std::string nodename = c.name; + PlayerHPChangeReason reason(PlayerHPChangeReason::DROWNING, nodename, p); setHP(m_hp - c.drowning, reason); } } diff --git a/src/server/player_sao.h b/src/server/player_sao.h index a19177a7e..052f2941c 100644 --- a/src/server/player_sao.h +++ b/src/server/player_sao.h @@ -245,7 +245,7 @@ struct PlayerHPChangeReason // For PLAYER_PUNCH ServerActiveObject *object = nullptr; - // For NODE_DAMAGE + // For NODE_DAMAGE and DROWNING std::string node; v3s16 node_pos;