diff --git a/stepmania/src/Combo.cpp b/stepmania/src/Combo.cpp index 7e758c69cb..95ac680067 100644 --- a/stepmania/src/Combo.cpp +++ b/stepmania/src/Combo.cpp @@ -95,8 +95,8 @@ void Combo::SetScore( TapNoteScore score, int iNumNotesInThisRow, Inventory* pIn case TNS_PERFECT: m_iCurComboOfPerfects += iNumNotesInThisRow; - if( rand() < 0.1f && m_iCurComboOfPerfects>=150 && (m_iCurComboOfPerfects%150)==0 && !GAMESTATE->m_bDemonstrationOrJukebox ) - SCREENMAN->SendMessageToTopScreen( SM_BeginToasty, 0 ); + if( m_iCurComboOfPerfects==250 && !GAMESTATE->m_bDemonstrationOrJukebox ) + SCREENMAN->SendMessageToTopScreen( SM_PlayToasty, 0 ); break; default: m_iCurComboOfPerfects = 0; diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index e560d95ff0..d1172c65a3 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -85,7 +85,6 @@ const ScreenMessage SM_PlayGo = ScreenMessage(SM_User+1); // received while STATE_DANCING const ScreenMessage SM_NotesEnded = ScreenMessage(SM_User+10); const ScreenMessage SM_BeginLoadingNextSong = ScreenMessage(SM_User+11); -const ScreenMessage SM_PlayToastySound = ScreenMessage(SM_User+12); // received while STATE_OUTRO const ScreenMessage SM_SaveChangedBeforeGoingBack = ScreenMessage(SM_User+20); @@ -1312,11 +1311,10 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) m_OniFade.OpenWipingRight( SM_None ); break; - case SM_BeginToasty: + case SM_PlayToasty: if( PREFSMAN->m_bEasterEggs ) - { - m_Toasty.StartTransitioning(); - } + if( !m_Toasty.IsTransitioning() && !m_Toasty.IsFinished() ) // don't play if we've already played it once + m_Toasty.StartTransitioning(); break; case SM_100Combo: diff --git a/stepmania/src/ScreenGameplay.h b/stepmania/src/ScreenGameplay.h index d2774546fa..5e1157ef4f 100644 --- a/stepmania/src/ScreenGameplay.h +++ b/stepmania/src/ScreenGameplay.h @@ -32,7 +32,7 @@ // messages sent by Combo -const ScreenMessage SM_BeginToasty = ScreenMessage(SM_User+104); +const ScreenMessage SM_PlayToasty = ScreenMessage(SM_User+104); const ScreenMessage SM_100Combo = ScreenMessage(SM_User+200); const ScreenMessage SM_200Combo = ScreenMessage(SM_User+201); diff --git a/stepmania/src/TransitionBGAnimation.h b/stepmania/src/TransitionBGAnimation.h index 7beff2d12c..894d5a8978 100644 --- a/stepmania/src/TransitionBGAnimation.h +++ b/stepmania/src/TransitionBGAnimation.h @@ -30,6 +30,7 @@ public: virtual void StartTransitioning( ScreenMessage send_when_done = SM_None ); bool IsTransitioning() { return m_State == transitioning; }; + bool IsFinished() { return m_State == finished; }; float GetLengthSeconds(); protected: