diff --git a/src/performance/osu/OsuScore.cpp b/src/performance/osu/OsuScore.cpp index f7ff5c88..cc930c7f 100644 --- a/src/performance/osu/OsuScore.cpp +++ b/src/performance/osu/OsuScore.cpp @@ -196,10 +196,12 @@ void OsuScore::computeAccValue(const Beatmap& beatmap) // Lots of arbitrary values from testing. // Considering to use derivation from perfect accuracy in a probabilistic manner - assume normal distribution - _accValue = - pow(1.52163f, beatmap.DifficultyAttribute(_mods, Beatmap::OD)) * pow(betterAccuracyPercentage, 24) * - 2.83f; - + + _accValue = pow(1.52163f, beatmap.DifficultyAttribute(_mods, Beatmap::OD)) * pow(betterAccuracyPercentage, 24) * 2.83f; + + if ((_mods & EMods::TouchDevice) > 0)// Give a small boost to acc pp with touchscreen + _accValue = pow(1.58f, beatmap.DifficultyAttribute(_mods, Beatmap::OD)) * pow(betterAccuracyPercentage, 12) * 2.83f; + // Bonus for many hitcircles - it's harder to keep good accuracy up for longer _accValue *= std::min(1.15f, static_cast(pow(numHitObjectsWithAccuracy / 1000.0f, 0.3f)));