summaryrefslogtreecommitdiff
path: root/src/environment.cpp
diff options
context:
space:
mode:
authorBlockMen <nmuelll@web.de>2013-08-01 18:36:11 +0200
committerPilzAdam <pilzadam@minetest.net>2013-08-06 17:49:39 +0200
commit7b13d119ed917c137fc375eff790a7754fd93386 (patch)
tree7372138943e6ad4db52a037e95fec70035b5ffaa /src/environment.cpp
parentba65e2ae6c9578309049b685f3052e424fb410b8 (diff)
downloadminetest-7b13d119ed917c137fc375eff790a7754fd93386.tar.gz
minetest-7b13d119ed917c137fc375eff790a7754fd93386.tar.bz2
minetest-7b13d119ed917c137fc375eff790a7754fd93386.zip
Add support for different drowning damage and allow drowning in other nodetypes
Diffstat (limited to 'src/environment.cpp')
-rw-r--r--src/environment.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/environment.cpp b/src/environment.cpp
index 40dba9a6c..76a8aab51 100644
--- a/src/environment.cpp
+++ b/src/environment.cpp
@@ -2243,7 +2243,8 @@ void ClientEnvironment::step(float dtime)
v3s16 p = floatToInt(pf + v3f(0, BS*1.6, 0), BS);
MapNode n = m_map->getNodeNoEx(p);
ContentFeatures c = m_gamedef->ndef()->get(n);
- if(c.isLiquid() && c.drowning && lplayer->hp > 0){
+ u8 drowning_damage = c.drowning;
+ if(drowning_damage > 0 && lplayer->hp > 0){
u16 breath = lplayer->getBreath();
if(breath > 10){
breath = 11;
@@ -2255,8 +2256,8 @@ void ClientEnvironment::step(float dtime)
updateLocalPlayerBreath(breath);
}
- if(lplayer->getBreath() == 0){
- damageLocalPlayer(1, true);
+ if(lplayer->getBreath() == 0 && drowning_damage > 0){
+ damageLocalPlayer(drowning_damage, true);
}
}
if(m_breathing_interval.step(dtime, 0.5))
@@ -2270,7 +2271,7 @@ void ClientEnvironment::step(float dtime)
if (!lplayer->hp){
lplayer->setBreath(11);
}
- else if(!c.isLiquid() || !c.drowning){
+ else if(c.drowning == 0){
u16 breath = lplayer->getBreath();
if(breath <= 10){
breath += 1;