diff --git a/AquaMai/AquaMai.csproj b/AquaMai/AquaMai.csproj
index 14c15867..e0ae62e0 100644
--- a/AquaMai/AquaMai.csproj
+++ b/AquaMai/AquaMai.csproj
@@ -304,6 +304,7 @@ DEBUG
+
@@ -342,6 +343,7 @@ DEBUG
+
diff --git a/AquaMai/AquaMai.toml b/AquaMai/AquaMai.toml
index 736c1c8d..262b6f09 100644
--- a/AquaMai/AquaMai.toml
+++ b/AquaMai/AquaMai.toml
@@ -59,6 +59,8 @@ CustomNoteSkin=false
# Hide "TRACK X" text and DX/Standard chart display box
# For recording chart confirmation
TrackStartProcessTweak=false
+# Cannot be used together with HanabiFix
+HideHanabi=false
[Fix]
# Allow login with higher data version
@@ -79,6 +81,8 @@ FontFix=true
# Make the Critical judgment of BreakSlide flash like BreakTap
# Align the judgment display of arc-shaped Slide with the judgment line accurately (it was slightly off before)
SlideJudgeTweak=true
+# Cannot be used together with HideHanabi
+HanabiFix=false
[Utils]
# Log user ID on login
diff --git a/AquaMai/AquaMai.zh.toml b/AquaMai/AquaMai.zh.toml
index 77977f97..af6546e9 100644
--- a/AquaMai/AquaMai.zh.toml
+++ b/AquaMai/AquaMai.zh.toml
@@ -68,6 +68,9 @@ CustomNoteSkin=false
# 隐藏“TRACK X”字样和 DX/标准谱面的显示框
# 录制谱面确认用
TrackStartProcessTweak=false
+# 完全隐藏烟花
+# 不能和 HanabiFix 一起使用
+HideHanabi=false
# ===================================
# 修复一些潜在的问题
@@ -95,6 +98,9 @@ FontFix=true
# 让 BreakSlide 的 Critical 判定也可以像 BreakTap 一样闪烁
# 让圆弧形的 Slide 的判定显示与判定线精确对齐 (原本会有一点歪)
SlideJudgeTweak=true
+# 修复 1p 模式下的烟花大小
+# 不能和 HideHanabi 一起使用
+HanabiFix=true
[Utils]
# 登录时将 UserID 输出到日志
diff --git a/AquaMai/Config.cs b/AquaMai/Config.cs
index 6c4eb180..de88c4d0 100644
--- a/AquaMai/Config.cs
+++ b/AquaMai/Config.cs
@@ -41,6 +41,7 @@ public class UXConfig
public bool CustomFont { get; set; }
public bool CustomNoteSkin { get; set; }
public bool TrackStartProcessTweak { get; set; }
+ public bool HideHanabi { get; set; }
public string CustomVersionString { get; set; } = "";
public string CustomPlaceName { get; set; } = "";
public string ExecOnIdle { get; set; } = "";
@@ -58,6 +59,7 @@ public class FixConfig
public bool FrameRateLock { get; set; }
public bool FontFix { get; set; }
public bool SlideJudgeTweak { get; set; }
+ public bool HanabiFix { get; set; }
}
public class UtilsConfig
diff --git a/AquaMai/Fix/HanabiFix.cs b/AquaMai/Fix/HanabiFix.cs
new file mode 100644
index 00000000..429037fa
--- /dev/null
+++ b/AquaMai/Fix/HanabiFix.cs
@@ -0,0 +1,20 @@
+using Fx;
+using HarmonyLib;
+using Monitor;
+using UnityEngine;
+
+namespace AquaMai.Fix;
+
+public class HanabiFix
+{
+ [HarmonyPatch(typeof(TapCEffect), "SetUpParticle")]
+ [HarmonyPostfix]
+ public static void FixMaxSize(TapCEffect __instance, FX_Mai2_Note_Color ____particleControler)
+ {
+ var entities = ____particleControler.GetComponentsInChildren(true);
+ foreach (var entity in entities)
+ {
+ entity.maxParticleSize = 1f;
+ }
+ }
+}
diff --git a/AquaMai/UX/HideHanabi.cs b/AquaMai/UX/HideHanabi.cs
new file mode 100644
index 00000000..4a3a6819
--- /dev/null
+++ b/AquaMai/UX/HideHanabi.cs
@@ -0,0 +1,20 @@
+using Fx;
+using HarmonyLib;
+using Monitor;
+using UnityEngine;
+
+namespace AquaMai.UX;
+
+public class HideHanabi
+{
+ [HarmonyPatch(typeof(TapCEffect), "SetUpParticle")]
+ [HarmonyPostfix]
+ public static void FixZeroSize(TapCEffect __instance, FX_Mai2_Note_Color ____particleControler)
+ {
+ var entities = ____particleControler.GetComponentsInChildren(true);
+ foreach (var entity in entities)
+ {
+ entity.maxParticleSize = 0f;
+ }
+ }
+}