Butt-jump stops gliding
[supertux.git] / src / object / player.cpp
index c40a9ee..a6aeed7 100644 (file)
@@ -734,7 +734,8 @@ Player::handle_vertical_input()
         ability_timer.start(glide_time);
       else if (ability_timer.started()) {
         log_debug << ability_timer.get_timeleft() << std::endl;
-        if (ability_timer.get_timeleft() <= 0.05f) {
+        // glide stops after some duration or if buttjump is initiated
+        if ((ability_timer.get_timeleft() <= 0.05f) || controller->hold(Controller::DOWN)) {
           glide_time = 0;
           ability_timer.stop();
         } else {
@@ -1511,10 +1512,12 @@ Player::get_velocity()
 void
 Player::bounce(BadGuy& )
 {
-  if(controller->hold(Controller::JUMP))
-    physic.set_velocity_y(-520);
-  else
-    physic.set_velocity_y(-300);
+  if(!(player_status->bonus == AIR_BONUS))
+    physic.set_velocity_y(controller->hold(Controller::JUMP) ? -520 : -300);
+  else {
+    physic.set_velocity_y(controller->hold(Controller::JUMP) ? -580 : -340);
+    glide_time = player_status->max_air_time * GLIDE_TIME_PER_FLOWER;
+  }
 }
 
 //scripting Functions Below