diff --git a/src/object/player.cpp b/src/object/player.cpp index 9647aedb78c..fbb89fa3752 100644 --- a/src/object/player.cpp +++ b/src/object/player.cpp @@ -1307,6 +1307,21 @@ Player::kill(bool completely) return; } + if (player_status->coins >= 25 && !GameSession::current()->get_reset_point_sectorname().empty()) + { + for (int i = 0; i < 5; i++) + { + // the numbers: starting x, starting y, velocity y + Sector::current()->add_object(new FallingCoin(get_pos() + + Vector(graphicsRandom.rand(5), graphicsRandom.rand(-32,18)), + graphicsRandom.rand(-100,100))); + } + player_status->coins -= std::max(player_status->coins/10, 25); + } + else + { + GameSession::current()->set_reset_point("", Vector()); + } physic.enable_gravity(true); physic.set_gravity_modifier(1.0f); // Undo jump_early_apex safe_timer.stop(); diff --git a/src/supertux/game_session.cpp b/src/supertux/game_session.cpp index 56c2a9bc2c3..2ff9483995a 100644 --- a/src/supertux/game_session.cpp +++ b/src/supertux/game_session.cpp @@ -399,6 +399,9 @@ GameSession::process_menu() case MNID_ABORTLEVEL: MenuManager::set_current(0); g_screen_manager->exit_screen(); + //Coin penalty for aborting a level + if (player_status->coins >= 25) + player_status->coins -= std::max(player_status->coins/10, 25); break; } }