diff --git a/RotationSolver.Basic/Actions/ActionBasicInfo.cs b/RotationSolver.Basic/Actions/ActionBasicInfo.cs
index 240a9bdc..10bc545b 100644
--- a/RotationSolver.Basic/Actions/ActionBasicInfo.cs
+++ b/RotationSolver.Basic/Actions/ActionBasicInfo.cs
@@ -229,6 +229,8 @@ private bool IsStatusProvidedDuringGCD()
private readonly bool CheckForCombo()
{
+ if (!_action.Config.ShouldCheckCombo) return true;
+
if (_action.Setting.ComboIdsNot != null)
{
if (_action.Setting.ComboIdsNot.Contains(DataCenter.LastComboAction)) return false;
diff --git a/RotationSolver.Basic/Actions/ActionConfig.cs b/RotationSolver.Basic/Actions/ActionConfig.cs
index 67c6619c..b4cf074a 100644
--- a/RotationSolver.Basic/Actions/ActionConfig.cs
+++ b/RotationSolver.Basic/Actions/ActionConfig.cs
@@ -21,6 +21,11 @@ public bool IsEnabled
///
public bool ShouldCheckStatus { get; set; } = true;
+ ///
+ /// Should check the combo for this action.
+ ///
+ public bool ShouldCheckCombo { get; set; } = true;
+
///
/// The status count in gcd for adding the status.
///
diff --git a/RotationSolver.Basic/Rotations/Basic/DragoonRotation.cs b/RotationSolver.Basic/Rotations/Basic/DragoonRotation.cs
index 79716474..4a9abfe5 100644
--- a/RotationSolver.Basic/Rotations/Basic/DragoonRotation.cs
+++ b/RotationSolver.Basic/Rotations/Basic/DragoonRotation.cs
@@ -350,10 +350,85 @@ static partial void ModifyStarcrossPvE(ref ActionSetting setting)
};
}
#endregion
+
+ #region PvP Actions
+
+ static partial void ModifyRaidenThrustPvP(ref ActionSetting setting)
+ {
+ }
+
+ static partial void ModifyFangAndClawPvP(ref ActionSetting setting)
+ {
+ }
+
+ static partial void ModifyWheelingThrustPvP(ref ActionSetting setting)
+ {
+ }
+
+ static partial void ModifyDrakesbanePvP(ref ActionSetting setting)
+ {
+ }
+
+ static partial void ModifyChaoticSpringPvP(ref ActionSetting setting)
+ {
+ }
+
+ static partial void ModifyHorridRoarPvP(ref ActionSetting setting)
+ {
+ setting.IsFriendly = false;
+ }
+
+ static partial void ModifyHeavensThrustPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.RaidenThrustPvP) == ActionID.HeavensThrustPvP;
+ }
+
+ static partial void ModifyStarcrossPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.RaidenThrustPvP) == ActionID.StarcrossPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyGeirskogulPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 2,
+ };
+ }
+
+ static partial void ModifyNastrondPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.GeirskogulPvP) == ActionID.NastrondPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 2,
+ };
+ }
+
+ static partial void ModifyElusiveJumpPvP(ref ActionSetting setting)
+ {
+ setting.SpecialType = SpecialActionType.MovingBackward;
+ setting.IsFriendly = true;
+ }
+
+ static partial void ModifyWyrmwindThrustPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.ElusiveJumpPvP) == ActionID.WyrmwindThrustPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
- // PvP
static partial void ModifyHighJumpPvP(ref ActionSetting setting)
{
setting.SpecialType = SpecialActionType.MovingForward;
}
+ #endregion
+
+
}
diff --git a/RotationSolver.Basic/Rotations/Basic/ViperRotation.cs b/RotationSolver.Basic/Rotations/Basic/ViperRotation.cs
index 9e0df0d5..93f89a7f 100644
--- a/RotationSolver.Basic/Rotations/Basic/ViperRotation.cs
+++ b/RotationSolver.Basic/Rotations/Basic/ViperRotation.cs
@@ -230,7 +230,7 @@ public static bool SwiftLessThanHunter
}
#endregion
- #region Actions
+ #region PvE Actions
static partial void ModifyWrithingSnapPvE(ref ActionSetting setting)
{
@@ -578,4 +578,216 @@ static partial void ModifyFourthLegacyPvE(ref ActionSetting setting)
};
}
#endregion
-}
\ No newline at end of file
+
+ #region PvP Actions
+ static partial void ModifyRavenousBitePvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifySwiftskinsStingPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyPiercingFangsPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyBarbarousBitePvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyHuntersStingPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifySteelFangsPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyBloodcoilPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyUncoiledFuryPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifySerpentsTailPvP(ref ActionSetting setting)
+ {
+ // technically not a real move
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifySlitherPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifySnakeScalesPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyRattlingCoilPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyFirstGenerationPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SteelFangsPvP) == ActionID.FirstGenerationPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifySecondGenerationPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SteelFangsPvP) == ActionID.SecondGenerationPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyThirdGenerationPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SteelFangsPvP) == ActionID.ThirdGenerationPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyFourthGenerationPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SteelFangsPvP) == ActionID.FourthGenerationPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifySanguineFeastPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.BloodcoilPvP) == ActionID.SanguineFeastPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ ShouldCheckCombo = false,
+ };
+ }
+
+ static partial void ModifyOuroborosPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.BloodcoilPvP) == ActionID.OuroborosPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyDeathRattlePvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.DeathRattlePvP;
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyTwinfangBitePvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.TwinfangBitePvP;
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyTwinbloodBitePvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.TwinbloodBitePvP;
+ setting.CreateConfig = () => new ActionConfig();
+ }
+
+ static partial void ModifyUncoiledTwinfangPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.UncoiledTwinfangPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyUncoiledTwinbloodPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.UncoiledTwinbloodPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyFirstLegacyPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.FirstLegacyPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifySecondLegacyPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.SecondLegacyPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyThirdLegacyPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.ThirdLegacyPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyFourthLegacyPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.FourthLegacyPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyBacklashPvP(ref ActionSetting setting)
+ {
+ setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SnakeScalesPvP) == ActionID.BacklashPvP;
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+
+ static partial void ModifyFuriousBacklashPvP(ref ActionSetting setting)
+ {
+ setting.CreateConfig = () => new ActionConfig()
+ {
+ AoeCount = 1,
+ };
+ }
+ #endregion
+}
diff --git a/RotationSolver/UI/RotationConfigWindow.cs b/RotationSolver/UI/RotationConfigWindow.cs
index 63b68047..8528a7af 100644
--- a/RotationSolver/UI/RotationConfigWindow.cs
+++ b/RotationSolver/UI/RotationConfigWindow.cs
@@ -1746,18 +1746,19 @@ static void DrawActionDebug()
{
ImGui.Text("ID: " + action.Info.ID);
ImGui.Text("AdjustedID: " + Service.GetAdjustedActionId(action.Info.ID));
+ ImGui.Text($"Can Use: {action.CanUse(out _)} ");
ImGui.Text("AoeCount: " + action.Config.AoeCount);
ImGui.Text("ShouldCheckStatus: " + action.Config.ShouldCheckStatus);
#if DEBUG
ImGui.Text("Is Real GCD: " + action.Info.IsRealGCD);
-
+
// Ensure ActionManager.Instance() is not null
if (ActionManager.Instance() != null)
{
ImGui.Text("Resources: " + ActionManager.Instance()->CheckActionResources(ActionType.Action, action.AdjustedID));
ImGui.Text("Status: " + ActionManager.Instance()->GetActionStatus(ActionType.Action, action.AdjustedID));
}
-
+
ImGui.Text("Cast Time: " + action.Info.CastTime);
ImGui.Text("MP: " + action.Info.MPNeed);
#endif
@@ -1771,7 +1772,6 @@ static void DrawActionDebug()
ImGui.Text("Recast Elapsed: " + action.Cooldown.RecastTimeElapsedRaw);
ImGui.Text($"Charges: {action.Cooldown.CurrentCharges} / {action.Cooldown.MaxCharges}");
- ImGui.Text($"Can Use: {action.CanUse(out _)} ");
ImGui.Text("IgnoreCastCheck:" + action.CanUse(out _, skipCastingCheck: true));
ImGui.Text("Target Name: " + action.Target.Target?.Name ?? string.Empty);
ImGui.Text($"SpellUnlocked: {action.Info.SpellUnlocked} ({action.Action.UnlockLink.RowId})");