Fix sustain clipping

banger
This commit is contained in:
CuckyDev
2021-08-02 23:25:04 -04:00
parent 05817e12ea
commit 7f5d4ac35f
2 changed files with 67 additions and 6 deletions

View File

@ -2968,7 +2968,7 @@ class PlayState extends MusicBeatState
// If not in botplay, only clip sustain notes when properly hit, botplay gets to clip it everytime
if (!PlayStateChangeables.botPlay)
{
if ((!daNote.mustPress || daNote.wasGoodHit || daNote.prevNote.wasGoodHit && !daNote.canBeHit)
if ((!daNote.mustPress || daNote.wasGoodHit || daNote.prevNote.wasGoodHit || holdArray[Math.floor(Math.abs(daNote.noteData))] && !daNote.canBeHit)
&& daNote.y - daNote.offset.y * daNote.scale.y + daNote.height >= (strumLine.y + Note.swagWidth / 2))
{
// Clip to strumline
@ -3009,7 +3009,7 @@ class PlayState extends MusicBeatState
if (!PlayStateChangeables.botPlay)
{
if ((!daNote.mustPress || daNote.wasGoodHit || daNote.prevNote.wasGoodHit && !daNote.canBeHit)
if ((!daNote.mustPress || daNote.wasGoodHit || daNote.prevNote.wasGoodHit || holdArray[Math.floor(Math.abs(daNote.noteData))] && !daNote.canBeHit)
&& daNote.y + daNote.offset.y * daNote.scale.y <= (strumLine.y + Note.swagWidth / 2))
{
// Clip to strumline
@ -3121,7 +3121,13 @@ class PlayState extends MusicBeatState
// WIP interpolation shit? Need to fix the pause issue
// daNote.y = (strumLine.y - (songTime - daNote.strumTime) * (0.45 * PlayState.SONG.speed));
if ((daNote.mustPress && daNote.tooLate && !PlayStateChangeables.useDownscroll || daNote.mustPress && daNote.tooLate
if (daNote.isSustainNote && daNote.wasGoodHit && Conductor.songPosition >= daNote.strumTime)
{
daNote.kill();
notes.remove(daNote, true);
daNote.destroy();
}
else if ((daNote.mustPress && daNote.tooLate && !PlayStateChangeables.useDownscroll || daNote.mustPress && daNote.tooLate
&& PlayStateChangeables.useDownscroll)
&& daNote.mustPress)
{
@ -4285,9 +4291,16 @@ class PlayState extends MusicBeatState
}
});
note.kill();
notes.remove(note, true);
note.destroy();
if (!note.isSustainNote)
{
note.kill();
notes.remove(note, true);
note.destroy();
}
else
{
note.wasGoodHit = true;
}
updateAccuracy();
}