diff --git a/RotationSolver.Basic/Configuration/PluginConfiguration.cs b/RotationSolver.Basic/Configuration/PluginConfiguration.cs index 8afcc5b38..8e9c8c7e6 100644 --- a/RotationSolver.Basic/Configuration/PluginConfiguration.cs +++ b/RotationSolver.Basic/Configuration/PluginConfiguration.cs @@ -104,7 +104,7 @@ public class PluginConfiguration : IPluginConfiguration public Dictionary HealthForDyingTanks { get; set; } = new Dictionary(); - public float HealthTankRatio = 0.4f; + public float HealthTankHealerRatio = 0.4f; public bool InterruptibleMoreCheck = true; public float SpecialDuration = 3; diff --git a/RotationSolver.Basic/Helpers/TargetFilter.cs b/RotationSolver.Basic/Helpers/TargetFilter.cs index d1017a5c9..ace26c2ba 100644 --- a/RotationSolver.Basic/Helpers/TargetFilter.cs +++ b/RotationSolver.Basic/Helpers/TargetFilter.cs @@ -15,10 +15,15 @@ internal static BattleChara DefaultChooseFriend(IEnumerable availab availableCharas = availableCharas.Where(StatusHelper.NeedHealing); + var healerTars = availableCharas.GetJobCategory(JobRole.Healer); var tankTars = availableCharas.GetJobCategory(JobRole.Tank); + var healerTar = tankTars.OrderBy(ObjectHelper.GetHealingRatio).FirstOrDefault(); + if (healerTar != null && healerTar.GetHealingRatio() < Service.Config.HealthTankHealerRatio) + return healerTar; + var tankTar = tankTars.OrderBy(ObjectHelper.GetHealingRatio).FirstOrDefault(); - if (tankTar != null && tankTar.GetHealingRatio() < Service.Config.HealthTankRatio) + if (tankTar != null && tankTar.GetHealingRatio() < Service.Config.HealthTankHealerRatio) return tankTar; var tar = availableCharas.OrderBy(ObjectHelper.GetHealingRatio).FirstOrDefault(); diff --git a/RotationSolver/Localization/Strings.cs b/RotationSolver/Localization/Strings.cs index 19ef9e9c1..ce0ea0e7e 100644 --- a/RotationSolver/Localization/Strings.cs +++ b/RotationSolver/Localization/Strings.cs @@ -205,7 +205,7 @@ internal partial class Strings public string ConfigWindow_Param_HealthSingleAbility { get; set; } = "Set the HP threshold for using single healing ability"; public string ConfigWindow_Param_HealthSingleSpell { get; set; } = "Set the HP threshold for using single healing spell"; - public string ConfigWindow_Param_HealthTankRatio { get; set; } = "Heal tank first it tank's HP threshold is lower than this."; + public string ConfigWindow_Param_HealthTankHealerRatio { get; set; } = "Heal healer or tank first if its HP threshold is lower than this."; public string ConfigWindow_Param_HealingOfTimeSubtractSingle { get; set; } = "Set the HP threshold reduce with hot effect(single)"; diff --git a/RotationSolver/UI/RotationConfigWindow_Param.cs b/RotationSolver/UI/RotationConfigWindow_Param.cs index 6a217cbf9..8597a4bec 100644 --- a/RotationSolver/UI/RotationConfigWindow_Param.cs +++ b/RotationSolver/UI/RotationConfigWindow_Param.cs @@ -379,8 +379,8 @@ private void DrawParamCondition() DrawFloatNumber(LocalizationManager.RightLang.ConfigWindow_Param_HealthSingleSpell, ref Service.Config.HealthSingleSpell, speed); - DrawFloatNumber(LocalizationManager.RightLang.ConfigWindow_Param_HealthTankRatio, - ref Service.Config.HealthTankRatio, speed); + DrawFloatNumber(LocalizationManager.RightLang.ConfigWindow_Param_HealthTankHealerRatio, + ref Service.Config.HealthTankHealerRatio, speed); } private void DrawParamTarget()