@@ -235,7 +235,16 @@ void ClientEnvironment::step(float dtime)
235235 &player_collisions);
236236 }
237237
238- bool player_immortal = lplayer->getCAO () && lplayer->getCAO ()->isImmortal ();
238+ bool player_immortal = false ;
239+ f32 player_fall_factor = 1 .0f ;
240+ GenericCAO *playercao = lplayer->getCAO ();
241+ if (playercao) {
242+ player_immortal = playercao->isImmortal ();
243+ int addp_p = itemgroup_get (playercao->getGroups (),
244+ " fall_damage_add_percent" );
245+ // convert armor group into an usable fall damage factor
246+ player_fall_factor = 1 .0f + (float )addp_p / 100 .0f ;
247+ }
239248
240249 for (const CollisionInfo &info : player_collisions) {
241250 v3f speed_diff = info.new_speed - info.old_speed ;;
@@ -248,17 +257,20 @@ void ClientEnvironment::step(float dtime)
248257 speed_diff.Z = 0 ;
249258 f32 pre_factor = 1 ; // 1 hp per node/s
250259 f32 tolerance = BS*14 ; // 5 without damage
251- f32 post_factor = 1 ; // 1 hp per node/s
252260 if (info.type == COLLISION_NODE) {
253261 const ContentFeatures &f = m_client->ndef ()->
254262 get (m_map->getNode (info.node_p ));
255- // Determine fall damage multiplier
256- int addp = itemgroup_get (f.groups , " fall_damage_add_percent" );
257- pre_factor = 1 .0f + (float )addp / 100 .0f ;
263+ // Determine fall damage modifier
264+ int addp_n = itemgroup_get (f.groups , " fall_damage_add_percent" );
265+ // convert node group to an usable fall damage factor
266+ f32 node_fall_factor = 1 .0f + (float )addp_n / 100 .0f ;
267+ // combine both player fall damage modifiers
268+ pre_factor = node_fall_factor * player_fall_factor;
258269 }
259270 float speed = pre_factor * speed_diff.getLength ();
260- if (speed > tolerance && !player_immortal) {
261- f32 damage_f = (speed - tolerance) / BS * post_factor;
271+
272+ if (speed > tolerance && !player_immortal && pre_factor > 0 .0f ) {
273+ f32 damage_f = (speed - tolerance) / BS;
262274 u16 damage = (u16 )MYMIN (damage_f + 0.5 , U16_MAX);
263275 if (damage != 0 ) {
264276 damageLocalPlayer (damage, true );
0 commit comments