From 7b13d119ed917c137fc375eff790a7754fd93386 Mon Sep 17 00:00:00 2001 From: BlockMen Date: Thu, 1 Aug 2013 18:36:11 +0200 Subject: Add support for different drowning damage and allow drowning in other nodetypes --- src/environment.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/environment.cpp') 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; -- cgit v1.2.3