diff --git a/source/game/game.cpp b/source/game/game.cpp index cd3102aa6..94ec7faf4 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -623,7 +623,15 @@ void CGameScene::think_playing(int _frames) #endif else if (s_restartLevel) { - if(m_player->getLivesLeft()>=0) + if(getLevelNumber()==5) + { + // Bonus level.. go back to map after death + GameState::setNextScene(&MapScene); + s_readyToExit=true; + s_levelFinished=false; + CFader::setFadingOut(); + } + else if(m_player->getLivesLeft()>=0) { respawnLevel(); } diff --git a/source/player/pmdead.cpp b/source/player/pmdead.cpp index b15c493bd..b2d7f104c 100644 --- a/source/player/pmdead.cpp +++ b/source/player/pmdead.cpp @@ -131,8 +131,11 @@ void CPlayerModeDead::think() if((m_deadTime>DEATH_DELAY&&m_player->getPadInputDown()&(PI_JUMP|PI_FIRE))|| m_deadTime>DEATH_TIMEOUT) { - // Take a life off.. - CGameSlotManager::getSlotData()->m_lives--; + if(GameScene.getLevelNumber()!=5) + { + // Take a life off.. + CGameSlotManager::getSlotData()->m_lives--; + } CGameScene::restartlevel(); m_killed=true;