From 4d6b425ae43b294a9557db1b5d6e6cfd1a235709 Mon Sep 17 00:00:00 2001 From: HEIHUAa <112499486+HEIHUAa@users.noreply.github.com> Date: Thu, 5 Feb 2026 21:21:29 +0800 Subject: [PATCH 1/4] Update StrumLine.hx --- source/funkin/game/StrumLine.hx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/source/funkin/game/StrumLine.hx b/source/funkin/game/StrumLine.hx index 1fc38c0f9..5a591ec9b 100644 --- a/source/funkin/game/StrumLine.hx +++ b/source/funkin/game/StrumLine.hx @@ -290,6 +290,9 @@ class StrumLine extends FlxTypedGroup { __justReleased.resize(members.length); } + if (__notePerStrum.length != members.length) + __notePerStrum = cast new haxe.ds.Vector(members.length); // [for(_ in 0...members.length) null]; + for (i in 0...members.length) { __pressed[i] = members[i].__getPressed(this); __justPressed[i] = members[i].__getJustPressed(this); @@ -304,8 +307,6 @@ class StrumLine extends FlxTypedGroup { __justPressed = CoolUtil.getDefault(event.justPressed, []); __justReleased = CoolUtil.getDefault(event.justReleased, []); - __notePerStrum = cast new haxe.ds.Vector(members.length); // [for(_ in 0...members.length) null]; - if (__pressed.contains(true)) { if (__justPressed.contains(true)) { notes.forEachAlive(__inputProcessJustPressed); @@ -313,9 +314,11 @@ class StrumLine extends FlxTypedGroup { if (!ghostTapping) for (k => pr in __justPressed) if (pr && __notePerStrum[k] == null) PlayState.instance.noteMiss(this, null, k, ID); // FUCK YOU - for (e in __notePerStrum) - if (e != null) + for (n => e in __notePerStrum) + if (e != null) { PlayState.instance.goodNoteHit(this, e); + __notePerStrum[n] = null; + } } for (c in characters) From c1ec3e16f293d2d54e4b72e9c1456f59c060cf2a Mon Sep 17 00:00:00 2001 From: HEIHUAa <112499486+HEIHUAa@users.noreply.github.com> Date: Thu, 5 Feb 2026 22:54:41 +0800 Subject: [PATCH 2/4] Update StrumLine.hx --- source/funkin/game/StrumLine.hx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/source/funkin/game/StrumLine.hx b/source/funkin/game/StrumLine.hx index 5a591ec9b..4764721ee 100644 --- a/source/funkin/game/StrumLine.hx +++ b/source/funkin/game/StrumLine.hx @@ -284,16 +284,18 @@ class StrumLine extends FlxTypedGroup { if (cpu) return; - if (__pressed.length != members.length) { - __pressed.resize(members.length); - __justPressed.resize(members.length); - __justReleased.resize(members.length); + final membersLength = members.length; + + if (__pressed.length != membersLength) { + __pressed.resize(membersLength); + __justPressed.resize(membersLength); + __justReleased.resize(membersLength); } - if (__notePerStrum.length != members.length) - __notePerStrum = cast new haxe.ds.Vector(members.length); // [for(_ in 0...members.length) null]; + if (__notePerStrum.length != membersLength) + __notePerStrum = cast new haxe.ds.Vector(membersLength); // [for(_ in 0...members.length) null]; - for (i in 0...members.length) { + for (i in 0...membersLength) { __pressed[i] = members[i].__getPressed(this); __justPressed[i] = members[i].__getJustPressed(this); __justReleased[i] = members[i].__getJustReleased(this); From 60a526783e18360c7bc70cacfceb5d907e6e7d48 Mon Sep 17 00:00:00 2001 From: HEIHUAa <112499486+HEIHUAa@users.noreply.github.com> Date: Thu, 5 Feb 2026 23:29:09 +0800 Subject: [PATCH 3/4] Update StrumLine.hx --- source/funkin/game/StrumLine.hx | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/source/funkin/game/StrumLine.hx b/source/funkin/game/StrumLine.hx index 4764721ee..9b7926dc2 100644 --- a/source/funkin/game/StrumLine.hx +++ b/source/funkin/game/StrumLine.hx @@ -258,21 +258,28 @@ class StrumLine extends FlxTypedGroup { } } function __inputProcessJustPressed(note:Note) { - if (__justPressed[note.strumID] && !note.isSustainNote && !note.wasGoodHit && note.canBeHit) { - var cur = __notePerStrum[note.strumID]; - var songPos = __updateNote_songPos; - - var noteDist = Math.abs(note.strumTime - songPos); - var curDist = cur != null ? Math.abs(cur.strumTime - songPos) : 999999; + var strumID = note.strumID; + if (!__justPressed[strumID] || note.isSustainNote || note.wasGoodHit || !note.canBeHit) return; + + var cur = __notePerStrum[strumID]; + if (cur == null) { + __notePerStrum[strumID] = note; + return; + } - var notePenalty = note.avoid ? 1 : 0; - var curPenalty = (cur != null && cur.avoid) ? 1 : 0; + var songPos = __updateNote_songPos; + var noteDist = Math.abs(note.strumTime - songPos); - if (cur == null - || notePenalty < curPenalty - || (notePenalty == curPenalty && noteDist < curDist)) - __notePerStrum[note.strumID] = note; + var noteShouldAvoid = note.avoid; + var curShouldAvoid = cur.avoid; + if (!noteShouldAvoid && curShouldAvoid) { + __notePerStrum[strumID] = note; + return; } + + var curDist = Math.abs(cur.strumTime - songPos); + if (noteShouldAvoid == curShouldAvoid && noteDist < curDist) + __notePerStrum[strumID] = note; } /** From 98e879a47c961b084523164e41ecd00c4deaa703 Mon Sep 17 00:00:00 2001 From: HEIHUAa <112499486+HEIHUAa@users.noreply.github.com> Date: Fri, 6 Feb 2026 18:53:40 +0800 Subject: [PATCH 4/4] Update StrumLine.hx --- source/funkin/game/StrumLine.hx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/funkin/game/StrumLine.hx b/source/funkin/game/StrumLine.hx index 9b7926dc2..03d51061a 100644 --- a/source/funkin/game/StrumLine.hx +++ b/source/funkin/game/StrumLine.hx @@ -320,14 +320,16 @@ class StrumLine extends FlxTypedGroup { if (__justPressed.contains(true)) { notes.forEachAlive(__inputProcessJustPressed); - if (!ghostTapping) for (k => pr in __justPressed) if (pr && __notePerStrum[k] == null) - PlayState.instance.noteMiss(this, null, k, ID); // FUCK YOU - - for (n => e in __notePerStrum) - if (e != null) { - PlayState.instance.goodNoteHit(this, e); - __notePerStrum[n] = null; - } + for (k => pr in __justPressed) + { + var note = __notePerStrum[k]; + + if (note != null) { + PlayState.instance.goodNoteHit(this, note); + __notePerStrum[k] = null; + } else if (pr && !ghostTapping) + PlayState.instance.noteMiss(this, null, k, ID); + } } for (c in characters)