From ad40c01161d3f159918de2d6ce4ae85767529c71 Mon Sep 17 00:00:00 2001 From: Chris Gomez Date: Tue, 25 Feb 2003 21:50:34 +0000 Subject: [PATCH] Oni mode scoring fixes (don't subtract dance points in oni mode; marvelous worth 3 in oni only) --- stepmania/src/GameConstantsAndTypes.h | 8 ++++---- stepmania/src/NoteData.cpp | 9 ++++++++- stepmania/src/ScoreKeeperMAX2.cpp | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 1999472237..43760e5560 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -138,16 +138,16 @@ enum TapNoteScore { NUM_TAP_NOTE_SCORES }; -inline int TapNoteScoreToDancePoints( TapNoteScore tns ) +inline int TapNoteScoreToDancePoints( TapNoteScore tns, bool bOni = false ) { switch( tns ) { - case TNS_MARVELOUS: return +2; // this should be +3, but only in Oni. Figure out how to support this later + case TNS_MARVELOUS: return bOni ? +3 : +2; case TNS_PERFECT: return +2; case TNS_GREAT: return +1; case TNS_GOOD: return +0; - case TNS_BOO: return -4; - case TNS_MISS: return -8; + case TNS_BOO: return bOni ? 0 : -4; + case TNS_MISS: return bOni ? 0 : -8; case TNS_NONE: return 0; default: ASSERT(0); return 0; } diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index a7faeac334..a0f63d8b49 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -318,6 +318,7 @@ int NoteData::GetPossibleDancePoints() // //Your "Dance Points" are calculated as follows: // +//A "Marvelous" is worth 3 points, but oniy when in oni mode //A "Perfect" is worth 2 points //A "Great" is worth 1 points //A "Good" is worth 0 points @@ -326,8 +327,14 @@ int NoteData::GetPossibleDancePoints() //An "OK" (Successful Freeze step) will add 6 points //A "NG" (Unsuccessful Freeze step) is worth 0 points - return GetNumTapNotes()*TapNoteScoreToDancePoints(TNS_PERFECT) + // not Marvelous + if(PREFSMAN->m_bMarvelousTiming && GAMESTATE->m_PlayMode == PLAY_MODE_ONI) // score out of marvelous for oni mode only + { + return GetNumTapNotes()*TapNoteScoreToDancePoints(TNS_MARVELOUS) + // Marvelous for oni GetNumHoldNotes()*HoldNoteScoreToDancePoints(HNS_OK); + } + + return GetNumTapNotes()*TapNoteScoreToDancePoints(TNS_PERFECT) + // not Marvelous + GetNumHoldNotes()*HoldNoteScoreToDancePoints(HNS_OK); } /* ConvertHoldNotesTo2sAnd3s also clears m_iHoldNotes; diff --git a/stepmania/src/ScoreKeeperMAX2.cpp b/stepmania/src/ScoreKeeperMAX2.cpp index e96aa2ecc3..96008d0e8f 100644 --- a/stepmania/src/ScoreKeeperMAX2.cpp +++ b/stepmania/src/ScoreKeeperMAX2.cpp @@ -53,7 +53,7 @@ void ScoreKeeperMAX2::HandleNoteScore( TapNoteScore score, int iNumTapsInRow ) ASSERT( iNumTapsInRow >= 1 ); // update dance points for Oni lifemeter - GAMESTATE->m_CurStageStats.iActualDancePoints[m_PlayerNumber] += iNumTapsInRow * TapNoteScoreToDancePoints( score ); + GAMESTATE->m_CurStageStats.iActualDancePoints[m_PlayerNumber] += iNumTapsInRow * TapNoteScoreToDancePoints( score, GAMESTATE->m_PlayMode == PLAY_MODE_ONI ); GAMESTATE->m_CurStageStats.iTapNoteScores[m_PlayerNumber][score] += iNumTapsInRow; /*