diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index eadd4f5672..d5205042b9 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -1174,7 +1174,8 @@ bool MusicWheel::Select() // return true if this selection ends the screen StartRandom(); return false; case TYPE_SONG: - GAMESTATE->m_pUnlockingSys->RouletteUnlock( m_CurWheelItemData[m_iSelection]->m_pSong ); + if (PREFSMAN->m_bUseUnlockSystem) + GAMESTATE->m_pUnlockingSys->RouletteUnlock( m_CurWheelItemData[m_iSelection]->m_pSong ); // fall-through - we want to check for unlocking only if its a song case TYPE_COURSE: return true; diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index 2e2191b9db..60fa2e0ed0 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -135,8 +135,17 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) : Screen(sCl Grade max_grade = GRADE_NO_DATA; for( p=0; pm_bUseUnlockSystem && + (GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) && + grade[p] > GRADE_E && + m_Type != summary) + GAMESTATE->m_pUnlockingSys->UnlockClearExtraStage(); + } + // // update persistent statistics diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 32cafba6f7..028ebf55b5 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -44,6 +44,7 @@ #include "Inventory.h" #include "Course.h" #include "NoteDataUtil.h" +#include "UnlockSystem.h" // // Defines @@ -1810,7 +1811,11 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) fMaxSurviveSeconds = max( fMaxSurviveSeconds, GAMESTATE->m_CurStageStats.fAliveSeconds[p] ); ASSERT( fMaxSurviveSeconds > 0 ); m_textSurviveTime.SetText( "TIME: " + SecondsToTime(fMaxSurviveSeconds) ); - SET_XY( m_textSurviveTime ); + SET_XY_AND_ON_COMMAND( m_textSurviveTime ); + + // if unlocks are on, update fail extra stage count + if (PREFSMAN->m_bUseUnlockSystem) + GAMESTATE->m_pUnlockingSys->UnlockFailExtraStage(); } SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("gameplay failed") ); diff --git a/stepmania/src/UnlockSystem.cpp b/stepmania/src/UnlockSystem.cpp index 0d7fb85a16..0e8df6d08a 100644 --- a/stepmania/src/UnlockSystem.cpp +++ b/stepmania/src/UnlockSystem.cpp @@ -46,6 +46,10 @@ UnlockSystem::UnlockSystem() void UnlockSystem::RouletteUnlock( const Song *song ) { + // if its an extra stage, don't count it + if (GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2()) + return; + SongEntry *p = FindSong( song ); if (!p) return; // does not exist