+
+ /* In case the player has pressed Down while in a certain range of air,
+ enable butt jump action */
+ if (input.down == DOWN && !butt_jump)
+ if(tiles_on_air(TILES_FOR_BUTTJUMP))
+ butt_jump = true;
+
+ /* When Down is not held anymore, disable butt jump */
+ if(butt_jump && input.down == UP)
+ butt_jump = false;
+
+ if (butt_jump && on_ground() && size == BIG)
+ {
+ if(World::current()->trybreakbrick(base.x, base.y + base.height, false)
+ || World::current()->trybreakbrick(
+ base.x + base.width, base.y + base.height, false)) {
+ // make tux jumping a little bit again after breaking the bricks
+ physic.set_velocity_y(2);
+ }
+// butt_jump = false; // comment this, in case you won't to disable the continued use of buttjump
+ }
+
+ if ( (issolid(base.x + base.width / 2, base.y + base.height + 64) ||
+ issolid(base.x + 1, base.y + base.height + 64) ||
+ issolid(base.x + base.width - 1, base.y + base.height + 64))
+ && jumping == false
+ && can_jump == false
+ && input.up == DOWN
+ && input.old_up == UP)
+ {
+ can_jump = true;
+ }
+
+ if(on_ground()) /* Make sure jumping is off. */
+ jumping = false;
+
+ input.old_up = input.up;