Heck
Heck copied to clipboard
[WIP] Fix half jump for many v2 modcharts
Why?
Since 1.20, Beat Games seemingly decided to change how calculating the half jump duration works, making the minimum half jump duration go from 1 beat down to 0.25 beats. This change broke many old v2 modcharts, which took advantage of this quirk, leaving them in a state that makes them look horribly wrong (e.g. parts missing, showing too fast, etc).
This PR reverts the change Beat Games did to calculating the half jump duration, fixing many v2 modcharts, making them look a lot more proper. I am unsure as to if this code fits the general codestyle of Chroma/NE/Heck, but hopefully this is good enough.
Examples of broken modcharts with/without fix
"NULCTRL" (without fix): https://github.com/Aeroluna/Heck/assets/87990853/c225d307-7553-4916-b629-25777dfed51e "NULCTRL" (with fix): https://github.com/Aeroluna/Heck/assets/87990853/12ce8788-eef0-4be7-a7cf-14b275ee37fd
"Try" (without fix): https://github.com/Aeroluna/Heck/assets/87990853/109f2d2e-09b5-4c76-bf1a-56c349440e63 "Try" (with fix): https://github.com/Aeroluna/Heck/assets/87990853/2b7010d7-ee10-463d-917a-4238a0d213fb
There are many more broken modcharts that were like this, that should hopefully be mostly fixed with this PR.
Concern: While this would fix maps that used too much negative offset before, this would break maps that set HJD on objects to between 1 and 0.25 beats. I don't know of any maps which use the behaviour but this HJD change has been in the game for years now (since 1.18 actually).
Not to mention that this was considered cheating back then when we discussed it. Player shouldn't be able to modify any gameplay elements other than what the game already allows you to do. That's also why no one has fixed it since it was introduced.
I don't think this is cheating, this doesn't affect any other maps other than NE modcharts. Also, let me mention that back in the 1.18.0 era, before the NE rewrite, it was also using the minimum HJD value of 1, not 0.25 despite it being officially 0.25 in 1.18.0, you can see it here: https://github.com/Aeroluna/NoodleExtensions/blob/1ed55a6d82d5b189db27eb7a46e302989146b871/NoodleExtensions/HarmonyPatches/SpawnDataHelper.cs#L53
Besides, NE modcharts already modify the gameplay elements a lot, it's not like NE is ranked at all. I'd be concerned if this was being applied towards ranked, vanilla maps. This PR is also WIP and not finished, I have some more work in mind, and I'm not entirely sure if this is the solution I want to go for.
Applying to all V2 noodle maps can be problematic, as new maps can still use the V2 format, and I am sure there are already examples of V2 noodle maps being made and released after v1.20. Map upload date would need to be sampled, or this should only be applied to a predefined moderated community list of maps.
as stated, this would break maps just as much as break them, closing