diff --git a/RotationSolver.Default/Healer/WHM_Default.cs b/RotationSolver.Default/Healer/WHM_Default.cs
index d1cf3c5f8..3e85d63d2 100644
--- a/RotationSolver.Default/Healer/WHM_Default.cs
+++ b/RotationSolver.Default/Healer/WHM_Default.cs
@@ -15,12 +15,7 @@ protected override IRotationConfigSet CreateConfiguration()
public static IBaseAction RegenDefense { get; } = new BaseAction(ActionID.Regen, true, isEot: true, isTimeline: true)
{
ChoiceTarget = TargetFilter.FindAttackedTarget,
- TargetStatus = new[]
- {
- StatusID.Regen1,
- StatusID.Regen2,
- StatusID.Regen3,
- }
+ TargetStatus = Regen.TargetStatus,
};
protected override bool GeneralGCD(out IAction act)
diff --git a/RotationSolver.Default/RotationSolver.Default.csproj b/RotationSolver.Default/RotationSolver.Default.csproj
index 9cfba3873..5b6a7cf44 100644
--- a/RotationSolver.Default/RotationSolver.Default.csproj
+++ b/RotationSolver.Default/RotationSolver.Default.csproj
@@ -3,11 +3,11 @@
net7.0-windows
enable
- x64
- $(AppData)\XIVLauncher\addon\Hooks\dev\
- AnyCPU
- ArchiTed
- 0.9.0
+ x64
+ $(AppData)\XIVLauncher\addon\Hooks\dev\
+ AnyCPU
+ ArchiTed
+ 0.9.0
@@ -41,18 +41,16 @@
$(DalamudLibPath)Newtonsoft.Json.dll
False
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/RotationSolver.Old/Melee/MNK_Old.cs b/RotationSolver.Old/Melee/MNK_Old.cs
new file mode 100644
index 000000000..fbc07878d
--- /dev/null
+++ b/RotationSolver.Old/Melee/MNK_Old.cs
@@ -0,0 +1,148 @@
+namespace RotationSolver.Old.Melee;
+
+[RotationDesc(ActionID.RiddleofFire)]
+internal sealed class MNK_Old : MNK_Base
+{
+ public override string GameVersion => "6.0";
+
+ public override string RotationName => "Old";
+
+ protected override IRotationConfigSet CreateConfiguration()
+ {
+ return base.CreateConfiguration().SetBool("AutoFormShift", true, "Auto use FormShift");
+ }
+
+ private bool OpoOpoForm(out IAction act)
+ {
+ if (ArmoftheDestroyer.CanUse(out act)) return true;
+ if (DragonKick.CanUse(out act)) return true;
+ if (Bootshine.CanUse(out act)) return true;
+ return false;
+ }
+
+ private bool RaptorForm(out IAction act)
+ {
+ if (FourpointFury.CanUse(out act)) return true;
+
+ if (Player.WillStatusEndGCD(3, 0, true, StatusID.DisciplinedFist) && TwinSnakes.CanUse(out act)) return true;
+
+ if (TrueStrike.CanUse(out act)) return true;
+ return false;
+ }
+
+ private bool CoerlForm(out IAction act)
+ {
+ if (Rockbreaker.CanUse(out act)) return true;
+ if (Demolish.CanUse(out act)) return true;
+ if (SnapPunch.CanUse(out act)) return true;
+ return false;
+ }
+
+ private bool LunarNadi(out IAction act)
+ {
+ if (OpoOpoForm(out act)) return true;
+ return false;
+ }
+
+ private bool SolarNadi(out IAction act)
+ {
+ if (!BeastChakras.Contains(BeastChakra.RAPTOR))
+ {
+ if (RaptorForm(out act)) return true;
+ }
+ else if (!BeastChakras.Contains(BeastChakra.OPOOPO))
+ {
+ if (OpoOpoForm(out act)) return true;
+ }
+ else
+ {
+ if (CoerlForm(out act)) return true;
+ }
+
+ return false;
+ }
+
+ protected override bool GeneralGCD(out IAction act)
+ {
+ //满了的话,放三个大招
+ if (!BeastChakras.Contains(BeastChakra.NONE))
+ {
+ if (HasSolar && HasLunar)
+ {
+ if (PhantomRush.CanUse(out act, mustUse: true)) return true;
+ if (TornadoKick.CanUse(out act, mustUse: true)) return true;
+ }
+ if (BeastChakras.Contains(BeastChakra.RAPTOR))
+ {
+ if (RisingPhoenix.CanUse(out act, mustUse: true)) return true;
+ if (FlintStrike.CanUse(out act, mustUse: true)) return true;
+ }
+ else
+ {
+ if (ElixirField.CanUse(out act, mustUse: true)) return true;
+ }
+ }
+ //有震脚就阴阳
+ else if (Player.HasStatus(true, StatusID.PerfectBalance))
+ {
+ if (HasSolar && LunarNadi(out act)) return true;
+ if (SolarNadi(out act)) return true;
+ }
+
+ if (Player.HasStatus(true, StatusID.CoerlForm))
+ {
+ if (CoerlForm(out act)) return true;
+ }
+ else if (Player.HasStatus(true, StatusID.RaptorForm))
+ {
+ if (RaptorForm(out act)) return true;
+ }
+ if (OpoOpoForm(out act)) return true;
+
+ if (SpecialType == SpecialCommandType.MoveForward && MoveForwardAbility(1, out act)) return true;
+ if (Chakra < 5 && Meditation.CanUse(out act)) return true;
+ if (Configs.GetBool("AutoFormShift") && FormShift.CanUse(out act)) return true;
+
+ return false;
+ }
+
+ protected override bool AttackAbility(byte abilitiesRemaining, out IAction act)
+ {
+ if (InBurst)
+ {
+ if (RiddleofFire.CanUse(out act)) return true;
+ if (Brotherhood.CanUse(out act)) return true;
+ }
+
+ //震脚
+ if (BeastChakras.Contains(BeastChakra.NONE))
+ {
+ //有阳斗气
+ if (HasSolar)
+ {
+ //两种Buff都在6s以上
+ var dis = Player.WillStatusEndGCD(3, 0, true, StatusID.DisciplinedFist);
+
+ Demolish.CanUse(out _);
+ var demo = Demolish.Target.WillStatusEndGCD(3, 0, true, StatusID.Demolish);
+
+ if (!dis && (!demo || !PerfectBalance.IsCoolingDown))
+ {
+ if (PerfectBalance.CanUse(out act, emptyOrSkipCombo: true)) return true;
+ }
+ }
+ else
+ {
+ if (PerfectBalance.CanUse(out act, emptyOrSkipCombo: true)) return true;
+ }
+ }
+
+ if (RiddleofWind.CanUse(out act)) return true;
+
+ if (HowlingFist.CanUse(out act)) return true;
+ if (SteelPeak.CanUse(out act)) return true;
+ if (HowlingFist.CanUse(out act, mustUse: true)) return true;
+
+ return false;
+ }
+}
diff --git a/RotationSolver.Old/RotationSolver.Old.csproj b/RotationSolver.Old/RotationSolver.Old.csproj
new file mode 100644
index 000000000..3f40e9ca3
--- /dev/null
+++ b/RotationSolver.Old/RotationSolver.Old.csproj
@@ -0,0 +1,60 @@
+
+
+
+ net7.0-windows
+ enable
+ x64
+ $(AppData)\XIVLauncher\addon\Hooks\dev\
+ AnyCPU
+ ArchiTed
+
+
+
+
+
+
+ $(DalamudLibPath)Dalamud.dll
+ False
+
+
+ $(DalamudLibPath)ImGui.NET.dll
+ False
+
+
+ $(DalamudLibPath)ImGuiScene.dll
+ False
+
+
+ $(DalamudLibPath)Lumina.dll
+ False
+
+
+ $(DalamudLibPath)Lumina.Excel.dll
+ False
+
+
+ $(DalamudLibPath)FFXIVClientStructs.dll
+ False
+
+
+ $(DalamudLibPath)Newtonsoft.Json.dll
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/RotationSolver.sln b/RotationSolver.sln
index d655a7ff5..bd6c158c0 100644
--- a/RotationSolver.sln
+++ b/RotationSolver.sln
@@ -14,6 +14,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RotationSolver.Basic", "Rot
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RotationSolver", "RotationSolver\RotationSolver.csproj", "{99EA3D95-33DC-424F-A9E6-FE6064F11592}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RotationSolver.Old", "RotationSolver.Old\RotationSolver.Old.csproj", "{0F07FDE9-7189-43E9-8651-F1963D829DDA}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -32,6 +34,10 @@ Global
{99EA3D95-33DC-424F-A9E6-FE6064F11592}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99EA3D95-33DC-424F-A9E6-FE6064F11592}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99EA3D95-33DC-424F-A9E6-FE6064F11592}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0F07FDE9-7189-43E9-8651-F1963D829DDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0F07FDE9-7189-43E9-8651-F1963D829DDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0F07FDE9-7189-43E9-8651-F1963D829DDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0F07FDE9-7189-43E9-8651-F1963D829DDA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/RotationSolver/Commands/RSCommands_Actions.cs b/RotationSolver/Commands/RSCommands_Actions.cs
index fce1ec4c7..bf3ec89ed 100644
--- a/RotationSolver/Commands/RSCommands_Actions.cs
+++ b/RotationSolver/Commands/RSCommands_Actions.cs
@@ -59,7 +59,7 @@ internal static unsafe void DoAnAction(bool isGCD)
}
internal static void ResetSpecial() => DoSpecialCommandType(SpecialCommandType.EndSpecial, false);
- internal static void CancelState()
+ private static void CancelState()
{
if (StateType != StateCommandType.Cancel) DoStateCommandType(StateCommandType.Cancel);
}
diff --git a/RotationSolver/RotationHelper.cs b/RotationSolver/RotationHelper.cs
index 1555e7d4f..a086ace94 100644
--- a/RotationSolver/RotationHelper.cs
+++ b/RotationSolver/RotationHelper.cs
@@ -11,6 +11,7 @@ internal static class RotationHelper
static readonly string[] _allowedAssembly = new string[]
{
DefaultAssembly,
+ "RotationSolver.Old",
};
public static bool IsDefault(this ICustomRotation rotation)
diff --git a/RotationSolver/RotationSolverPlugin.cs b/RotationSolver/RotationSolverPlugin.cs
index 73ee944d5..1b8fb545b 100644
--- a/RotationSolver/RotationSolverPlugin.cs
+++ b/RotationSolver/RotationSolverPlugin.cs
@@ -33,7 +33,7 @@ public unsafe RotationSolverPlugin(DalamudPluginInterface pluginInterface)
File.ReadAllText(Service.Interface.ConfigFile.FullName))
?? new PluginConfiguration();
}
- catch()
+ catch
{
Service.Config = new PluginConfiguration();
}
diff --git a/RotationSolver/Updaters/SocialUpdater.cs b/RotationSolver/Updaters/SocialUpdater.cs
index 266f1ba70..b22459fe2 100644
--- a/RotationSolver/Updaters/SocialUpdater.cs
+++ b/RotationSolver/Updaters/SocialUpdater.cs
@@ -59,8 +59,6 @@ internal static void Enable()
static async void DutyState_DutyCompleted(object sender, ushort e)
{
- RSCommands.CancelState();
-
if (DataCenter.PartyMembers.Count() < 2) return;
await Task.Delay(new Random().Next(4000, 6000));