Fix combos (does ScoreKeeper5th need fixing too?)
This commit is contained in:
@@ -1290,32 +1290,34 @@ void PlayerMinus::HandleTapRowScore( unsigned row )
|
|||||||
|
|
||||||
/* Update miss combo, and handle "combo stopped" messages. */
|
/* Update miss combo, and handle "combo stopped" messages. */
|
||||||
int iDummy = 0;
|
int iDummy = 0;
|
||||||
int &iCurCombo = m_pPlayerStageStats ? m_pPlayerStageStats->iCurCombo : iDummy;
|
int &iCurMissCombo = m_pPlayerStageStats ? m_pPlayerStageStats->iCurMissCombo : iDummy;
|
||||||
switch( scoreOfLastTap )
|
switch( scoreOfLastTap )
|
||||||
{
|
{
|
||||||
case TNS_MARVELOUS:
|
case TNS_MARVELOUS:
|
||||||
case TNS_PERFECT:
|
case TNS_PERFECT:
|
||||||
case TNS_GREAT:
|
case TNS_GREAT:
|
||||||
iCurCombo = 0;
|
iCurMissCombo = 0;
|
||||||
SCREENMAN->PostMessageToTopScreen( SM_MissComboAborted, 0 );
|
SCREENMAN->PostMessageToTopScreen( SM_MissComboAborted, 0 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TNS_MISS:
|
case TNS_MISS:
|
||||||
++iCurCombo;
|
++iCurMissCombo;
|
||||||
m_iDCState = AS2D_MISS; // update dancing 2d characters that may have missed a note
|
m_iDCState = AS2D_MISS; // update dancing 2d characters that may have missed a note
|
||||||
|
|
||||||
case TNS_GOOD:
|
case TNS_GOOD:
|
||||||
case TNS_BOO:
|
case TNS_BOO:
|
||||||
if( iCurCombo > 50 )
|
if( iCurMissCombo > 50 )
|
||||||
SCREENMAN->PostMessageToTopScreen( SM_ComboStopped, 0 );
|
SCREENMAN->PostMessageToTopScreen( SM_ComboStopped, 0 );
|
||||||
iCurCombo = 0;
|
iCurMissCombo = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ASSERT( 0 );
|
ASSERT( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The score keeper updates the hit combo. Remember the old combo for handling announcers. */
|
/* The score keeper updates the hit combo. */
|
||||||
|
int &iCurCombo = m_pPlayerStageStats ? m_pPlayerStageStats->iCurCombo : iDummy;
|
||||||
|
/* Remember the old combo for handling announcers. */
|
||||||
const int iOldCombo = 0;
|
const int iOldCombo = 0;
|
||||||
if( m_pPlayerStageStats )
|
if( m_pPlayerStageStats )
|
||||||
m_pPlayerStageStats->iCurCombo;
|
m_pPlayerStageStats->iCurCombo;
|
||||||
|
|||||||
@@ -357,9 +357,13 @@ void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTa
|
|||||||
}
|
}
|
||||||
const int ComboCountIfHit = ComboIsPerRow? 1: iNumTapsInRow;
|
const int ComboCountIfHit = ComboIsPerRow? 1: iNumTapsInRow;
|
||||||
TapNoteScore MinScoreToContinueCombo = GAMESTATE->m_PlayMode == PLAY_MODE_ONI? TNS_PERFECT:TNS_GREAT;
|
TapNoteScore MinScoreToContinueCombo = GAMESTATE->m_PlayMode == PLAY_MODE_ONI? TNS_PERFECT:TNS_GREAT;
|
||||||
|
TapNoteScore MinScoreToMaintainCombo = TNS_GREAT;
|
||||||
|
|
||||||
if( scoreOfLastTap >= MinScoreToContinueCombo )
|
if( scoreOfLastTap >= MinScoreToContinueCombo )
|
||||||
m_pPlayerStageStats->iCurCombo += ComboCountIfHit;
|
m_pPlayerStageStats->iCurCombo += ComboCountIfHit;
|
||||||
|
else
|
||||||
|
if( scoreOfLastTap < MinScoreToMaintainCombo )
|
||||||
|
m_pPlayerStageStats->iCurCombo = 0;
|
||||||
|
|
||||||
AddScore( scoreOfLastTap ); // only score once per row
|
AddScore( scoreOfLastTap ); // only score once per row
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user