From f37df2e7b8e2d97b12083c15551c0fe8b89b759c Mon Sep 17 00:00:00 2001 From: waynebian01 Date: Thu, 20 Aug 2026 13:31:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=E8=87=B3=201.2.1.8=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=B8=8D?= =?UTF-8?q?=E5=B8=A6=E5=85=89=E7=8E=AF=E7=9A=84=E5=8D=95=E4=BD=8D=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=8A=9F=E8=83=BD=E5=8F=8A=E7=9B=B8=E5=85=B3=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fuyutsui/Fuyutsui.toc | 2 +- Modules/ModuleUnit.cs | 6 ++++++ Modules/UnitSelector.cs | 10 ++++++++++ Shigure.csproj | 6 +++--- UI/UnitEditorForm.cs | 31 +++++++++++++++++++++++++++++++ UI/UnitSummary.cs | 4 ++++ 6 files changed, 55 insertions(+), 4 deletions(-) diff --git a/Fuyutsui/Fuyutsui.toc b/Fuyutsui/Fuyutsui.toc index 5b946b08..b758566b 100644 --- a/Fuyutsui/Fuyutsui.toc +++ b/Fuyutsui/Fuyutsui.toc @@ -1,7 +1,7 @@ ## Interface: 120100 ## Title: Fuyutsui -## Version: 1.2.1.7 +## Version: 1.2.1.8 ## Author: Wayne Bian ## IconTexture: Interface\AddOns\Fuyutsui\core\Spell_Misc_EmotionHappy.blp ## OptionalDeps: LibRangeCheck-3.0 diff --git a/Modules/ModuleUnit.cs b/Modules/ModuleUnit.cs index d2b58c86..af700458 100644 --- a/Modules/ModuleUnit.cs +++ b/Modules/ModuleUnit.cs @@ -11,6 +11,9 @@ public enum UnitSelectorKind /// 拥有任一光环且生命值最低。get_lowest_health_unit_with_any_aura LowestHealthWithAnyAura, + /// 不拥有所选任一光环且生命值最低。 + LowestHealthWithoutAnyAura, + /// 不带某光环且生命值最低。get_lowest_health_unit_without_aura LowestHealthWithoutAura, @@ -38,6 +41,9 @@ public enum UnitSelectorKind /// 拥有任一光环、治疗吸收高于阈值且治疗吸收最高的单位。 HighestHealingAbsorbWithAnyAura, + /// 不拥有所选任一光环、治疗吸收高于阈值且治疗吸收最高的单位。 + HighestHealingAbsorbWithoutAnyAura, + /// 不带某光环、治疗吸收高于阈值且治疗吸收最高的单位。 HighestHealingAbsorbWithoutAura, diff --git a/Modules/UnitSelector.cs b/Modules/UnitSelector.cs index 8a2e1483..b791425e 100644 --- a/Modules/UnitSelector.cs +++ b/Modules/UnitSelector.cs @@ -35,6 +35,12 @@ public static class UnitSelector threshold, data => MatchesRoleFilter(data, unit.RoleFilter, unit.Role) && HasAnyAura(data, names)) : null, + UnitSelectorKind.LowestHealthWithoutAnyAura => unit.AuraNames is { Count: > 0 } names + ? LowestHealth( + group, + threshold, + data => MatchesRoleFilter(data, unit.RoleFilter, unit.Role) && !HasAnyAura(data, names)) + : null, UnitSelectorKind.LowestHealthWithoutAura => aura is null ? null : LowestHealth( @@ -68,6 +74,9 @@ public static class UnitSelector UnitSelectorKind.HighestHealingAbsorbWithAnyAura => unit.AuraNames is { Count: > 0 } names ? HighestHealingAbsorb(group, threshold, data => HasAnyAura(data, names)) : null, + UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura => unit.AuraNames is { Count: > 0 } names + ? HighestHealingAbsorb(group, threshold, data => !HasAnyAura(data, names)) + : null, UnitSelectorKind.HighestHealingAbsorbWithoutAura => aura is null ? null : HighestHealingAbsorb(group, threshold, data => !HasAura(data, aura)), @@ -316,6 +325,7 @@ public static class UnitSelector private static bool IsHealingAbsorbKind(UnitSelectorKind kind) => kind is UnitSelectorKind.HighestHealingAbsorb or UnitSelectorKind.HighestHealingAbsorbWithAnyAura + or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura or UnitSelectorKind.HighestHealingAbsorbWithoutAura or UnitSelectorKind.HighestHealingAbsorbWithAura or UnitSelectorKind.HighestHealingAbsorbWithAuraCount; diff --git a/Shigure.csproj b/Shigure.csproj index d1bc3881..52ba8e7e 100644 --- a/Shigure.csproj +++ b/Shigure.csproj @@ -9,9 +9,9 @@ Shigure Shigure Arasaka Corporation - 1.2.1.7 - 1.2.1.7 - 1.2.1.7 + 1.2.1.8 + 1.2.1.8 + 1.2.1.8 Assets\arasaka-icon.ico PerMonitorV2 diff --git a/UI/UnitEditorForm.cs b/UI/UnitEditorForm.cs index a6452089..26993439 100644 --- a/UI/UnitEditorForm.cs +++ b/UI/UnitEditorForm.cs @@ -31,6 +31,7 @@ public sealed class UnitEditorForm : Form [ new("不筛选光环", LowestHealthAuraFilterKind.None), new("带任一光环", LowestHealthAuraFilterKind.WithAnyAura), + new("不带任一光环", LowestHealthAuraFilterKind.WithoutAnyAura), new("不带某光环", LowestHealthAuraFilterKind.WithoutAura), new("带某光环", LowestHealthAuraFilterKind.WithAura), new("某光环值等于", LowestHealthAuraFilterKind.WithAuraCount) @@ -427,6 +428,7 @@ public sealed class UnitEditorForm : Form switch (SelectedLowestHealthAuraFilter()) { case LowestHealthAuraFilterKind.WithAnyAura: + case LowestHealthAuraFilterKind.WithoutAnyAura: auraMulti = true; break; case LowestHealthAuraFilterKind.WithoutAura: @@ -444,6 +446,7 @@ public sealed class UnitEditorForm : Form switch (SelectedLowestHealthAuraFilter()) { case LowestHealthAuraFilterKind.WithAnyAura: + case LowestHealthAuraFilterKind.WithoutAnyAura: auraMulti = true; break; case LowestHealthAuraFilterKind.WithoutAura: @@ -457,6 +460,7 @@ public sealed class UnitEditorForm : Form break; case UnitSelectorKind.LowestHealthWithAnyAura: + case UnitSelectorKind.LowestHealthWithoutAnyAura: threshold = auraMulti = true; break; case UnitSelectorKind.LowestHealthWithoutAura: @@ -468,6 +472,7 @@ public sealed class UnitEditorForm : Form threshold = auraSingle = auraCount = true; break; case UnitSelectorKind.HighestHealingAbsorbWithAnyAura: + case UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura: threshold = auraMulti = true; break; case UnitSelectorKind.HighestHealingAbsorbWithoutAura: @@ -537,7 +542,9 @@ public sealed class UnitEditorForm : Form DispelType = SelectedDispelType() }; unit.AuraNames = unit.Kind is UnitSelectorKind.LowestHealthWithAnyAura + or UnitSelectorKind.LowestHealthWithoutAnyAura or UnitSelectorKind.HighestHealingAbsorbWithAnyAura + or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura ? CheckedAuras() : SingleAuraList(); ApplyPreviewThreshold(v => unit.HealthThreshold = v, f => unit.HealthThresholdField = f); @@ -559,6 +566,9 @@ public sealed class UnitEditorForm : Form LowestHealthAuraFilterKind.WithAnyAura => healingAbsorb ? UnitSelectorKind.HighestHealingAbsorbWithAnyAura : UnitSelectorKind.LowestHealthWithAnyAura, + LowestHealthAuraFilterKind.WithoutAnyAura => healingAbsorb + ? UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura + : UnitSelectorKind.LowestHealthWithoutAnyAura, LowestHealthAuraFilterKind.WithoutAura => healingAbsorb ? UnitSelectorKind.HighestHealingAbsorbWithoutAura : UnitSelectorKind.LowestHealthWithoutAura, @@ -738,6 +748,18 @@ public sealed class UnitEditorForm : Form return; } + break; + case LowestHealthAuraFilterKind.WithoutAnyAura: + moduleUnit.Kind = healingAbsorb + ? UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura + : UnitSelectorKind.LowestHealthWithoutAnyAura; + moduleUnit.AuraNames = CheckedAuras(); + if (moduleUnit.AuraNames.Count == 0) + { + MessageBox.Show("请至少勾选一个光环。", "Shigure", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + break; case LowestHealthAuraFilterKind.WithoutAura: moduleUnit.Kind = healingAbsorb @@ -762,7 +784,9 @@ public sealed class UnitEditorForm : Form break; case UnitSelectorKind.LowestHealthWithAnyAura: + case UnitSelectorKind.LowestHealthWithoutAnyAura: case UnitSelectorKind.HighestHealingAbsorbWithAnyAura: + case UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura: if (!ApplyThreshold(moduleUnit)) { return; @@ -970,10 +994,12 @@ public sealed class UnitEditorForm : Form private static bool UnitRequiresAura(UnitSelectorKind kind) => kind is UnitSelectorKind.LowestHealthWithAnyAura + or UnitSelectorKind.LowestHealthWithoutAnyAura or UnitSelectorKind.LowestHealthWithoutAura or UnitSelectorKind.LowestHealthWithAura or UnitSelectorKind.LowestHealthWithAuraCount or UnitSelectorKind.HighestHealingAbsorbWithAnyAura + or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura or UnitSelectorKind.HighestHealingAbsorbWithoutAura or UnitSelectorKind.HighestHealingAbsorbWithAura or UnitSelectorKind.HighestHealingAbsorbWithAuraCount @@ -1015,11 +1041,13 @@ public sealed class UnitEditorForm : Form private static UnitSelectorKind DisplaySelectorKind(UnitSelectorKind kind) => kind is UnitSelectorKind.LowestHealthWithAnyAura + or UnitSelectorKind.LowestHealthWithoutAnyAura or UnitSelectorKind.LowestHealthWithoutAura or UnitSelectorKind.LowestHealthWithAura or UnitSelectorKind.LowestHealthWithAuraCount ? UnitSelectorKind.LowestHealth : kind is UnitSelectorKind.HighestHealingAbsorbWithAnyAura + or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura or UnitSelectorKind.HighestHealingAbsorbWithoutAura or UnitSelectorKind.HighestHealingAbsorbWithAura or UnitSelectorKind.HighestHealingAbsorbWithAuraCount @@ -1031,10 +1059,12 @@ public sealed class UnitEditorForm : Form var filter = kind switch { UnitSelectorKind.LowestHealthWithAnyAura => LowestHealthAuraFilterKind.WithAnyAura, + UnitSelectorKind.LowestHealthWithoutAnyAura => LowestHealthAuraFilterKind.WithoutAnyAura, UnitSelectorKind.LowestHealthWithoutAura => LowestHealthAuraFilterKind.WithoutAura, UnitSelectorKind.LowestHealthWithAura => LowestHealthAuraFilterKind.WithAura, UnitSelectorKind.LowestHealthWithAuraCount => LowestHealthAuraFilterKind.WithAuraCount, UnitSelectorKind.HighestHealingAbsorbWithAnyAura => LowestHealthAuraFilterKind.WithAnyAura, + UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura => LowestHealthAuraFilterKind.WithoutAnyAura, UnitSelectorKind.HighestHealingAbsorbWithoutAura => LowestHealthAuraFilterKind.WithoutAura, UnitSelectorKind.HighestHealingAbsorbWithAura => LowestHealthAuraFilterKind.WithAura, UnitSelectorKind.HighestHealingAbsorbWithAuraCount => LowestHealthAuraFilterKind.WithAuraCount, @@ -1310,6 +1340,7 @@ public sealed class UnitEditorForm : Form { None, WithAnyAura, + WithoutAnyAura, WithoutAura, WithAura, WithAuraCount diff --git a/UI/UnitSummary.cs b/UI/UnitSummary.cs index 475cee1d..bb362ec9 100644 --- a/UI/UnitSummary.cs +++ b/UI/UnitSummary.cs @@ -20,6 +20,7 @@ internal static class UnitSummary { UnitSelectorKind.LowestHealth => $"血量最低 (<{threshold})", UnitSelectorKind.LowestHealthWithAnyAura => $"带任一[{auras}]且血最低 (<{threshold})", + UnitSelectorKind.LowestHealthWithoutAnyAura => $"不带任一[{auras}]且血最低 (<{threshold})", UnitSelectorKind.LowestHealthWithoutAura => $"不带[{aura}]且血最低 (<{threshold})", UnitSelectorKind.LowestHealthWithAura => $"带[{aura}]且血最低 (<{threshold})", UnitSelectorKind.LowestHealthWithAuraCount => $"[{aura}]={unit.AuraCount}且血最低 (<{threshold})", @@ -29,6 +30,7 @@ internal static class UnitSummary UnitSelectorKind.UnitWithDispelType => $"驱散类型={unit.DispelType}", UnitSelectorKind.HighestHealingAbsorb => $"治疗吸收最高 (>{threshold})", UnitSelectorKind.HighestHealingAbsorbWithAnyAura => $"带任一[{auras}]且治疗吸收最高 (>{threshold})", + UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura => $"不带任一[{auras}]且治疗吸收最高 (>{threshold})", UnitSelectorKind.HighestHealingAbsorbWithoutAura => $"不带[{aura}]且治疗吸收最高 (>{threshold})", UnitSelectorKind.HighestHealingAbsorbWithAura => $"带[{aura}]且治疗吸收最高 (>{threshold})", UnitSelectorKind.HighestHealingAbsorbWithAuraCount => $"[{aura}]={unit.AuraCount}且治疗吸收最高 (>{threshold})", @@ -77,6 +79,7 @@ internal static class UnitSummary private static bool IsLowestHealthKind(UnitSelectorKind kind) => kind is UnitSelectorKind.LowestHealth or UnitSelectorKind.LowestHealthWithAnyAura + or UnitSelectorKind.LowestHealthWithoutAnyAura or UnitSelectorKind.LowestHealthWithoutAura or UnitSelectorKind.LowestHealthWithAura or UnitSelectorKind.LowestHealthWithAuraCount; @@ -84,6 +87,7 @@ internal static class UnitSummary private static bool IsHealingAbsorbKind(UnitSelectorKind kind) => kind is UnitSelectorKind.HighestHealingAbsorb or UnitSelectorKind.HighestHealingAbsorbWithAnyAura + or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura or UnitSelectorKind.HighestHealingAbsorbWithoutAura or UnitSelectorKind.HighestHealingAbsorbWithAura or UnitSelectorKind.HighestHealingAbsorbWithAuraCount;