diff --git a/stepmania/src/ScoreKeeperMAX2.cpp b/stepmania/src/ScoreKeeperMAX2.cpp index d1cc55d923..8cb2a785f6 100644 --- a/stepmania/src/ScoreKeeperMAX2.cpp +++ b/stepmania/src/ScoreKeeperMAX2.cpp @@ -401,6 +401,8 @@ void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTa SCREENMAN->PostMessageToTopScreen( SM_900Combo, 0 ); else if( CROSSED(1000)) SCREENMAN->PostMessageToTopScreen( SM_1000Combo, 0 ); + else if( (iOldCombo / 100) < (iCurCombo / 100) && iCurCombo > 1000 ) + SCREENMAN->PostMessageToTopScreen( SM_ComboContinuing, 0 ); // new max combo GAMESTATE->m_CurStageStats.iMaxCombo[m_PlayerNumber] = max(GAMESTATE->m_CurStageStats.iMaxCombo[m_PlayerNumber], iCurCombo); diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index dd59001bf0..7eda30e3c9 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -572,6 +572,7 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration ) : Screen("ScreenGameplay") m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay 900 combo") ); m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay 1000 combo") ); m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay combo stopped") ); + m_announcerComboContinuing.Load(ANNOUNCER->GetPathTo("gameplay combo overflow") ); m_soundAssistTick.Load( THEME->GetPathToS("ScreenGameplay assist tick") ); switch( GAMESTATE->m_PlayMode ) @@ -1663,7 +1664,13 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; } break; - + case SM_ComboContinuing: + if( SECS_SINCE_LAST_COMMENT > 2 ) + { + m_announcerComboContinuing.PlayRandom(); + m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; + } + break; case SM_BattleTrickLevel1: if( SECS_SINCE_LAST_COMMENT > 3 ) { @@ -1766,8 +1773,15 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) if (PREFSMAN->m_bUseUnlockSystem) GAMESTATE->m_pUnlockingSys->UnlockFailExtraStage(); } - - SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("gameplay failed") ); + + // Feels hackish. Feel free to make cleaner. + if(GAMESTATE->IsCourseMode()) + if(GAMESTATE->GetCourseSongIndex() > (int(m_apSongsQueue.size() / 2) - 1 ) && GAMESTATE->GetCourseSongIndex() < (int(m_apSongsQueue.size() / 2) + 1)) + SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo( "gameplay oni failed halfway" ) ); + else + SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo( "gameplay oni failed" ) ); + else + SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("gameplay failed") ); break; case SM_GoToScreenAfterFail: diff --git a/stepmania/src/ScreenGameplay.h b/stepmania/src/ScreenGameplay.h index 52d1937eca..935266a55f 100644 --- a/stepmania/src/ScreenGameplay.h +++ b/stepmania/src/ScreenGameplay.h @@ -43,6 +43,7 @@ const ScreenMessage SM_800Combo = ScreenMessage(SM_User+207); const ScreenMessage SM_900Combo = ScreenMessage(SM_User+208); const ScreenMessage SM_1000Combo = ScreenMessage(SM_User+209); const ScreenMessage SM_ComboStopped = ScreenMessage(SM_User+210); +const ScreenMessage SM_ComboContinuing = ScreenMessage(SM_User+211); const ScreenMessage SM_BattleTrickLevel1 = ScreenMessage(SM_User+301); const ScreenMessage SM_BattleTrickLevel2 = ScreenMessage(SM_User+302); @@ -169,6 +170,7 @@ protected: RandomSample m_announcer900Combo; RandomSample m_announcer1000Combo; RandomSample m_announcerComboStopped; + RandomSample m_announcerComboContinuing; RandomSample m_announcerBattleTrickLevel1; RandomSample m_announcerBattleTrickLevel2; RandomSample m_announcerBattleTrickLevel3;