Prevent fall damage from overflowing when falling from a large height. (#5791)
authorred-001 <red-001@outlook.ie>
Sun, 21 May 2017 09:18:38 +0000 (10:18 +0100)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Sun, 21 May 2017 09:18:38 +0000 (11:18 +0200)
src/clientenvironment.cpp

index 47df49b845dee3b13a134e6d604b857609633e40..cc7cb54ddcca2802bba65cdc7fa778c4a20b4537 100644 (file)
@@ -237,11 +237,10 @@ void ClientEnvironment::step(float dtime)
                        pre_factor = 1.0 + (float)addp/100.0;
                }
                float speed = pre_factor * speed_diff.getLength();
-               if(speed > tolerance)
-               {
-                       f32 damage_f = (speed - tolerance)/BS * post_factor;
-                       u16 damage = (u16)(damage_f+0.5);
-                       if(damage != 0){
+               if (speed > tolerance) {
+                       f32 damage_f = (speed - tolerance) / BS * post_factor;
+                       u8 damage = (u8)MYMIN(damage_f + 0.5, 255);
+                       if (damage != 0) {
                                damageLocalPlayer(damage, true);
                                MtEvent *e = new SimpleTriggerEvent("PlayerFallingDamage");
                                m_client->event()->put(e);