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})");