From a695d178f2832dc47add94ac98b71360fee76654 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com>
Date: Fri, 2 Jun 2023 09:24:20 +0800
Subject: [PATCH] fix: add a incombat check on Peloton.
---
.../Rotations/CustomRotation_Actions.cs | 53 +------------------
XIVPainter | 2 +-
2 files changed, 2 insertions(+), 53 deletions(-)
diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs b/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs
index cd48ed1ff..99038ad0e 100644
--- a/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs
+++ b/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs
@@ -14,17 +14,11 @@ internal RoleAction(ActionID actionID, JobRole[] roles, ActionOption option = Ac
internal bool InRole(JobRole role) => _roles.Contains(role);
}
- ///
- /// 昏乱
- ///
public static IBaseAction Addle { get; } = new RoleAction(ActionID.Addle, new JobRole[] { JobRole.RangedMagical }, ActionOption.Defense)
{
ActionCheck = (b, m) => !b.HasStatus(false, StatusID.Addle),
};
- ///
- /// 即刻咏唱
- ///
public static IBaseAction Swiftcast { get; } = new RoleAction(ActionID.SwiftCast, new JobRole[] { JobRole.RangedMagical, JobRole.Healer }, ActionOption.Buff)
{
StatusProvide = new StatusID[]
@@ -35,9 +29,6 @@ internal RoleAction(ActionID actionID, JobRole[] roles, ActionOption option = Ac
}
};
- ///
- /// 康复
- ///
public static IBaseAction Esuna { get; } = new RoleAction(ActionID.Esuna, new JobRole[] { JobRole.Healer }, ActionOption.Heal)
{
ChoiceTarget = (tars, mustUse) =>
@@ -54,42 +45,24 @@ internal RoleAction(ActionID actionID, JobRole[] roles, ActionOption option = Ac
},
};
- ///
- /// 营救
- ///
public static IBaseAction Rescue { get; } = new RoleAction(ActionID.Rescue, new JobRole[] { JobRole.Healer }, ActionOption.Heal);
- ///
- /// 沉静
- ///
public static IBaseAction Repose { get; } = new RoleAction(ActionID.Repose, new JobRole[] { JobRole.Healer });
- ///
- /// 醒梦(如果MP低于6000那么使用)
- ///
public static IBaseAction LucidDreaming { get; } = new RoleAction(ActionID.LucidDreaming,
new JobRole[] { JobRole.Healer, JobRole.RangedMagical }, ActionOption.Buff)
{
ActionCheck = (b, m) => Player.CurrentMp < 6000 && InCombat,
};
- ///
- /// 内丹
- ///
public static IBaseAction SecondWind { get; } = new RoleAction(ActionID.SecondWind,
new JobRole[] { JobRole.RangedPhysical, JobRole.Melee }, ActionOption.Heal)
{
ActionCheck = (b, m) => Player?.GetHealthRatio() < Service.Config.HealthSingleAbility && InCombat,
};
- ///
- /// 亲疏自行
- ///
public static IBaseAction ArmsLength { get; } = new RoleAction(ActionID.ArmsLength, new JobRole[] { JobRole.Tank, JobRole.Melee, JobRole.RangedPhysical }, ActionOption.Defense | ActionOption.EndSpecial);
- ///
- /// 铁壁
- ///
public static IBaseAction Rampart { get; } = new RoleAction(ActionID.Rampart, new JobRole[] { JobRole.Tank }, ActionOption.Defense)
{
StatusProvide = new StatusID[]
@@ -145,64 +118,40 @@ internal RoleAction(ActionID actionID, JobRole[] roles, ActionOption option = Ac
}),
};
- ///
- /// 扫腿
- ///
public static IBaseAction LegSweep { get; } = new RoleAction(ActionID.LegSweep, new JobRole[] { JobRole.Melee })
{
FilterForHostiles = b => b.Where(ObjectHelper.CanInterrupt),
};
- ///
- /// 伤头
- ///
public static IBaseAction HeadGraze { get; } = new RoleAction(ActionID.HeadGraze, new JobRole[] { JobRole.RangedPhysical })
{
FilterForHostiles = b => b.Where(ObjectHelper.CanInterrupt),
};
- ///
- /// 沉稳咏唱
- ///
public static IBaseAction SureCast { get; } = new RoleAction(ActionID.SureCast,
new JobRole[] { JobRole.RangedMagical, JobRole.Healer }, ActionOption.Heal);
- ///
- /// 真北
- ///
public static IBaseAction TrueNorth { get; } = new RoleAction(ActionID.TrueNorth,
new JobRole[] { JobRole.Melee }, ActionOption.Heal)
{
StatusProvide = new StatusID[] { StatusID.TrueNorth, StatusID.RightEye },
};
- ///
- /// 速行
- ///
public static IBaseAction Peloton { get; } = new RoleAction(ActionID.Peloton, new JobRole[] { JobRole.RangedPhysical }, ActionOption.Buff)
{
ActionCheck = (b, m) => NotInCombatDelay && PartyMembers.GetObjectInRadius(20)
- .Any(p => p.WillStatusEnd(3, false, StatusID.Peloton)),
+ .Any(p => p.WillStatusEnd(3, false, StatusID.Peloton) && !p.StatusFlags.HasFlag(Dalamud.Game.ClientState.Objects.Enums.StatusFlags.InCombat)),
};
private protected virtual IBaseAction Raise => null;
private protected virtual IBaseAction TankStance => null;
- ///
- /// 当前这个类所有的BaseAction
- ///
public virtual IBaseAction[] AllBaseActions => GetBaseActions(GetType()).ToArray();
public IAction[] AllActions => Array.Empty().Union(GetBaseItems(GetType())).Union(AllBaseActions).ToArray();
- ///
- /// 这个类所有的公开bool值
- ///
public PropertyInfo[] AllBools => GetType().GetStaticProperties();
- ///
- /// 这个类所有的公开float值
- ///
public PropertyInfo[] AllBytes => GetType().GetStaticProperties();
public MethodInfo[] AllTimes => GetType().GetStaticBoolMethodInfo(m =>
diff --git a/XIVPainter b/XIVPainter
index 47f2b8ca5..b5731bac7 160000
--- a/XIVPainter
+++ b/XIVPainter
@@ -1 +1 @@
-Subproject commit 47f2b8ca5441f64d51e8ade1cee2833b8035822d
+Subproject commit b5731bac79f92711f0534a063add2bb63fe19d48