From ba925019684e3c5c1de2459885e01a44cfa85641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=8D=9A=7ENex?= <87421482+NexIsDumb@users.noreply.github.com> Date: Fri, 2 May 2025 17:55:21 +0200 Subject: [PATCH] adding maxMisses to ComboRating --- source/funkin/backend/scripting/HScript.hx | 2 +- .../backend/scripting/events/RatingUpdateEvent.hx | 2 +- source/funkin/game/PlayState.hx | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source/funkin/backend/scripting/HScript.hx b/source/funkin/backend/scripting/HScript.hx index ba0f4b77..888b8f3d 100644 --- a/source/funkin/backend/scripting/HScript.hx +++ b/source/funkin/backend/scripting/HScript.hx @@ -119,7 +119,7 @@ class HScript extends Script { interp.execute(expr); call("new", []); } - + #if GLOBAL_SCRIPT funkin.backend.scripting.GlobalScript.call("onScriptSetup", [this, "hscript"]); #end diff --git a/source/funkin/backend/scripting/events/RatingUpdateEvent.hx b/source/funkin/backend/scripting/events/RatingUpdateEvent.hx index 96ad7e7e..b2d8cff4 100644 --- a/source/funkin/backend/scripting/events/RatingUpdateEvent.hx +++ b/source/funkin/backend/scripting/events/RatingUpdateEvent.hx @@ -2,7 +2,7 @@ package funkin.backend.scripting.events; final class RatingUpdateEvent extends CancellableEvent { /** - New combo + New combo (may be null if no ratings were found) **/ public var rating:ComboRating; /** diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 15d9027d..463650f8 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -522,10 +522,10 @@ class PlayState extends MusicBeatState */ public function updateRating() { var rating = null; - var acc = get_accuracy(); + var acc = accuracy; // caching since it has a getter with an operation - Nex - for(e in comboRatings) - if (e.percent <= acc && (rating == null || rating.percent < e.percent)) + if (comboRatings != null && comboRatings.length > 0) for (e in comboRatings) + if ((e.percent <= acc && e.maxMisses >= misses) && (rating == null || (rating.percent < e.percent && e.maxMisses >= misses))) rating = e; var event = scripts.event("onRatingUpdate", EventManager.get(RatingUpdateEvent).recycle(rating, curRating)); @@ -1970,8 +1970,10 @@ final class ComboRating { public var percent:Float; public var rating:String; public var color:FlxColor; + public var maxMisses:Float; // Float since it could be Math.POSITIVE_INFINITY - Nex - public function new(percent:Float, rating:String, color:FlxColor) { + public function new(?percent:Float, ?rating:String, ?color:FlxColor, ?misses:Float) { + maxMisses = misses == null || Math.isNaN(misses) ? Math.POSITIVE_INFINITY : misses; this.percent = percent; this.rating = rating; this.color = color;