diff --git a/src/NoteData.cpp b/src/NoteData.cpp index 96429530a0..a544876a58 100644 --- a/src/NoteData.cpp +++ b/src/NoteData.cpp @@ -462,7 +462,8 @@ int NoteData::GetLastRow() const bool NoteData::IsTap(const TapNote &tn, const int row) const { return (tn.type != TapNote::empty && tn.type != TapNote::mine - && tn.type != TapNote::lift && tn.type != TapNote::fake + && tn.type != TapNote::lift && tn.type != TapNote::fake + && tn.type != TapNote::autoKeysound && GAMESTATE->GetProcessedTimingData()->IsJudgableAtRow(row)); } @@ -610,9 +611,10 @@ int NoteData::GetNumRowsWithSimultaneousTaps( int iMinTaps, int iStartIndex, int for( int t=0; t= iMinTaps ) diff --git a/src/NoteDataWithScoring.cpp b/src/NoteDataWithScoring.cpp index 3ce551b064..633e5d4cc4 100644 --- a/src/NoteDataWithScoring.cpp +++ b/src/NoteDataWithScoring.cpp @@ -250,7 +250,10 @@ TapNoteScore NoteDataWithScoring::MinTapNoteScore( const NoteData &in, unsigned { // Ignore mines (and fake arrows), or the score will always be TNS_None. const TapNote &tn = in.GetTapNote( t, row ); - if( tn.type == TapNote::empty || tn.type == TapNote::mine || tn.type == TapNote::fake ) + if (tn.type == TapNote::empty || + tn.type == TapNote::mine || + tn.type == TapNote::fake || + tn.type == TapNote::autoKeysound) continue; score = min( score, tn.result.tns ); } diff --git a/src/Player.cpp b/src/Player.cpp index 6e8b28c484..a3b9cec17c 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -1653,7 +1653,7 @@ int Player::GetClosestNoteDirectional( int col, int iStartRow, int iEndRow, bool const TapNote &tn = begin->second; if (!m_Timing->IsJudgableAtRow( begin->first )) break; - if( tn.type == TapNote::empty ) + if( tn.type == TapNote::empty || tn.type == TapNote::autoKeysound ) break; if( !bAllowGraded && tn.result.tns != TNS_None ) break; @@ -2238,9 +2238,11 @@ void Player::StepStrumHopo( int col, int row, const RageTimer &tm, bool bHeld, b break; case TapNote::attack: if( !bRelease && fSecondsFromExact <= GetWindowSeconds(TW_Attack) && !pTN->result.bHidden ) - score = TNS_W2; // sentinel + score = AllowW1() ? TNS_W1 : TNS_W2; // sentinel + break; + case TapNote::autoKeysound: + score = AllowW1() ? TNS_W1 : TNS_W2; break; - case TapNote::hold_head: // oh wow, this was causing the trigger before the hold heads // bug. (It was fNoteOffset > 0.f before) -DaisuMaster @@ -2744,6 +2746,10 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds ) if( m_pSecondaryScoreKeeper ) m_pSecondaryScoreKeeper->HandleTapScore( tn ); } + else if (tn.type == TapNote::autoKeysound) + { + tn.result.tns = AllowW1() ? TNS_W1 : TNS_W2; // sentinel + } else { tn.result.tns = TNS_Miss; @@ -2791,7 +2797,9 @@ void Player::UpdateJudgedRows() for( int iTrack = 0; iTrack < m_NoteData.GetNumTracks(); ++iTrack ) { const TapNote &tn = m_NoteData.GetTapNote( iTrack, iRow ); - if( tn.type == TapNote::empty || tn.type == TapNote::mine ) continue; + if (tn.type == TapNote::empty || + tn.type == TapNote::mine || + tn.type == TapNote::autoKeysound) continue; SetJudgment( tn.result.tns, iTrack, tn.result.fTapNoteOffset ); } } @@ -2973,8 +2981,11 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now ) // check to see if there's a note at the crossed row if( m_pPlayerState->m_PlayerController != PC_HUMAN ) { - if(tn.type != TapNote::empty && tn.type != TapNote::fake && tn.result.tns == TNS_None - && this->m_Timing->IsJudgableAtRow(iRow) ) + if (tn.type != TapNote::empty && + tn.type != TapNote::fake && + tn.type != TapNote::autoKeysound && + tn.result.tns == TNS_None && + this->m_Timing->IsJudgableAtRow(iRow) ) { Step( iTrack, iRow, now, false, false ); if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY ) @@ -2988,10 +2999,10 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now ) // handle autokeysounds here. for (int t = 0; t < m_NoteData.GetNumTracks(); ++t) { - const TapNote &tn = m_NoteData.GetTapNote(t, iRow); - if (tn.type == TapNote::autoKeysound) + const TapNote &tap = m_NoteData.GetTapNote(t, iRow); + if (tap.type == TapNote::autoKeysound) { - PlayKeysound(tn, TNS_None); + PlayKeysound(tap, TNS_None); } } } @@ -3151,7 +3162,10 @@ void Player::HandleTapRowScore( unsigned row ) { const TapNote &tn = m_NoteData.GetTapNote( track, row ); // Mines cannot be handled here. - if( tn.type == TapNote::empty || tn.type == TapNote::fake || tn.type == TapNote::mine ) + if (tn.type == TapNote::empty || + tn.type == TapNote::fake || + tn.type == TapNote::mine || + tn.type == TapNote::autoKeysound) continue; if( m_pPrimaryScoreKeeper ) m_pPrimaryScoreKeeper->HandleTapScore( tn );