This is a slightly more intelligent angle repetition nerf that checks
the previous vectors to see if the pattern has any rotation or not, this
allows for harsh nerfs on current meta patterning like the N, X and V
patterns while keeping things like rotating 1-2s and triangles less
nerfed. The effect the vectors have on angle repetition is adjustable.
---------
Co-authored-by: StanR <hi@stanr.info>
Changes snap aim scaling to d/t^1.65 and speedflow scaling to d/t^1.9
(roughly). This is as much as we can nudge scaling towards d/t without
breaking everything
Currently, live aim evaluation prioritizes high bpms with lower
distances over low bpms with higher distances, something you may have
heard colloquially called "d/t^2" in here. This creates an inherent DT
advantage / NM & HR disadvantage in the average aim case.
This change makes it so the evaluation is nudged closer to the ideal
distance/time aim evaluation. In practice, higher spacing (distance)
and/or slower jumps should generally see a buff, lower spacing
(distance) and/or faster jumps should generally see a nerf. This
includes some 3-mod scores as HR spacing is underweighted regardless of
bpm.
It also affects streams the same way, where faster high bpm low spacing
streams (speedflow) are nerfed and high spacing low bpm streams are
buffed.
As a disclaimer: this isn't a complete fix, it is moreso a step in the
right direction (hence, a Nudge, per se) towards the ideal d/t world.
This also doesn't change anything angle-related so high-spacing farm
maps will gain pp - this will be addressed separately after this change.
https://pp.huismetbenen.nl/rankings/players/reduce-strain-influence
---------
Co-authored-by: James Wilson <tsunyoku@gmail.com>
This changes how the current/previous velocity is being calculated in
Aim. Currently it's being calculated as an addition of 2 velocities
together which isn't really correct, instead here velocity is being
calculated as a (combined distances) / (combined times). On practice
this buffs underweighted slider maps while overweighted ones stay about
the same
https://pp.huismetbenen.nl/rankings/players/use-proper-slider-velocity
This changes difficulty calculations to use `ClockRate` and `HitWindows`
from `DifficultyHitObjects` instead of providing them manually. It's
main purpose is unifying all the calculations to use the same source of
truth, and also allowing future work on supporting variable clockrates.
---------
Co-authored-by: James Wilson <tsunyoku@gmail.com>
This does a couple of things:
- Adds slider->circle effective ratio adjustment
- Removes same polarity nerf for single delta count islands (which are
pretty much THE most unpredictable)
- Makes polarity nerf check actual deltas and not just the count
- Excludes spinners from ratio calculation
https://pp.huismetbenen.nl/rankings/players/minor-rhythm-improvements
---------
Co-authored-by: James Wilson <tsunyoku@gmail.com>
It removes unnecessary function `DurationSpentInvisible` function that
just rescaled preempt.
Now it's just using preempt directly.
I've made multiplier to be very close to the current one, so pp deltas
should be minimal.
This PR aims to replace the current bonuses used to award high approach
rates and scores made using the Hidden mod with a Reading skill that
takes into account each note's reading difficulty separately, Important
to note is the fact that as reading difficulty is now a skill the
bonuses are now additive instead of multiplicative, meaning there are
vast changes in deltas on the high and low end of scores. Due to the
nature of adding a new skill new difficulty and performance attributes
need to be added.
Huis page:
[https://pp.huismetbenen.nl/rankings/admin/kwotaq-reading](url)
---------
Co-authored-by: apollo-dw <83023433+apollo-dw@users.noreply.github.com>
Co-authored-by: js1086 <js1086@student.le.ac.uk>
Co-authored-by: tsunyoku <tsunyoku@gmail.com>
Co-authored-by: StanR <hi@stanr.info>
## This pr resolves the issue with the angle calculation.
The old system calculated the angle between three objects. If the last
object was a long slider that the player needed to follow, the system
calculated the angle using only the slider’s end point and the previous
object, which caused long sliders to have incorrect angle values.
---------
Co-authored-by: StanR <hi@stanr.info>
Co-authored-by: James Wilson <tsunyoku@gmail.com>
* Buff precision difficulty rating in osu!
* Fix position repetition calculation
* Fix aim evaluator crashing, move small circle bonus calculation, adjust the curve slightly
* Refactor
* Fix code quality
* Semicolon
* Apply small circle bonus to speed too
* Fix formatting
---------
Co-authored-by: James Wilson <tsunyoku@gmail.com>
* Move difficulty calculation fields from `Slider` to `OsuDifficultyHitObject`
* Remove redundant check
* Use `LastObject` where possible
* Update tests
* Make `LazyTravelDistance` `double`
---------
Co-authored-by: James Wilson <tsunyoku@gmail.com>