fix some issues with ar & hd, reduce aim on relax

This commit is contained in:
tsunyoku
2023-07-27 23:26:07 +01:00
parent eff15108bd
commit 7776de876d
2 changed files with 7 additions and 8 deletions
+1
View File
@@ -144,6 +144,7 @@ impl<'map> OsuStars<'map> {
} }
if mods.rx() { if mods.rx() {
aim_rating *= 0.9;
speed_rating = 0.0; speed_rating = 0.0;
flashlight_rating *= 0.7; flashlight_rating *= 0.7;
} }
+6 -8
View File
@@ -470,8 +470,7 @@ impl OsuPpInner {
if self.mods.hd() { if self.mods.hd() {
// * We want to give more reward for lower AR when it comes to aim and HD. This nerfs high AR and buffs lower AR. // * We want to give more reward for lower AR when it comes to aim and HD. This nerfs high AR and buffs lower AR.
let hd_factor = if self.mods.rx() { 0.02 } else { 0.04 }; aim_value *= 1.0 + 0.04 * (12.0 - self.attrs.ar);
aim_value *= 1.0 + hd_factor * (11.0 - self.attrs.ar);
} }
// * We assume 15% of sliders in a map are difficult since there's no way to tell from the performance calculator. // * We assume 15% of sliders in a map are difficult since there's no way to tell from the performance calculator.
@@ -533,8 +532,7 @@ impl OsuPpInner {
if self.mods.hd() { if self.mods.hd() {
// * We want to give more reward for lower AR when it comes to aim and HD. // * We want to give more reward for lower AR when it comes to aim and HD.
// * This nerfs high AR and buffs lower AR. // * This nerfs high AR and buffs lower AR.
let hd_factor = if self.mods.ap() { 0.02 } else { 0.04 }; speed_value *= 1.0 + 0.04 * (12.0 - self.attrs.ar);
speed_value *= 1.0 + hd_factor * (11.0 - self.attrs.ar);
} }
// * Calculate accuracy assuming the worst case scenario // * Calculate accuracy assuming the worst case scenario
@@ -568,6 +566,10 @@ impl OsuPpInner {
} }
fn compute_accuracy_value(&self) -> f64 { fn compute_accuracy_value(&self) -> f64 {
if self.mods.rx() {
return 0.0;
}
// * This percentage only considers HitCircles of any value - in this part // * This percentage only considers HitCircles of any value - in this part
// * of the calculation we focus on hitting the timing hit window. // * of the calculation we focus on hitting the timing hit window.
let amount_hit_objects_with_acc = self.attrs.n_circles; let amount_hit_objects_with_acc = self.attrs.n_circles;
@@ -604,10 +606,6 @@ impl OsuPpInner {
acc_value *= 1.02; acc_value *= 1.02;
} }
if self.mods.rx() {
acc_value *= 0.5;
}
acc_value acc_value
} }