Hiviexd / MVTaikoChecks

A set of osu!taiko Mapset Verifier checks
3 stars 2 forks source link

Add support for checking substitute consecutive-gap rest moments + spinner/slider support #2

Closed hongaaronc closed 1 year ago

hongaaronc commented 1 year ago

Summary

In the osu!taiko ranking criteria, the Muzukashii guidelines specify an alternative substitute for rest moments, which involve using several consecutive smaller rest moments in place of a larger singular rest moment:

Using at least 3 consecutive rest moments that are 1/1 is an acceptable substitute if either the pace of the music makes rest moments counter-intuitive or if the continuously mapped part is overall more forgiving to the player.

The current Taiko mapset verifier plugin does not check for this, and only supports the larger singular 3/2 rest moment.

This pull request adds support for the substitute. It also considers 3 consecutive rest moments that are all larger than 1/1 but smaller than 3/2 also acceptable. The updated logic also now considers spinner and slider duration as continuous mapping.

This includes a pretty large refactor for the RestMomentCheck.cs class overall to make this happen.

Other consecutive substitutes can also easily be added with these changes.

Approach

The previous logic looked at all hit objects in a map and took each adjacent pair, calculated the gap between them, and used that to determine if an object was a "rest moment" or not.

The new logic has several significant logical changes to make the substitute checking work:

Known issues

Testing

I've tested this new logic, not only for detecting violations of the RC guideline, but by checking the output of all detected continuous mapping (including stuff that obeys the guidelines) in the map according to the update rest moment detection.

If you would like to view this output, enable following debug flag to true and recompile/reinstall the DLL: