FunkinCrew / Funkin

A rhythm game made with HaxeFlixel
https://www.newgrounds.com/portal/view/770371
Other
2.99k stars 2.3k forks source link

Enhancement: Add a field to stop certain Note Kinds from being added to the Total Notes tally #3637

Open Keoiki opened 1 month ago

Keoiki commented 1 month ago

Issue Checklist

What is your suggestion, and why should it be implemented?

If you were to make a note kind which acts as a mine, something you're not supposed to hit, you'd want them to not count towards the total number of notes in a song. However, there is currently no way to do this that I know of, unless you made a script specifically to do this. It'd be much better if there was a built-in way to exclude note kinds from the total notes tally.

Below is a picture that shows what would normally be a 100%, but instead it's a 98% because I purposefully missed two mines I have as tests in the beginning of the song. screenshot-2024-10-10-22-06-33

KoloInDaCrib commented 1 month ago

You could just decrease HighScore.tallies.totalNotes by one for every mine note generated. Not the most conventional solution, sure, but a solution nonetheless

biomseed commented 1 month ago

You could just decrease HighScore.tallies.totalNotes by one for every mine note generated. Not the most conventional solution, sure, but a solution nonetheless

But that depends on the modder. I'm pretty sure there's a field that handles notes that are supposed to be missed, so whatever notes have that enabled should do that by default.

Keoiki commented 1 month ago

I'm pretty sure there's a field that handles notes that are supposed to be missed, so whatever notes have that enabled should do that by default.

That isn't a thing. Though you can make notes go past the strums without counting as a miss by cancelling the note miss event that is sent by the note.

biomseed commented 1 month ago

That isn't a thing. Though you can make notes go past the strums without counting as a miss by cancelling the note miss event that is sent by the note.

That's strange. I saw a port of the Tricky mod, and missing those notes had the expected behavior but played the missing animation upon missing them, and this was FIXED to work properly in v0.5.0 without any changes on the mod's end at all

LukerUpgradez commented 1 month ago

I played around with that Tricky port in 5.0 myself to see if I could figure out the issue a while back. The team did fix the visual/animation bug, but (as far as I’m aware) they are still factored into the accuracy calculation. It’s implemented just like how Keoiki describes it, where you cancel the miss event to prevent it from affecting the player. However, based on my rough reading of the code, I’m fairly sure the note is judged and added to the note tally before you get the chance to override it.

You need a scuffed fix to get around the accuracy calculation, like Kolosaki mentions. A more convenient means by which to mark a note as “not valid for accuracy calculation” could be useful, although I could see it being abused for weird results.

AbnormalPoof commented 1 month ago

I feel like a solution to this would be a canMiss or mustHit param in the Note Kinds, which makes the note missable and not count towards the Total Notes.

biomseed commented 1 month ago

I played around with that Tricky port in 5.0 myself to see if I could figure out the issue a while back. The team did fix the visual/animation bug, but (as far as I’m aware) they are still factored into the accuracy calculation. It’s implemented just like how Keoiki describes it, where you cancel the miss event to prevent it from affecting the player. However, based on my rough reading of the code, I’m fairly sure the note is judged and added to the note tally before you get the chance to override it.

You need a scuffed fix to get around the accuracy calculation, like Kolosaki mentions. A more convenient means by which to mark a note as “not valid for accuracy calculation” could be useful, although I could see it being abused for weird results.

You don't, actually. If it's a note being missed, then the NOTE_MISS event could override the cancelEvent() function to implement Kolosaki's solution, and also do super.cancelEvent(); to retain the actual cancellation.