@@ -18,6 +18,8 @@ import backend.Rating;
1818import objects .Character ;
1919import objects .NoteSplash ;
2020import flixel .FlxBasic ;
21+ import objects .NoteObject ;
22+ import objects .Note .SustainPart ;
2123
2224/*
2325The system is seperated into 3 classes:
@@ -323,6 +325,21 @@ class PlayField extends FlxTypedGroup<FlxBasic>
323325 {
324326 case " Native" :
325327 if (data > keyCount || data < 0 )return null ;
328+
329+ var noteList = getNotesWithEnd (data , Conductor .songPosition + ClientPrefs .data .badWindow , (note : Note ) -> ! note .tooLate );
330+ #if PE_MOD_COMPATIBILITY
331+ noteList .sort ((a , b ) -> Std .int ((b .strumTime + (b .lowPriority ? 10000 : 0 )) - (a .strumTime + (a .lowPriority ? 10000 : 0 )))); // so lowPriority actually works (even though i hate it lol!)
332+ #else
333+ noteList .sort ((a , b ) -> Std .int (b .strumTime - a .strumTime )); // so lowPriority actually works (even though i hate it lol!)
334+ #end
335+ while (noteList .length > 0 )
336+ {
337+ var note : Note = noteList .pop ();
338+ if (! note .blockHit ) noteHitCallback (note , this );
339+ return note ;
340+ }
341+ case " Native-old" :
342+ if (data > keyCount || data < 0 )return null ;
326343
327344 var noteList = getNotesWithEnd (data , Conductor .songPosition + ClientPrefs .data .badWindow , (note : Note ) -> note .requiresTap );
328345 #if PE_MOD_COMPATIBILITY
@@ -666,7 +683,7 @@ class PlayField extends FlxTypedGroup<FlxBasic>
666683 PlayState .instance .mashViolations ++ ;
667684 }
668685
669- case " Andromeda Engine (legacy)" :
686+ case " Andromeda (legacy)" :
670687 var noteList = getNotesWithEnd (data , Conductor .songPosition + ClientPrefs .data .badWindow , (note : Note ) -> ! note .isSustainNote && note .requiresTap );
671688 noteList .sort ((a ,b )-> Std .int (a .strumTime - b .strumTime )); // SHOULD be in order?
672689 // But just incase, we do this sort
@@ -882,13 +899,14 @@ class PlayField extends FlxTypedGroup<FlxBasic>
882899 modManager .updateObject (curDecBeat , daNote , modNumber );
883900
884901 // check for hold inputs
885- if (daNote .isSustainNote ){
902+ if (! daNote .isSustainNote ){
886903 if (daNote .column > keyCount - 1 ){
887904 garbage .push (daNote );
888905 continue ;
889906 }
890907 if (daNote .holdingTime < daNote .sustainLength && inControl && ! daNote .blockHit ){
891908 if (! daNote .tooLate && daNote .wasGoodHit ){
909+ trace (" hitting tail hold" );
892910 var isHeld : Bool = autoPlayed || keysPressed [daNote .column ];
893911 var wasHeld : Bool = daNote .isHeld ;
894912 daNote .isHeld = isHeld ;
@@ -907,9 +925,7 @@ class PlayField extends FlxTypedGroup<FlxBasic>
907925 var receptor = strumNotes [daNote .column ];
908926 var oldSteps : Int = Math .floor (daNote .holdingTime / Conductor .stepCrochet );
909927 var lastTime : Float = daNote .holdingTime ;
910- daNote .holdingTime = daNote .sustainLength ;
911- if (daNote .holdingTime > daNote .sustainLength )
912- daNote .holdingTime = daNote .sustainLength ;
928+ daNote .holdingTime = Conductor .songPosition - daNote .strumTime + 120 ;
913929 var currentSteps : Int = Math .floor (daNote .holdingTime / Conductor .stepCrochet );
914930 if (oldSteps < currentSteps )
915931 if (holdStepCallback != null )
@@ -923,7 +939,7 @@ class PlayField extends FlxTypedGroup<FlxBasic>
923939
924940 daNote .tripProgress = 1.0 ;
925941 }else
926- daNote .tripProgress - = elapsed / (daNote .maxReleaseTime );
942+ daNote .tripProgress - = elapsed / (daNote .maxReleaseTime * 1 );
927943
928944 // if rolls are ever implemented, uncomment this
929945 /* if(autoPlayed && daNote.tripProgress <= 0.5)
@@ -966,6 +982,19 @@ class PlayField extends FlxTypedGroup<FlxBasic>
966982 }
967983 }
968984 }
985+
986+ // kade is just evil lmao
987+ if (daNote .isParent && daNote .tooLate && ! daNote .isSustainNote )
988+ {
989+ PlayState .instance .health - = 0.15 ; // give a health punishment for failing a LN
990+ trace (" hold fell over at the start" );
991+ for (i in daNote .childs )
992+ {
993+ i .alpha = 0.3 ;
994+ i .susActive = false ;
995+ }
996+ }
997+
969998 // check for note deletion
970999 if (daNote .garbage )
9711000 garbage .push (daNote );
@@ -1027,7 +1056,7 @@ class PlayField extends FlxTypedGroup<FlxBasic>
10271056 }else {
10281057 for (data in 0 ... keyCount ){
10291058 if (keysPressed [data ]){
1030- var noteList = getNotesWithEnd (data , Conductor .songPosition );
1059+ var noteList = getNotesWithEnd (data , Conductor .songPosition , ( note : Note ) -> note . isSustainNote && note . prevNote != null );
10311060 #if PE_MOD_COMPATIBILITY
10321061 // so lowPriority actually works (even though i hate it lol!)
10331062 noteList .sort ((a , b ) -> Std .int ((b .strumTime + (b .lowPriority ? 10000 : 0 )) - (a .strumTime + (a .lowPriority ? 10000 : 0 ))));
@@ -1038,7 +1067,6 @@ class PlayField extends FlxTypedGroup<FlxBasic>
10381067 {
10391068 var note : Note = noteList .pop ();
10401069 noteHitCallback (note , this );
1041- if (! note .isSustainNote ) keysPressed [data ] = false ;
10421070 }
10431071 }
10441072 }
0 commit comments