diff --git a/stepmania/src/ArrowEffects.cpp b/stepmania/src/ArrowEffects.cpp index f6a7479ed8..01066d2282 100644 --- a/stepmania/src/ArrowEffects.cpp +++ b/stepmania/src/ArrowEffects.cpp @@ -86,7 +86,7 @@ float ArrowGetYOffset( PlayerNumber pn, int iCol, float fNoteBeat, bool bAbsolut fYOffset += fAccels[PlayerOptions::ACCEL_BOOMERANG] * (fYOffset * SCALE( fYOffset, 0.f, SCREEN_HEIGHT, 1.5f, 0.5f )- fYOffset); float fScrollSpeed = GAMESTATE->m_CurrentPlayerOptions[pn].m_fScrollSpeed; - if( GAMESTATE->m_CurrentPlayerOptions[pn].m_fRandomSpeed > 1.0f && !bAbsolute ) + if( GAMESTATE->m_CurrentPlayerOptions[pn].m_fRandomSpeed > 0 && !bAbsolute ) { int seed = GAMESTATE->m_iRoundSeed + ( BeatToNoteRow( fNoteBeat ) << 8 ) + (iCol * 100); @@ -95,10 +95,12 @@ float ArrowGetYOffset( PlayerNumber pn, int iCol, float fNoteBeat, bool bAbsolut RandomFloat( seed ); float fRandom = RandomFloat( seed ); + /* Random speed always increases speed: a random speed of 10 indicates [1,11]. + * This keeps it consistent with other mods: 0 means no effect. */ fScrollSpeed *= SCALE( fRandom, 0.0f, 1.0f, - 1.0f, GAMESTATE->m_CurrentPlayerOptions[pn].m_fRandomSpeed ); // min. scale shold be defined as a constatnt somewhere + 1.0f, GAMESTATE->m_CurrentPlayerOptions[pn].m_fRandomSpeed + 1.0f ); } diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index ec10fffb96..3cc3794dd9 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -29,7 +29,7 @@ void PlayerOptions::Init() m_fPerspectiveTilt = 0; m_SpeedfPerspectiveTilt = 1.0f; m_fSkew = 0; m_SpeedfSkew = 1.0f; m_fPassmark = 0; m_SpeedfPassmark = 1.0f; - m_fRandomSpeed = 1.0f; m_SpeedfRandomSpeed = 1.0f; + m_fRandomSpeed = 0; m_SpeedfRandomSpeed = 1.0f; ZERO( m_bTurns ); ZERO( m_bTransforms ); m_bProTiming = false; @@ -132,6 +132,8 @@ CString PlayerOptions::GetString() const sReturn += AddPart( m_fPassmark, "Passmark"); + sReturn += AddPart( m_fRandomSpeed, "RandomSpeed" ); + if( m_bTurns[TURN_MIRROR] ) sReturn += "Mirror, "; if( m_bTurns[TURN_LEFT] ) sReturn += "Left, "; if( m_bTurns[TURN_RIGHT] ) sReturn += "Right, "; @@ -172,8 +174,6 @@ CString PlayerOptions::GetString() const if( !m_sNoteSkin.empty() && m_sNoteSkin.CompareNoCase("default")!=0 ) sReturn += m_sNoteSkin + ", "; - if( m_fRandomSpeed > 1 ) - sReturn += "RandomSpeed, "; if( sReturn.GetLength() > 2 ) sReturn.erase( sReturn.GetLength()-2 ); // delete the trailing ", " return sReturn; @@ -515,6 +515,7 @@ bool PlayerOptions::operator==( const PlayerOptions &other ) const COMPARE(m_fTimeSpacing); COMPARE(m_fScrollSpeed); COMPARE(m_fScrollBPM); + COMPARE(m_fRandomSpeed); COMPARE(m_fDark); COMPARE(m_fBlind); COMPARE(m_fCover);