Dont allow fast move in water or ladder when aux1_descend is true
authorMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Sat, 6 Apr 2013 01:37:37 +0000 (15:37 -1000)
committerPilzAdam <pilzadam@minetest.net>
Fri, 5 Apr 2013 12:58:35 +0000 (14:58 +0200)
src/localplayer.cpp

index b69bdb24f69148a51ed266c2c2243124ce8274e7..9c70c8b2f532a810a844a6db915208f12bbf32c9 100644 (file)
@@ -389,7 +389,8 @@ void LocalPlayer::applyControl(float dtime)
 
        bool free_move = fly_allowed && g_settings->getBool("free_move");
        bool fast_move = fast_allowed && g_settings->getBool("fast_move");
-       bool fast_or_aux1_descends = (fast_move && control.aux1) || (fast_move && g_settings->getBool("aux1_descends"));
+       // When aux1_descends is enabled the fast key is used to go down, so fast isn't possible
+       bool fast_climb = fast_move && control.aux1 && !g_settings->getBool("aux1_descends");
        bool continuous_forward = g_settings->getBool("continuous_forward");
 
        // Whether superspeed mode is used or not
@@ -418,14 +419,12 @@ void LocalPlayer::applyControl(float dtime)
                        }
                        else if(in_liquid || in_liquid_stable)
                        {
-                               // Always use fast when aux1_descends & fast_move are enabled in liquid, since the aux1 button would mean both turbo and "swim down" causing a conflict
-                               speedV.Y = -movement_speed_fast;
+                               speedV.Y = -movement_speed_walk;
                                swimming_vertical = true;
                        }
                        else if(is_climbing)
                        {
-                               // Always use fast when aux1_descends & fast_move are enabled when climbing, since the aux1 button would mean both turbo and "descend" causing a conflict
-                               speedV.Y = -movement_speed_fast;
+                               speedV.Y = -movement_speed_climb;
                        }
                        else
                        {
@@ -462,8 +461,7 @@ void LocalPlayer::applyControl(float dtime)
                        }
                        else if(in_liquid || in_liquid_stable)
                        {
-                               if(fast_or_aux1_descends)
-                                       // Always use fast when aux1_descends & fast_move are enabled in liquid, since the aux1 button would mean both turbo and "swim down" causing a conflict
+                               if(fast_climb)
                                        speedV.Y = -movement_speed_fast;
                                else
                                        speedV.Y = -movement_speed_walk;
@@ -471,8 +469,7 @@ void LocalPlayer::applyControl(float dtime)
                        }
                        else if(is_climbing)
                        {
-                               if(fast_or_aux1_descends)
-                                       // Always use fast when aux1_descends & fast_move are enabled when climbing, since the aux1 button would mean both turbo and "descend" causing a conflict
+                               if(fast_climb)
                                        speedV.Y = -movement_speed_fast;
                                else
                                        speedV.Y = -movement_speed_climb;
@@ -538,8 +535,7 @@ void LocalPlayer::applyControl(float dtime)
                }
                else if(in_liquid)
                {
-                       if(fast_or_aux1_descends)
-                               // Always use fast when aux1_descends & fast_move are enabled in liquid, since the aux1 button would mean both turbo and "swim down" causing a conflict
+                       if(fast_climb)
                                speedV.Y = movement_speed_fast;
                        else
                                speedV.Y = movement_speed_walk;
@@ -547,8 +543,7 @@ void LocalPlayer::applyControl(float dtime)
                }
                else if(is_climbing)
                {
-                       if(fast_or_aux1_descends)
-                               // Always use fast when aux1_descends & fast_move are enabled when climbing, since the aux1 button would mean both turbo and "descend" causing a conflict
+                       if(fast_climb)
                                speedV.Y = movement_speed_fast;
                        else
                                speedV.Y = movement_speed_climb;
@@ -556,7 +551,7 @@ void LocalPlayer::applyControl(float dtime)
        }
 
        // The speed of the player (Y is ignored)
-       if(superspeed || (is_climbing && fast_or_aux1_descends) || ((in_liquid || in_liquid_stable) && fast_or_aux1_descends))
+       if(superspeed || (is_climbing && fast_climb) || ((in_liquid || in_liquid_stable) && fast_climb))
                speedH = speedH.normalize() * movement_speed_fast;
        else if(control.sneak && !free_move && !in_liquid && !in_liquid_stable)
                speedH = speedH.normalize() * movement_speed_crouch;
@@ -575,10 +570,7 @@ void LocalPlayer::applyControl(float dtime)
                        incH = movement_acceleration_air * BS * dtime;
                incV = 0; // No vertical acceleration in air
        }
-       else if(superspeed || (fast_move && control.aux1))
-               incH = incV = movement_acceleration_fast * BS * dtime;
-       else if ((in_liquid || in_liquid_stable) && fast_or_aux1_descends)
-               // Always use fast when aux1_descends & fast_move are enabled in liquid, since the aux1 button would mean both turbo and "swim down" causing a conflict
+       else if (superspeed || (is_climbing && fast_climb) || ((in_liquid || in_liquid_stable) && fast_climb))
                incH = incV = movement_acceleration_fast * BS * dtime;
        else
                incH = incV = movement_acceleration_default * BS * dtime;