diff --git a/Resources/ActionAOECounts.json b/Resources/ActionAOECounts.json deleted file mode 100644 index e664b03ea..000000000 --- a/Resources/ActionAOECounts.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "3615": 2, - "11426": 1, - "11427": 1, - "106": 2, - "16494": 2, - "117": 2, - "15994": 2, - "15995": 2, - "15996": 2, - "16008": 2, - "3621": 2, - "16468": 2, - "16141": 2, - "16149": 2, - "2870": 2, - "16497": 2, - "2266": 2, - "7509": 2, - "24379": 2, - "16539": 2, - "24297": 2, - "41": 2, - "16462": 2, - "51": 2 -} \ No newline at end of file diff --git a/Resources/ActionHealRatio.json b/Resources/ActionHealRatio.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/Resources/ActionHealRatio.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/Resources/ActionTTK.json b/Resources/ActionTTK.json deleted file mode 100644 index 7a5b4a09e..000000000 --- a/Resources/ActionTTK.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "3599": 20.0, - "100": 30.0, - "113": 30.0, - "3560": 30.0, - "16499": 10.0, - "61": 10.0, - "66": 12.0, - "24378": 10.0, - "7489": 40.0, - "17864": 20.0, - "24283": 20.0, - "121": 20.0 -} \ No newline at end of file diff --git a/RotationSolver.Basic/Configuration/OtherConfiguration.cs b/RotationSolver.Basic/Configuration/OtherConfiguration.cs index a7b980145..857a67426 100644 --- a/RotationSolver.Basic/Configuration/OtherConfiguration.cs +++ b/RotationSolver.Basic/Configuration/OtherConfiguration.cs @@ -6,67 +6,19 @@ namespace RotationSolver.Basic.Configuration; #pragma warning disable CA2211 public class OtherConfiguration { - public static HashSet HostileCastingArea = new(); - public static HashSet HostileCastingTank = new(); + public static HashSet HostileCastingArea = []; + public static HashSet HostileCastingTank = []; - public static SortedList AnimationLockTime = new(); + public static SortedList AnimationLockTime = []; - public static Dictionary NoHostileNames = new(); - public static Dictionary NoProvokeNames = new(); - public static Dictionary BeneficialPositions = new(); + public static Dictionary NoHostileNames = []; + public static Dictionary NoProvokeNames = []; + public static Dictionary BeneficialPositions = []; - public static HashSet DangerousStatus = new(); - public static HashSet PriorityStatus = new(); + public static HashSet DangerousStatus = []; + public static HashSet PriorityStatus = []; - public static HashSet InvincibleStatus = new(); - - public static Dictionary ActionAOECounts = new() - { - //{ (uint) ActionID.Gravity, 2}, - //{ (uint) ActionID.FeatherRain, 1}, - //{ (uint) ActionID.Eruption, 1}, - //{ (uint) ActionID.QuickNock, 2}, - ////{ (uint) ActionID.ShadowBite, 2}, - //{ (uint) ActionID.RainOfDeath, 2}, - ////{ (uint) ActionID.BladeShower, 2}, - //{ (uint) ActionID.RisingWindmill, 2}, - ////{ (uint) ActionID.BloodShower, 2}, - ////{ (uint) ActionID.FanDance2, 2}, - //{ (uint) ActionID.Unleash, 2}, - //{ (uint) ActionID.StalwartSoul, 2}, - //{ (uint) ActionID.DemonSlice, 2}, - //{ (uint) ActionID.DemonSlaughter, 2}, - //{ (uint) ActionID.SpreadShot, 2}, - //{ (uint) ActionID.AutoCrossbow, 2}, - //{ (uint) ActionID.Katon, 2}, - //{ (uint) ActionID.Scatter, 2}, - //{ (uint) ActionID.WhorlOfDeath, 2}, - //{ (uint) ActionID.ArtOfWar, 2}, - //{ (uint) ActionID.Dyskrasia, 2}, - //{ (uint) ActionID.Overpower, 2}, - //{ (uint) ActionID.MythrilTempest, 2}, - //{ (uint) ActionID.SteelCyclone, 2}, - //{ (uint) ActionID.VariantSpiritDart, 1 }, - ////{ (uint) ActionID.VariantSpiritDart2, 1 }, - }; - - public static Dictionary ActionTTK = new() - { - //{ (uint) ActionID.Combust, 20}, - //{ (uint) ActionID.VenomousBite, 30}, - ////{ (uint) ActionID.WindBite, 30}, - //{ (uint) ActionID.IronJaws, 30}, - ////{ (uint) ActionID.BioBlaster, 10}, - //{ (uint) ActionID.TwinSnakes, 10}, - //{ (uint) ActionID.Demolish, 12}, - //{ (uint) ActionID.ShadowOfDeath, 10}, - //{ (uint) ActionID.Higanbana, 40}, - //{ (uint) ActionID.Bio, 20}, - //{ (uint) ActionID.EukrasianDosis, 20}, - //{ (uint) ActionID.Aero, 20}, - }; - - public static Dictionary ActionHealRatio = new(); + public static HashSet InvincibleStatus = []; public static RotationSolverRecord RotationSolverRecord = new(); @@ -95,12 +47,6 @@ public static void Init() Task.Run(() => InitOne(ref BeneficialPositions, nameof(BeneficialPositions))); - Task.Run(() => InitOne(ref ActionAOECounts, nameof(ActionAOECounts))); - - Task.Run(() => InitOne(ref ActionTTK, nameof(ActionTTK))); - - Task.Run(() => InitOne(ref ActionHealRatio, nameof(ActionHealRatio))); - Task.Run(() => InitOne(ref RotationSolverRecord, nameof(RotationSolverRecord), false)); } @@ -118,9 +64,6 @@ public static Task Save() await SaveBeneficialPositions(); await SaveRotationSolverRecord(); await SaveNoProvokeNames(); - await SaveActionAOECounts(); - await SaveActionTTK(); - await SaveActionHealRatio(); }); } public static Task SavePriorityStatus() @@ -128,20 +71,6 @@ public static Task SavePriorityStatus() return Task.Run(() => Save(PriorityStatus, nameof(PriorityStatus))); } - public static Task SaveActionHealRatio() - { - return Task.Run(() => Save(ActionHealRatio, nameof(ActionHealRatio))); - } - - public static Task SaveActionTTK() - { - return Task.Run(() => Save(ActionTTK, nameof(ActionTTK))); - } - - public static Task SaveActionAOECounts() - { - return Task.Run(() => Save(ActionAOECounts, nameof(ActionAOECounts))); - } public static Task SaveRotationSolverRecord() { return Task.Run(() => Save(RotationSolverRecord, nameof(RotationSolverRecord))); diff --git a/RotationSolver.Basic/Rotations/Basic/AstrologianRotation.cs b/RotationSolver.Basic/Rotations/Basic/AstrologianRotation.cs index ab26e5924..41836d76c 100644 --- a/RotationSolver.Basic/Rotations/Basic/AstrologianRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/AstrologianRotation.cs @@ -113,6 +113,14 @@ static partial void ModifyEarthlyStarPvE(ref ActionSetting setting) }; } + static partial void ModifyGravityPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + static partial void ModifyTheArrowPvE(ref ActionSetting setting) { setting.TargetStatusProvide = StatusHelper.AstCardStatus; @@ -161,6 +169,22 @@ static partial void ModifyTheSpirePvE(ref ActionSetting setting) setting.ActionCheck = () => DrawnCard == CardType.SPIRE; } + static partial void ModifyLightspeedPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; + } + + static partial void ModifyNeutralSectPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + TimeToKill = 15, + }; + } + /// /// /// diff --git a/RotationSolver.Basic/Rotations/Basic/BardRotation.cs b/RotationSolver.Basic/Rotations/Basic/BardRotation.cs index 8898a358d..ed42ad70c 100644 --- a/RotationSolver.Basic/Rotations/Basic/BardRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/BardRotation.cs @@ -88,11 +88,19 @@ static partial void ModifyPitchPerfectPvE(ref ActionSetting setting) static partial void ModifyQuickNockPvE(ref ActionSetting setting) { setting.StatusProvide = [StatusID.ShadowbiteReady]; + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyShadowbitePvE(ref ActionSetting setting) { setting.StatusNeed = [StatusID.ShadowbiteReady]; + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyApexArrowPvE(ref ActionSetting setting) @@ -106,9 +114,29 @@ static partial void ModifyBlastArrowPvE(ref ActionSetting setting) setting.StatusNeed = [StatusID.BlastArrowReady]; } + static partial void ModifyRainOfDeathPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + static partial void ModifyRadiantFinalePvE(ref ActionSetting setting) { setting.ActionCheck = () => JobGauge.Coda.Any(s => s != Song.NONE); + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; + } + + static partial void ModifyRagingStrikesPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; } static partial void ModifyTroubadourPvE(ref ActionSetting setting) @@ -117,6 +145,14 @@ static partial void ModifyTroubadourPvE(ref ActionSetting setting) setting.StatusProvide = StatusHelper.RangePhysicalDefense; } + static partial void ModifyBattleVoicePvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; + } + /// [RotationDesc(ActionID.TheWardensPaeanPvE)] protected override bool DispelGCD(out IAction? act) diff --git a/RotationSolver.Basic/Rotations/Basic/BlueMageRotation.cs b/RotationSolver.Basic/Rotations/Basic/BlueMageRotation.cs index 594188723..2ed5c0520 100644 --- a/RotationSolver.Basic/Rotations/Basic/BlueMageRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/BlueMageRotation.cs @@ -34,6 +34,22 @@ public enum BLUID : byte protected BLUID BlueId { get; set; } = BLUID.DPS; private protected sealed override IBaseAction Raise => AngelWhisperPvE; + + static partial void ModifyFeatherRainPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 1, + }; + } + + static partial void ModifyEruptionPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 1, + }; + } } ///// diff --git a/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs b/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs index ff9177d64..5d2ba0250 100644 --- a/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs @@ -61,11 +61,19 @@ static partial void ModifyWindmillPvE(ref ActionSetting setting) static partial void ModifyBladeshowerPvE(ref ActionSetting setting) { setting.StatusProvide = [StatusID.SilkenFlow]; + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyRisingWindmillPvE(ref ActionSetting setting) { setting.StatusNeed = [StatusID.SilkenSymmetry, StatusID.FlourishingSymmetry]; + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyBloodshowerPvE(ref ActionSetting setting) @@ -77,6 +85,10 @@ static partial void ModifyFanDanceIiPvE(ref ActionSetting setting) { setting.ActionCheck = () => Feathers > 0; setting.StatusProvide = [StatusID.ThreefoldFanDance]; + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyFanDanceIiiPvE(ref ActionSetting setting) diff --git a/RotationSolver.Basic/Rotations/Basic/DarkKnightRotation.cs b/RotationSolver.Basic/Rotations/Basic/DarkKnightRotation.cs index 8645c0908..e23132f6b 100644 --- a/RotationSolver.Basic/Rotations/Basic/DarkKnightRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/DarkKnightRotation.cs @@ -89,6 +89,10 @@ static partial void ModifyQuietusPvE(ref ActionSetting setting) static partial void ModifyStalwartSoulPvE(ref ActionSetting setting) { setting.StatusNeed = [StatusID.SaltedEarth]; + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifySaltAndDarknessPvE(ref ActionSetting setting) @@ -135,6 +139,14 @@ static partial void ModifyDeliriumPvE(ref ActionSetting setting) }; } + static partial void ModifyUnleashPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + /// protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) { diff --git a/RotationSolver.Basic/Rotations/Basic/GunbreakerRotation.cs b/RotationSolver.Basic/Rotations/Basic/GunbreakerRotation.cs index 1fae085a1..44ce288a1 100644 --- a/RotationSolver.Basic/Rotations/Basic/GunbreakerRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/GunbreakerRotation.cs @@ -119,6 +119,22 @@ static partial void ModifyBloodfestPvE(ref ActionSetting setting) setting.ActionCheck = () => MaxAmmo - Ammo > 1; } + static partial void ModifyDemonSlicePvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + + static partial void ModifyDemonSlaughterPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + /// protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) { diff --git a/RotationSolver.Basic/Rotations/Basic/MachinistRotation.cs b/RotationSolver.Basic/Rotations/Basic/MachinistRotation.cs index ca2401b3a..7a22740be 100644 --- a/RotationSolver.Basic/Rotations/Basic/MachinistRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/MachinistRotation.cs @@ -63,6 +63,10 @@ static partial void ModifyHeatBlastPvE(ref ActionSetting setting) static partial void ModifyAutoCrossbowPvE(ref ActionSetting setting) { setting.ActionCheck = () => IsOverheated && !OverheatedEndAfterGCD(); + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyRookAutoturretPvE(ref ActionSetting setting) @@ -101,6 +105,14 @@ static partial void ModifyQueenOverdrivePvE(ref ActionSetting setting) }; } + static partial void ModifySpreadShotPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + static partial void ModifyBarrelStabilizerPvE(ref ActionSetting setting) { setting.ActionCheck = () => Heat <= 50 && InCombat; diff --git a/RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs b/RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs index 187dd63d2..a8879548f 100644 --- a/RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs @@ -74,6 +74,10 @@ static partial void ModifyMeisuiPvE(ref ActionSetting setting) static partial void ModifyMugPvE(ref ActionSetting setting) { setting.ActionCheck = () => JobGauge.Ninki <= 60 && IsLongerThan(10); + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; } static partial void ModifyTrickAttackPvE(ref ActionSetting setting) @@ -124,6 +128,14 @@ public NinjaRotation() HyoshoRanryuPvE.Setting.Ninjutsu = [TenPvE, JinPvE]; } + static partial void ModifyKatonPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + static partial void ModifyShukuchiPvE(ref ActionSetting setting) { setting.TargetType = TargetType.Move; diff --git a/RotationSolver.Basic/Rotations/Basic/ReaperRotation.cs b/RotationSolver.Basic/Rotations/Basic/ReaperRotation.cs index d79a5dd3d..b556528bc 100644 --- a/RotationSolver.Basic/Rotations/Basic/ReaperRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/ReaperRotation.cs @@ -77,6 +77,10 @@ static partial void ModifyWhorlOfDeathPvE(ref ActionSetting setting) { setting.ActionCheck = () => !HasSoulReaver; setting.TargetStatusProvide = [StatusID.DeathsDesign]; + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifySoulScythePvE(ref ActionSetting setting) @@ -120,7 +124,10 @@ static partial void ModifyGluttonyPvE(ref ActionSetting setting) static partial void ModifyArcaneCirclePvE(ref ActionSetting setting) { setting.StatusProvide = [StatusID.BloodsownCircle_2972]; - setting.ActionCheck = () => IsLongerThan(10); + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; } static partial void ModifyPlentifulHarvestPvE(ref ActionSetting setting) diff --git a/RotationSolver.Basic/Rotations/Basic/RedMageRotation.cs b/RotationSolver.Basic/Rotations/Basic/RedMageRotation.cs index cd3b990ab..6de795467 100644 --- a/RotationSolver.Basic/Rotations/Basic/RedMageRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/RedMageRotation.cs @@ -76,6 +76,10 @@ static partial void ModifyRedoublementPvE(ref ActionSetting setting) static partial void ModifyScatterPvE(ref ActionSetting setting) { setting.StatusNeed = SwiftcastStatus; + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyVerthunderIiPvE(ref ActionSetting setting) @@ -120,8 +124,13 @@ static partial void ModifyEmboldenPvE(ref ActionSetting setting) static partial void ModifyManaficationPvE(ref ActionSetting setting) { - setting.ActionCheck = () => WhiteMana <= 50 && BlackMana <= 50 && InCombat && ManaStacks == 0 && IsLongerThan(10); + setting.ActionCheck = () => WhiteMana <= 50 && BlackMana <= 50 && InCombat && ManaStacks == 0; setting.ComboIdsNot = [ActionID.RipostePvE, ActionID.ZwerchhauPvE, ActionID.ScorchPvE, ActionID.VerflarePvE, ActionID.VerholyPvE]; + + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; } /// diff --git a/RotationSolver.Basic/Rotations/Basic/SageRotation.cs b/RotationSolver.Basic/Rotations/Basic/SageRotation.cs index 8c644e2b2..4539eca0e 100644 --- a/RotationSolver.Basic/Rotations/Basic/SageRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/SageRotation.cs @@ -61,6 +61,14 @@ static partial void ModifyEukrasianDosisPvE(ref ActionSetting setting) ]; } + static partial void ModifyDyskrasiaPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + static partial void ModifyToxikonPvE(ref ActionSetting setting) { setting.ActionCheck = () => Addersting > 0; diff --git a/RotationSolver.Basic/Rotations/Basic/SamuraiRotation.cs b/RotationSolver.Basic/Rotations/Basic/SamuraiRotation.cs index 664d4c857..3a2d40b61 100644 --- a/RotationSolver.Basic/Rotations/Basic/SamuraiRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/SamuraiRotation.cs @@ -124,7 +124,10 @@ static partial void ModifyEnpiPvE(ref ActionSetting setting) static partial void ModifyMeikyoShisuiPvE(ref ActionSetting setting) { setting.StatusProvide = [StatusID.MeikyoShisui]; - setting.ActionCheck = () => IsLongerThan(8); + setting.CreateConfig = () => new() + { + TimeToKill = 8, + }; } static partial void ModifyHagakurePvE(ref ActionSetting setting) diff --git a/RotationSolver.Basic/Rotations/Basic/ScholarRotation.cs b/RotationSolver.Basic/Rotations/Basic/ScholarRotation.cs index 9085123d0..b0203b1a1 100644 --- a/RotationSolver.Basic/Rotations/Basic/ScholarRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/ScholarRotation.cs @@ -121,7 +121,19 @@ static partial void ModifyAetherflowPvE(ref ActionSetting setting) static partial void ModifyChainStratagemPvE(ref ActionSetting setting) { - setting.ActionCheck = () => InCombat && IsLongerThan(10); + setting.ActionCheck = () => InCombat; + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; + } + + static partial void ModifyArtOfWarPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyDeploymentTacticsPvE(ref ActionSetting setting) diff --git a/RotationSolver.Basic/Rotations/Basic/SummonerRotation.cs b/RotationSolver.Basic/Rotations/Basic/SummonerRotation.cs index fae6b7cf6..2c84851ba 100644 --- a/RotationSolver.Basic/Rotations/Basic/SummonerRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/SummonerRotation.cs @@ -203,7 +203,11 @@ static partial void ModifyRuinIvPvE(ref ActionSetting setting) static partial void ModifySearingLightPvE(ref ActionSetting setting) { setting.StatusProvide = [StatusID.SearingLight]; - setting.ActionCheck = () => InCombat && IsLongerThan(15); + setting.ActionCheck = () => InCombat; + setting.CreateConfig = () => new() + { + TimeToKill = 15, + }; } static partial void ModifyRadiantAegisPvE(ref ActionSetting setting) diff --git a/RotationSolver.Basic/Rotations/Basic/WarriorRotation.cs b/RotationSolver.Basic/Rotations/Basic/WarriorRotation.cs index 825d047ba..18499ae07 100644 --- a/RotationSolver.Basic/Rotations/Basic/WarriorRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/WarriorRotation.cs @@ -39,6 +39,10 @@ static partial void ModifyUpheavalPvE(ref ActionSetting setting) static partial void ModifySteelCyclonePvE(ref ActionSetting setting) { setting.ActionCheck = () => BeastGauge >= 50 || Player.HasStatus(true, StatusID.InnerRelease); + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyPrimalRendPvE(ref ActionSetting setting) @@ -50,17 +54,44 @@ static partial void ModifyPrimalRendPvE(ref ActionSetting setting) static partial void ModifyInfuriatePvE(ref ActionSetting setting) { setting.StatusProvide = [StatusID.NascentChaos]; - setting.ActionCheck = () => HasHostilesInRange && BeastGauge <= 50 && InCombat && IsLongerThan(5); + setting.ActionCheck = () => HasHostilesInRange && BeastGauge <= 50 && InCombat; + setting.CreateConfig = () => new() + { + TimeToKill = 5, + }; } static partial void ModifyInnerReleasePvE(ref ActionSetting setting) { - setting.ActionCheck = () => IsLongerThan(10); + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; } static partial void ModifyBerserkPvE(ref ActionSetting setting) { - setting.ActionCheck = () => HasHostilesInRange && !ActionID.InnerReleasePvE.IsCoolingDown() && IsLongerThan(10); + setting.ActionCheck = () => HasHostilesInRange && !ActionID.InnerReleasePvE.IsCoolingDown(); + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; + } + + static partial void ModifyOverpowerPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; + } + + static partial void ModifyMythrilTempestPvE(ref ActionSetting setting) + { + setting.CreateConfig = () => new() + { + AoeCount = 2, + }; } static partial void ModifyVengeancePvE(ref ActionSetting setting) diff --git a/RotationSolver.Basic/Rotations/Basic/WhiteMageRotation.cs b/RotationSolver.Basic/Rotations/Basic/WhiteMageRotation.cs index 26f866b4d..5ac33553c 100644 --- a/RotationSolver.Basic/Rotations/Basic/WhiteMageRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/WhiteMageRotation.cs @@ -98,7 +98,11 @@ static partial void ModifyAfflatusMiseryPvE(ref ActionSetting setting) static partial void ModifyPresenceOfMindPvE(ref ActionSetting setting) { - setting.ActionCheck = () => !IsMoving && IsLongerThan(10); + setting.ActionCheck = () => !IsMoving; + setting.CreateConfig = () => new() + { + TimeToKill = 10, + }; } static partial void ModifyCureIiiPvP(ref ActionSetting setting) diff --git a/RotationSolver/Localization/Localization.json b/RotationSolver/Localization/Localization.json index d8ddef886..333158add 100644 --- a/RotationSolver/Localization/Localization.json +++ b/RotationSolver/Localization/Localization.json @@ -231,5 +231,39 @@ "PoslockModifierName": "The modifier key to unlock the movement temporary", "PoslockModifierDescription": "", "RotationSolver.Data.UiString.ConfigWindow_Actions_ForcedConditionSet_Description": "Conditions for forced automatic use of action.", - "RotationSolver.Data.UiString.ConfigWindow_Actions_DisabledConditionSet_Description": "Conditions for automatic use of action being disabled." + "RotationSolver.Data.UiString.ConfigWindow_Actions_DisabledConditionSet_Description": "Conditions for automatic use of action being disabled.", + "MoveTargetAngleName": "The size of the sector angle that can be selected as the moveable target", + "DistanceForMovingName": "Use gapcloser as a damage ability if the distance to your target is less then this.", + "MoveTowardsScreenCenterName": "Using movement actions towards the object in the center of the screen", + "MoveAreaActionFarthestName": "Target movement area ability to the farthest possible location", + "BossTimeToKillName": "If target's time until death is higher than this, regard it as boss.", + "DyingTimeToKillName": "If target's time until death is lower than this, regard it is dying.", + "ChangeTargetForFateName": "Select only Fate targets in Fate", + "OnlyAttackInViewName": "Only attack the target in view.", + "OnlyAttackInVisionConeName": "Only attack the targets in vision cone", + "TargetFatePriorityName": "Target Fate priority", + "TargetHuntingRelicLevePriorityName": "Target Hunt/Relic/Leve priority.", + "TargetQuestPriorityName": "Target quest priority.", + "AddEnemyListToHostileName": "Add enemy list to the hostile targets.", + "ChooseAttackMarkName": "Priority attack targets with attack markers", + "FilterStopMarkName": "Never attack targets with stop markers", + "HostileTypeName": "Engage settings", + "SwitchTargetFriendlyName": "Target allies for friendly actions.", + "TargetAllForFriendlyName": "Target all for friendly actions (include passerby)", + "MoveTargetAngleDescription": "If the selection mode is based on character facing, i.e., targets within the character's viewpoint are moveable targets. \nIf the selection mode is screen-centered, i.e., targets within a sector drawn upward from the character's point are movable targets.", + "RotationSolver.Basic.Attributes.ConfigUnitType.Degree": "Angle Unit, in degrees.", + "MoveAreaActionFarthestDescription": "Move to the furthest position for targeting are movement actions.", + "BossTimeToKillDescription": "", + "AddEnemyListToHostileDescription": "", + "ChooseAttackMarkDescription": "", + "FilterStopMarkDescription": "", + "HostileTypeDescription": "", + "SwitchTargetFriendlyDescription": "", + "TargetHuntingRelicLevePriorityDescription": "", + "TargetQuestPriorityDescription": "", + "DyingTimeToKillDescription": "", + "MoveTowardsScreenCenterDescription": "Using movement actions towards the object in the center of the screen, otherwise toward the facing object.", + "ChangeTargetForFateDescription": "", + "OnlyAttackInViewDescription": "", + "OnlyAttackInVisionConeDescription": "" } \ No newline at end of file