diff --git a/BasicRotations/PVPRotations/Magical/PCT_Default.PvP.cs b/BasicRotations/PVPRotations/Magical/PCT_Default.PvP.cs new file mode 100644 index 000000000..48ebc8a6b --- /dev/null +++ b/BasicRotations/PVPRotations/Magical/PCT_Default.PvP.cs @@ -0,0 +1,112 @@ +namespace RebornRotations.PVPRotations.Magical; + +[Rotation("Default PvP", CombatType.PvP, GameVersion = "7.15", Description = "Default PVP Pictomancer by Crito")] +[Api(4)] +public class PCT_DefaultPvP : PictomancerRotation +{ + #region Configurations + + [RotationConfig(CombatType.PvP, Name = "Use Purify")] + public bool UsePurifyPvP { get; set; } = true; + + [RotationConfig(CombatType.PvP, Name = "Stop attacking while in Guard.")] + public bool RespectGuard { get; set; } = true; + #endregion + + #region Standard PVP Utilities + private bool DoPurify(out IAction? action) + { + action = null; + if (!UsePurifyPvP) return false; + + var purifiableStatusesIDs = new List + { + // Stun, DeepFreeze, HalfAsleep, Sleep, Bind, Heavy, Silence + 1343, 3219, 3022, 1348, 1345, 1344, 1347 + }; + + if (purifiableStatusesIDs.Any(id => Player.HasStatus(false, (StatusID)id))) + { + return PurifyPvP.CanUse(out action); + } + + return false; + } + #endregion + + #region oGCDs + protected override bool EmergencyAbility(IAction nextGCD, out IAction? action) + { + action = null; + if (RespectGuard && Player.HasStatus(true, StatusID.Guard)) return false; + if (DoPurify(out action)) return true; + + return base.EmergencyAbility(nextGCD, out action); + } + + protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? action) + { + action = null; + if (RespectGuard && Player.HasStatus(true, StatusID.Guard)) return false; + + return base.DefenseSingleAbility(nextGCD, out action); + } + + protected override bool AttackAbility(IAction nextGCD, out IAction? action) + { + action = null; + if (RespectGuard && Player.HasStatus(true, StatusID.Guard)) return false; + + if (PomMusePvP.CanUse(out action, usedUp: true)) return true; + if (WingedMusePvP.CanUse(out action, usedUp: true)) return true; + if (ClawedMusePvP.CanUse(out action, usedUp: true)) return true; + if (FangedMusePvP.CanUse(out action, usedUp: true)) return true; + + switch (IsMoving) + { + case true: + if (ReleaseSubtractivePalettePvP.CanUse(out action)) return true; + break; + case false: + if (SubtractivePalettePvP.CanUse(out action)) return true; + break; + } + + return base.AttackAbility(nextGCD, out action); + } + + #endregion + + #region GCDs + protected override bool GeneralGCD(out IAction? action) + { + action = null; + if (RespectGuard && Player.HasStatus(true, StatusID.Guard)) return false; + + if (StarPrismPvP.CanUse(out action)) return true; + + if (MogOfTheAgesPvP.CanUse(out action)) return true; + if (RetributionOfTheMadeenPvP.CanUse(out action)) return true; + + if (CometInBlackPvP.CanUse(out action, usedUp: true)) return true; + + if (PomMotifPvP.CanUse(out action, usedUp: true)) return true; + if (WingMotifPvP.CanUse(out action, usedUp: true)) return true; + if (ClawMotifPvP.CanUse(out action, usedUp: true)) return true; + if (MawMotifPvP.CanUse(out action, usedUp: true)) return true; + + if (ThunderInMagentaPvP.CanUse(out action)) return true; + if (StoneInYellowPvP.CanUse(out action)) return true; + if (BlizzardInCyanPvP.CanUse(out action)) return true; + + if (WaterInBluePvP.CanUse(out action)) return true; + if (AeroInGreenPvP.CanUse(out action)) return true; + if (FireInRedPvP.CanUse(out action)) return true; + + + + + return base.GeneralGCD(out action); + } + #endregion +} \ No newline at end of file diff --git a/RotationSolver.Basic/Rotations/Basic/BlackMageRotation.cs b/RotationSolver.Basic/Rotations/Basic/BlackMageRotation.cs index 4d54e756c..bce67cbde 100644 --- a/RotationSolver.Basic/Rotations/Basic/BlackMageRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/BlackMageRotation.cs @@ -461,10 +461,6 @@ static partial void ModifyFlareStarPvE(ref ActionSetting setting) static partial void ModifyFirePvP(ref ActionSetting setting) { setting.StatusProvide = [StatusID.Paradox, StatusID.AstralFire_3212]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false - }; } static partial void ModifyBlizzardPvP(ref ActionSetting setting) @@ -514,31 +510,18 @@ static partial void ModifyFireIiiPvP(ref ActionSetting setting) { setting.StatusNeed = [StatusID.AstralFire_3212]; setting.StatusProvide = [StatusID.AstralFireIi_3213]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false - }; } static partial void ModifyFireIvPvP(ref ActionSetting setting) { setting.StatusNeed = [StatusID.AstralFireIi_3213]; setting.StatusProvide = [StatusID.AstralFireIii_3381]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false - }; } static partial void ModifyHighFireIiPvP(ref ActionSetting setting) { setting.StatusNeed = [StatusID.AstralFireIii_3381]; setting.StatusProvide = [StatusID.AstralFire_3212]; - setting.CreateConfig = () => new ActionConfig() - { - AoeCount = 1, - ShouldCheckStatus = false, - }; } static partial void ModifyFlarePvP(ref ActionSetting setting) @@ -555,20 +538,12 @@ static partial void ModifyBlizzardIiiPvP(ref ActionSetting setting) { setting.StatusNeed = [StatusID.UmbralIce_3214]; setting.StatusProvide = [StatusID.UmbralIceIi_3215]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false - }; } static partial void ModifyBlizzardIvPvP(ref ActionSetting setting) { setting.StatusNeed = [StatusID.UmbralIceIi_3215]; setting.StatusProvide = [StatusID.UmbralIceIii_3382]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false - }; } static partial void ModifyHighBlizzardIiPvP(ref ActionSetting setting) @@ -578,7 +553,7 @@ static partial void ModifyHighBlizzardIiPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, + // Removed ShouldCheckStatus = false }; } diff --git a/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs b/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs index 53611a7cf..36ea0ff9d 100644 --- a/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs @@ -440,7 +440,6 @@ static partial void ModifyClosedPositionPvP(ref ActionSetting setting) setting.TargetType = TargetType.DancePartner; setting.CreateConfig = () => new ActionConfig() { - ShouldCheckStatus = false, }; } @@ -451,7 +450,6 @@ static partial void ModifyEnAvantPvP(ref ActionSetting setting) setting.StatusProvide = [StatusID.EnAvant]; setting.CreateConfig = () => new ActionConfig() { - ShouldCheckStatus = false, AoeCount = 1, }; } @@ -461,7 +459,6 @@ static partial void ModifyStarfallDancePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.StatusProvide = [StatusID.StarfallDance]; } @@ -471,7 +468,6 @@ static partial void ModifyFanDancePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.StatusProvide = [StatusID.FanDance]; } @@ -482,7 +478,6 @@ static partial void ModifyCuringWaltzPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -492,7 +487,6 @@ static partial void ModifyReverseCascadePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.StatusNeed = [StatusID.EnAvant]; setting.StatusProvide = [StatusID.Bladecatcher]; @@ -503,7 +497,6 @@ static partial void ModifyFountainfallPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.MPOverride = () => 0; setting.StatusNeed = [StatusID.EnAvant]; @@ -515,7 +508,6 @@ static partial void ModifySaberDancePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.MPOverride = () => 0; setting.StatusNeed = [StatusID.FlourishingSaberDance]; @@ -535,7 +527,6 @@ static partial void ModifyDanceOfTheDawnPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.MPOverride = () => 0; setting.StatusNeed = [StatusID.FlourishingSaberDance, StatusID.SoloStep]; @@ -546,7 +537,6 @@ static partial void ModifyHoningDancePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.StatusProvide = [StatusID.HoningDance]; @@ -557,7 +547,6 @@ static partial void ModifyHoningOvationPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.StatusProvide = [StatusID.HoningOvation]; } diff --git a/RotationSolver.Basic/Rotations/Basic/PictomancerRotation.cs b/RotationSolver.Basic/Rotations/Basic/PictomancerRotation.cs index 013ebf5d9..290c16604 100644 --- a/RotationSolver.Basic/Rotations/Basic/PictomancerRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/PictomancerRotation.cs @@ -723,7 +723,6 @@ static partial void ModifyFireInRedPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -732,7 +731,6 @@ static partial void ModifyHolyInWhitePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -742,7 +740,6 @@ static partial void ModifyCreatureMotifPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.IsFriendly = true; } @@ -753,7 +750,6 @@ static partial void ModifyLivingMusePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -773,7 +769,6 @@ static partial void ModifySmudgePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.IsFriendly = true; } @@ -784,7 +779,6 @@ static partial void ModifyTemperaCoatPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.IsFriendly = true; } @@ -796,7 +790,6 @@ static partial void ModifySubtractivePalettePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.IsFriendly = true; } @@ -806,7 +799,6 @@ static partial void ModifyAdventOfChocobastionPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -817,7 +809,6 @@ static partial void ModifyAeroInGreenPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -827,7 +818,6 @@ static partial void ModifyWaterInBluePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -838,28 +828,25 @@ static partial void ModifyBlizzardInCyanPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } static partial void ModifyStoneInYellowPvP(ref ActionSetting setting) { - setting.StatusNeed = [StatusID.SubtractivePalette_4102, StatusID.Aetherhues_4100]; + setting.StatusNeed = [StatusID.Aetherhues_4100]; setting.StatusProvide = [StatusID.AetherhuesIi_4101]; setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } static partial void ModifyThunderInMagentaPvP(ref ActionSetting setting) { - setting.StatusNeed = [StatusID.SubtractivePalette_4102, StatusID.AetherhuesIi_4101]; + setting.StatusNeed = [StatusID.AetherhuesIi_4101]; setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -869,7 +856,6 @@ static partial void ModifyCometInBlackPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -880,7 +866,6 @@ static partial void ModifyPomMotifPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.IsFriendly = true; } @@ -888,11 +873,10 @@ static partial void ModifyPomMotifPvP(ref ActionSetting setting) static partial void ModifyWingMotifPvP(ref ActionSetting setting) { setting.StatusNeed = [StatusID.WingSketch]; - // setting.StatusProvide = [StatusID.WingMotif]; + setting.StatusProvide = [StatusID.WingMotif]; setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.IsFriendly = true; } @@ -900,11 +884,10 @@ static partial void ModifyWingMotifPvP(ref ActionSetting setting) static partial void ModifyClawMotifPvP(ref ActionSetting setting) { setting.StatusNeed = [StatusID.ClawSketch]; - // setting.StatusProvide = [StatusID.ClawMotif]; + setting.StatusProvide = [StatusID.ClawMotif]; setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.IsFriendly = true; } @@ -916,7 +899,6 @@ static partial void ModifyMawMotifPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; setting.IsFriendly = true; } @@ -928,7 +910,6 @@ static partial void ModifyPomMusePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -939,7 +920,6 @@ static partial void ModifyWingedMusePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -950,7 +930,6 @@ static partial void ModifyClawedMusePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -961,7 +940,6 @@ static partial void ModifyFangedMusePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -971,7 +949,6 @@ static partial void ModifyRetributionOfTheMadeenPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -982,7 +959,6 @@ static partial void ModifyTemperaGrassaPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -993,7 +969,6 @@ static partial void ModifyStarPrismPvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } #endregion diff --git a/RotationSolver.Basic/Rotations/Basic/RedMageRotation.cs b/RotationSolver.Basic/Rotations/Basic/RedMageRotation.cs index d7afc58c4..b0c15a980 100644 --- a/RotationSolver.Basic/Rotations/Basic/RedMageRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/RedMageRotation.cs @@ -235,10 +235,8 @@ static partial void ModifyJoltIiiPvP(ref ActionSetting setting) setting.StatusProvide = [StatusID.Dualcast_1393]; setting.CreateConfig = () => new ActionConfig() { - ShouldCheckStatus = false, AoeCount = 1, }; - } static partial void ModifyGrandImpactPvP(ref ActionSetting setting) @@ -254,30 +252,18 @@ static partial void ModifyGrandImpactPvP(ref ActionSetting setting) static partial void ModifyEnchantedRipostePvP(ref ActionSetting setting) { setting.StatusProvide = [StatusID.EnchantedRiposte]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false, - }; } static partial void ModifyEnchantedZwerchhauPvP(ref ActionSetting setting) { setting.ComboIds = [ActionID.EnchantedRipostePvP]; setting.StatusProvide = [StatusID.EnchantedZwerchhau_3238]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false, - }; } static partial void ModifyEnchantedRedoublementPvP(ref ActionSetting setting) { setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.EnchantedRipostePvP) == ActionID.EnchantedRedoublementPvP; setting.StatusProvide = [StatusID.EnchantedRedoublement_3239]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false, - }; } static partial void ModifyScorchPvP(ref ActionSetting setting) @@ -285,7 +271,6 @@ static partial void ModifyScorchPvP(ref ActionSetting setting) setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.EnchantedRipostePvP) == ActionID.ScorchPvP; setting.CreateConfig = () => new ActionConfig() { - ShouldCheckStatus = false, AoeCount = 1, }; } @@ -295,7 +280,6 @@ static partial void ModifyResolutionPvP(ref ActionSetting setting) setting.TargetStatusProvide = [StatusID.Silence_1347]; setting.CreateConfig = () => new ActionConfig() { - ShouldCheckStatus = false, AoeCount = 1, }; } @@ -303,10 +287,6 @@ static partial void ModifyResolutionPvP(ref ActionSetting setting) static partial void ModifyEmboldenPvP(ref ActionSetting setting) { setting.StatusProvide = [StatusID.Embolden_2282, StatusID.PrefulgenceReady_4322]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false, - }; } static partial void ModifyCorpsacorpsPvP(ref ActionSetting setting) @@ -317,19 +297,11 @@ static partial void ModifyCorpsacorpsPvP(ref ActionSetting setting) static partial void ModifyDisplacementPvP(ref ActionSetting setting) { setting.StatusProvide = [StatusID.Displacement_3243]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false, - }; } static partial void ModifyFortePvP(ref ActionSetting setting) { setting.StatusProvide = [StatusID.Forte]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false, - }; } static partial void ModifyPrefulgencePvP(ref ActionSetting setting) diff --git a/RotationSolver.Basic/Rotations/Basic/SummonerRotation.cs b/RotationSolver.Basic/Rotations/Basic/SummonerRotation.cs index 106a00f39..cda0794d2 100644 --- a/RotationSolver.Basic/Rotations/Basic/SummonerRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/SummonerRotation.cs @@ -607,7 +607,6 @@ static partial void ModifySlipstreamPvP(ref ActionSetting setting) { setting.CreateConfig = () => new ActionConfig() { - ShouldCheckStatus = false, AoeCount = 1, }; setting.TargetStatusProvide = [StatusID.Slipping]; @@ -620,7 +619,6 @@ static partial void ModifyCrimsonCyclonePvP(ref ActionSetting setting) setting.CreateConfig = () => new ActionConfig() { AoeCount = 1, - ShouldCheckStatus = false, }; } @@ -629,7 +627,6 @@ static partial void ModifyCrimsonStrikePvP(ref ActionSetting setting) setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.CrimsonCyclonePvP) == ActionID.CrimsonStrikePvP; setting.CreateConfig = () => new ActionConfig() { - ShouldCheckStatus = false, AoeCount = 1, }; } @@ -637,10 +634,6 @@ static partial void ModifyCrimsonStrikePvP(ref ActionSetting setting) static partial void ModifyRadiantAegisPvP(ref ActionSetting setting) { setting.StatusProvide = [StatusID.RadiantAegis_3224]; - setting.CreateConfig = () => new ActionConfig() - { - ShouldCheckStatus = false, - }; } static partial void ModifyNecrotizePvP(ref ActionSetting setting)