diff --git a/RotationSolver.Basic/Actions/BaseItem.cs b/RotationSolver.Basic/Actions/BaseItem.cs index a6d30d516..167650bec 100644 --- a/RotationSolver.Basic/Actions/BaseItem.cs +++ b/RotationSolver.Basic/Actions/BaseItem.cs @@ -162,7 +162,7 @@ public unsafe BaseItem(Item item) /// /// /// - public virtual unsafe bool CanUse(out IAction item, bool clippingCheck = true) + public virtual unsafe bool CanUse(out IAction item, bool clippingCheck = false) { item = this; if (_item == null) return false; @@ -177,8 +177,6 @@ public virtual unsafe bool CanUse(out IAction item, bool clippingCheck = true) if (remain > DataCenter.DefaultGCDRemain) return false; - if (clippingCheck && DataCenter.DefaultGCDRemain > 0) return false; - if (ItemCheck != null && !ItemCheck()) return false; return HasIt; diff --git a/RotationSolver.Basic/Actions/HpPotionItem.cs b/RotationSolver.Basic/Actions/HpPotionItem.cs index c3284dff1..e87b98f9f 100644 --- a/RotationSolver.Basic/Actions/HpPotionItem.cs +++ b/RotationSolver.Basic/Actions/HpPotionItem.cs @@ -32,6 +32,6 @@ public override bool CanUse(out IAction item, bool clippingCheck) if (!Player.Available) return false; if (Player.Object.GetHealthRatio() > Service.Config.HealthSingleAbilityHot) return false; if (Player.Object.MaxHp - Player.Object.CurrentHp < MaxHp) return false; - return base.CanUse(out item, clippingCheck); + return base.CanUse(out item); } } diff --git a/RotationSolver.Basic/Actions/IBaseItem.cs b/RotationSolver.Basic/Actions/IBaseItem.cs index 73d99607f..41950a414 100644 --- a/RotationSolver.Basic/Actions/IBaseItem.cs +++ b/RotationSolver.Basic/Actions/IBaseItem.cs @@ -19,5 +19,5 @@ public interface IBaseItem : IAction /// /// /// - bool CanUse(out IAction item, bool clippingCheck = true); + bool CanUse(out IAction item, bool clippingCheck = false); } diff --git a/RotationSolver.Basic/Actions/MpPotionItem.cs b/RotationSolver.Basic/Actions/MpPotionItem.cs index 7709425de..8cd425af0 100644 --- a/RotationSolver.Basic/Actions/MpPotionItem.cs +++ b/RotationSolver.Basic/Actions/MpPotionItem.cs @@ -19,6 +19,6 @@ public override bool CanUse(out IAction item, bool clippingCheck) item = this; if (!Player.Available) return false; if (Player.Object.MaxMp - DataCenter.CurrentMp < MaxMp) return false; - return base.CanUse(out item, clippingCheck); + return base.CanUse(out item); } } diff --git a/RotationSolver.Basic/Rotations/Basic/ViperRotation.cs b/RotationSolver.Basic/Rotations/Basic/ViperRotation.cs index 4d220340e..873c831b4 100644 --- a/RotationSolver.Basic/Rotations/Basic/ViperRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/ViperRotation.cs @@ -186,8 +186,6 @@ public partial class ViperRotation static partial void ModifyWrithingSnapPvE(ref ActionSetting setting) { setting.SpecialType = SpecialActionType.MeleeRange; - setting.ActionCheck = () => SerpentCombo == SerpentCombo.NONE; - } static partial void ModifySlitherPvE(ref ActionSetting setting) @@ -409,7 +407,7 @@ static partial void ModifyTwinbloodThreshPvE(ref ActionSetting setting) static partial void ModifyUncoiledFuryPvE(ref ActionSetting setting) { - setting.ActionCheck = () => RattlingCoilStacks >= 1 && SerpentCombo == SerpentCombo.NONE; + setting.ActionCheck = () => RattlingCoilStacks >= 1; setting.StatusProvide = [StatusID.PoisedForTwinfang]; setting.CreateConfig = () => new ActionConfig() { diff --git a/RotationSolver.SourceGenerators/Properties/Resources.resx b/RotationSolver.SourceGenerators/Properties/Resources.resx index f98e49059..413e5aaa0 100644 --- a/RotationSolver.SourceGenerators/Properties/Resources.resx +++ b/RotationSolver.SourceGenerators/Properties/Resources.resx @@ -32462,7 +32462,7 @@ BladeOfHonorPvE = 36922, /// <para>Duration: 15s</para> /// <para>Additional Effect: Grants Primeval Impulse when the effect expires or damage is taken</para> /// <para>Primeval Impulse Effect: Healing over time</para> -/// <para>Cure Potency: 400</para> +/// <para>Cure Potency: 300</para> /// <para>Duration: 15s</para> /// </summary> DamnationPvE = 36923, @@ -49849,7 +49849,7 @@ public abstract partial class WarriorRotation : CustomRotation /// <para>Duration: 15s</para> /// <para>Additional Effect: Grants Primeval Impulse when the effect expires or damage is taken</para> /// <para>Primeval Impulse Effect: Healing over time</para> - /// <para>Cure Potency: 400</para> + /// <para>Cure Potency: 300</para> /// <para>Duration: 15s</para> /// </summary> @@ -51558,7 +51558,7 @@ private sealed protected override IBaseAction LimitBreakPvP => SkyHighPvP; public static IBaseTrait EnhancedStardiverTrait { get; } = new BaseTrait(583); /// <summary> /// <see href="https://garlandtools.org/db/#action/50653"><strong>Melee Mastery</strong></see> (DRG) [653] - /// <para>Increases the potency of Fang and Claw to 140, Wheeling Thrust to 140, Drakesbane to 440, Raiden Thrust to 320, Stardiver to 720, Heavens' Thrust to 140, and Chaotic Spring to 140.</para> + /// <para>Increases the potency of Fang and Claw to 140, Wheeling Thrust to 140, Drakesbane to 440, Raiden Thrust to 320, Stardiver to 720, Heavens' Thrust to 140, Chaotic Spring to 140, and Wyrmwind Thrust to 440.</para> /// </summary> public static IBaseTrait MeleeMasteryTrait { get; } = new BaseTrait(653); @@ -86779,385 +86779,385 @@ private sealed protected override IBaseAction LimitBreakPvP => AdventOfChocob /// <summary> -///Actor Control Self -/// </summary> -[Description("Actor Control Self")] -ActorControlSelf = 559, -/// <summary> ///Airship Exploration Result /// </summary> [Description("Airship Exploration Result")] -AirshipExplorationResult = 544, +AirshipExplorationResult = 256, +/// <summary> +///Actor Control Target +/// </summary> +[Description("Actor Control Target")] +ActorControlTarget = 489, /// <summary> ///Actor Cast /// </summary> [Description("Actor Cast")] -ActorCast = 365, +ActorCast = 527, /// <summary> ///Actor Control /// </summary> [Description("Actor Control")] -ActorControl = 967, +ActorControl = 376, /// <summary> -///Airship Timers -/// </summary> -[Description("Airship Timers")] -AirshipTimers = 356, -/// <summary> -///Actor Control Target +///Actor Move /// </summary> -[Description("Actor Control Target")] -ActorControlTarget = 246, +[Description("Actor Move")] +ActorMove = 281, /// <summary> ///Actor Gauge /// </summary> [Description("Actor Gauge")] -ActorGauge = 677, -/// <summary> -///Actor Move -/// </summary> -[Description("Actor Move")] -ActorMove = 882, +ActorGauge = 667, /// <summary> ///Airship Status /// </summary> [Description("Airship Status")] -AirshipStatus = 685, +AirshipStatus = 475, +/// <summary> +///Actor Control Self +/// </summary> +[Description("Actor Control Self")] +ActorControlSelf = 679, /// <summary> ///Airship Status List /// </summary> [Description("Airship Status List")] -AirshipStatusList = 696, +AirshipStatusList = 242, /// <summary> ///Actor Set Pos /// </summary> [Description("Actor Set Pos")] -ActorSetPos = 311, +ActorSetPos = 454, +/// <summary> +///Airship Timers +/// </summary> +[Description("Airship Timers")] +AirshipTimers = 881, /// <summary> ///Crafting Log /// </summary> [Description("Crafting Log")] -CraftingLog = 726, +CraftingLog = 977, /// <summary> -///Currency Crystal Info +///CFNotify /// </summary> -[Description("Currency Crystal Info")] -CurrencyCrystalInfo = 850, +[Description("CFNotify")] +CFNotify = 335, /// <summary> ///Container Info /// </summary> [Description("Container Info")] -ContainerInfo = 155, +ContainerInfo = 980, /// <summary> -///CFNotify +///Currency Crystal Info /// </summary> -[Description("CFNotify")] -CFNotify = 485, +[Description("Currency Crystal Info")] +CurrencyCrystalInfo = 694, /// <summary> ///Desynth Result /// </summary> [Description("Desynth Result")] -DesynthResult = 891, -/// <summary> -///Event Play 32 -/// </summary> -[Description("Event Play 32")] -EventPlay32 = 747, -/// <summary> -///Examine Search Info -/// </summary> -[Description("Examine Search Info")] -ExamineSearchInfo = 864, +DesynthResult = 726, /// <summary> -///Event Play 255 +///Event Finish /// </summary> -[Description("Event Play 255")] -EventPlay255 = 660, +[Description("Event Finish")] +EventFinish = 677, /// <summary> -///Event Play 8 +///Effect Result Basic /// </summary> -[Description("Event Play 8")] -EventPlay8 = 915, +[Description("Effect Result Basic")] +EffectResultBasic = 874, /// <summary> -///Event Play 4 +///Examine /// </summary> -[Description("Event Play 4")] -EventPlay4 = 635, +[Description("Examine")] +Examine = 806, /// <summary> ///Event Play /// </summary> [Description("Event Play")] -EventPlay = 623, +EventPlay = 621, +/// <summary> +///Event Play 32 +/// </summary> +[Description("Event Play 32")] +EventPlay32 = 611, /// <summary> ///Environment Control /// </summary> [Description("Environment Control")] -EnvironmentControl = 979, +EnvironmentControl = 916, /// <summary> -///Effect +///Examine Search Info /// </summary> -[Description("Effect")] -Effect = 422, +[Description("Examine Search Info")] +ExamineSearchInfo = 572, /// <summary> -///Examine +///Event Play 8 /// </summary> -[Description("Examine")] -Examine = 106, +[Description("Event Play 8")] +EventPlay8 = 926, +/// <summary> +///Event Play 64 +/// </summary> +[Description("Event Play 64")] +EventPlay64 = 935, /// <summary> ///Effect Result /// </summary> [Description("Effect Result")] -EffectResult = 287, +EffectResult = 808, /// <summary> -///Effect Result Basic +///Event Play 16 /// </summary> -[Description("Effect Result Basic")] -EffectResultBasic = 329, +[Description("Event Play 16")] +EventPlay16 = 775, /// <summary> -///Event Play 128 +///Event Start /// </summary> -[Description("Event Play 128")] -EventPlay128 = 398, +[Description("Event Start")] +EventStart = 151, /// <summary> -///Event Finish +///Event Play 255 /// </summary> -[Description("Event Finish")] -EventFinish = 269, +[Description("Event Play 255")] +EventPlay255 = 317, /// <summary> -///Event Start +///Event Play 4 /// </summary> -[Description("Event Start")] -EventStart = 191, +[Description("Event Play 4")] +EventPlay4 = 340, /// <summary> -///Event Play 16 +///Effect /// </summary> -[Description("Event Play 16")] -EventPlay16 = 321, +[Description("Effect")] +Effect = 190, /// <summary> -///Event Play 64 +///Event Play 128 /// </summary> -[Description("Event Play 64")] -EventPlay64 = 162, +[Description("Event Play 128")] +EventPlay128 = 406, /// <summary> ///Free Company Info /// </summary> [Description("Free Company Info")] -FreeCompanyInfo = 805, +FreeCompanyInfo = 943, /// <summary> ///Free Company Dialog /// </summary> [Description("Free Company Dialog")] -FreeCompanyDialog = 109, +FreeCompanyDialog = 609, /// <summary> ///Gathering Log /// </summary> [Description("Gathering Log")] -GatheringLog = 630, +GatheringLog = 189, /// <summary> ///Inventory Transaction Finish /// </summary> [Description("Inventory Transaction Finish")] -InventoryTransactionFinish = 472, +InventoryTransactionFinish = 859, /// <summary> -///Init Zone +///Inventory Transaction /// </summary> -[Description("Init Zone")] -InitZone = 371, +[Description("Inventory Transaction")] +InventoryTransaction = 232, +/// <summary> +///Item Info +/// </summary> +[Description("Item Info")] +ItemInfo = 566, /// <summary> ///Island Workshop Supply Demand /// </summary> [Description("Island Workshop Supply Demand")] -IslandWorkshopSupplyDemand = 693, +IslandWorkshopSupplyDemand = 222, /// <summary> ///Inventory Action Ack /// </summary> [Description("Inventory Action Ack")] -InventoryActionAck = 783, +InventoryActionAck = 219, /// <summary> -///Item Market Board Info -/// </summary> -[Description("Item Market Board Info")] -ItemMarketBoardInfo = 777, -/// <summary> -///Item Info +///Init Zone /// </summary> -[Description("Item Info")] -ItemInfo = 720, +[Description("Init Zone")] +InitZone = 497, /// <summary> -///Inventory Transaction +///Item Market Board Info /// </summary> -[Description("Inventory Transaction")] -InventoryTransaction = 407, +[Description("Item Market Board Info")] +ItemMarketBoardInfo = 837, /// <summary> ///Logout /// </summary> [Description("Logout")] -Logout = 433, +Logout = 425, +/// <summary> +///Market Board Item Listing +/// </summary> +[Description("Market Board Item Listing")] +MarketBoardItemListing = 451, /// <summary> ///Market Board Search Result /// </summary> [Description("Market Board Search Result")] -MarketBoardSearchResult = 900, +MarketBoardSearchResult = 245, /// <summary> ///Market Board Item Listing History /// </summary> [Description("Market Board Item Listing History")] -MarketBoardItemListingHistory = 703, +MarketBoardItemListingHistory = 258, /// <summary> -///Market Board Item Listing +///Market Board Item Listing Count /// </summary> -[Description("Market Board Item Listing")] -MarketBoardItemListing = 931, +[Description("Market Board Item Listing Count")] +MarketBoardItemListingCount = 160, /// <summary> ///Market Board Purchase /// </summary> [Description("Market Board Purchase")] -MarketBoardPurchase = 989, -/// <summary> -///Market Board Item Listing Count -/// </summary> -[Description("Market Board Item Listing Count")] -MarketBoardItemListingCount = 563, +MarketBoardPurchase = 568, /// <summary> ///Npc Spawn /// </summary> [Description("Npc Spawn")] -NpcSpawn = 857, +NpcSpawn = 390, /// <summary> ///Object Spawn /// </summary> [Description("Object Spawn")] -ObjectSpawn = 281, -/// <summary> -///Player Setup -/// </summary> -[Description("Player Setup")] -PlayerSetup = 679, -/// <summary> -///Place Field Marker -/// </summary> -[Description("Place Field Marker")] -PlaceFieldMarker = 355, +ObjectSpawn = 942, /// <summary> ///Player Spawn /// </summary> [Description("Player Spawn")] -PlayerSpawn = 357, +PlayerSpawn = 591, +/// <summary> +///Place Field Marker Preset +/// </summary> +[Description("Place Field Marker Preset")] +PlaceFieldMarkerPreset = 550, /// <summary> ///Prepare Zoning /// </summary> [Description("Prepare Zoning")] -PrepareZoning = 361, +PrepareZoning = 790, /// <summary> -///Place Field Marker Preset +///Player Setup /// </summary> -[Description("Place Field Marker Preset")] -PlaceFieldMarkerPreset = 919, +[Description("Player Setup")] +PlayerSetup = 198, /// <summary> ///Player Stats /// </summary> [Description("Player Stats")] -PlayerStats = 524, +PlayerStats = 825, /// <summary> ///Playtime /// </summary> [Description("Playtime")] -Playtime = 275, +Playtime = 163, +/// <summary> +///Place Field Marker +/// </summary> +[Description("Place Field Marker")] +PlaceFieldMarker = 486, /// <summary> ///Result Dialog /// </summary> [Description("Result Dialog")] -ResultDialog = 375, +ResultDialog = 689, /// <summary> ///Retainer Information /// </summary> [Description("Retainer Information")] -RetainerInformation = 855, +RetainerInformation = 860, /// <summary> -///Status Effect List +///System Log Message /// </summary> -[Description("Status Effect List")] -StatusEffectList = 384, +[Description("System Log Message")] +SystemLogMessage = 167, /// <summary> -///Submarine Status List +///Status Effect List /// </summary> -[Description("Submarine Status List")] -SubmarineStatusList = 954, +[Description("Status Effect List")] +StatusEffectList = 937, /// <summary> -///Status Effect List 3 +///Status Effect List 2 /// </summary> -[Description("Status Effect List 3")] -StatusEffectList3 = 893, +[Description("Status Effect List 2")] +StatusEffectList2 = 700, /// <summary> ///Submarine Timers /// </summary> [Description("Submarine Timers")] -SubmarineTimers = 867, +SubmarineTimers = 248, /// <summary> -///Status Effect List 2 +///Submarine Progression Status /// </summary> -[Description("Status Effect List 2")] -StatusEffectList2 = 987, +[Description("Submarine Progression Status")] +SubmarineProgressionStatus = 257, /// <summary> ///Submarine Exploration Result /// </summary> [Description("Submarine Exploration Result")] -SubmarineExplorationResult = 290, +SubmarineExplorationResult = 548, /// <summary> -///Submarine Progression Status +///Submarine Status List /// </summary> -[Description("Submarine Progression Status")] -SubmarineProgressionStatus = 309, +[Description("Submarine Status List")] +SubmarineStatusList = 491, /// <summary> -///System Log Message +///Status Effect List 3 /// </summary> -[Description("System Log Message")] -SystemLogMessage = 532, +[Description("Status Effect List 3")] +StatusEffectList3 = 561, +/// <summary> +///Update Inventory Slot +/// </summary> +[Description("Update Inventory Slot")] +UpdateInventorySlot = 702, /// <summary> ///Update Class Info /// </summary> [Description("Update Class Info")] -UpdateClassInfo = 327, +UpdateClassInfo = 633, /// <summary> ///Update Hp Mp Tp /// </summary> [Description("Update Hp Mp Tp")] -UpdateHpMpTp = 512, +UpdateHpMpTp = 424, /// <summary> ///Update Search Info /// </summary> [Description("Update Search Info")] -UpdateSearchInfo = 815, -/// <summary> -///Update Inventory Slot -/// </summary> -[Description("Update Inventory Slot")] -UpdateInventorySlot = 723, +UpdateSearchInfo = 828, /// <summary> ///Weather Change /// </summary> [Description("Weather Change")] -WeatherChange = 495, +WeatherChange = 789, /// <summary> ///Inventory Modify Handler /// </summary> [Description("Inventory Modify Handler")] -InventoryModifyHandler = 259, +InventoryModifyHandler = 665, /// <summary> ///Market Board Purchase Handler /// </summary> [Description("Market Board Purchase Handler")] -MarketBoardPurchaseHandler = 839, +MarketBoardPurchaseHandler = 695, /// <summary> ///Set Search Info Handler /// </summary> [Description("Set Search Info Handler")] -SetSearchInfoHandler = 622, +SetSearchInfoHandler = 270, /// <summary> ///Update Position Handler /// </summary> [Description("Update Position Handler")] -UpdatePositionHandler = 812, +UpdatePositionHandler = 127, /// <summary> ///Update Position Instance /// </summary> diff --git a/RotationSolver/Commands/RSCommands_StateSpecialCommand.cs b/RotationSolver/Commands/RSCommands_StateSpecialCommand.cs index df96647fc..17e3ff0d9 100644 --- a/RotationSolver/Commands/RSCommands_StateSpecialCommand.cs +++ b/RotationSolver/Commands/RSCommands_StateSpecialCommand.cs @@ -8,7 +8,7 @@ namespace RotationSolver.Commands { public static partial class RSCommands { - private static string _stateString = "Off", _specialString = string.Empty; + public static string _stateString = "Off", _specialString = string.Empty; internal static string EntryString => _stateString + (DataCenter.SpecialTimeLeft < 0 ? string.Empty : $" - {_specialString}: {DataCenter.SpecialTimeLeft:F2}s"); @@ -22,7 +22,7 @@ private static void UpdateToast() }); } - private static unsafe void DoStateCommandType(StateCommandType stateType, int index = -1) => DoOneCommandType((type, role) => type.ToStateString(role), role => + public static unsafe void DoStateCommandType(StateCommandType stateType, int index = -1) => DoOneCommandType((type, role) => type.ToStateString(role), role => { if (DataCenter.State) { diff --git a/RotationSolver/Data/UiString.cs b/RotationSolver/Data/UiString.cs index 4069a3b0c..a08dd4681 100644 --- a/RotationSolver/Data/UiString.cs +++ b/RotationSolver/Data/UiString.cs @@ -412,7 +412,7 @@ internal enum UiString [Description("Speed Forced Condition")] ConfigWindow_Auto_SpeedConditionSet, - [Description("Limit Break Forced Condition")] + [Description("Limit Break Forced Condition (Unsupported)")] ConfigWindow_Auto_LimitBreakConditionSet, [Description("This will change the way that RSR uses actions.")] diff --git a/RotationSolver/Updaters/PreviewUpdater.cs b/RotationSolver/Updaters/PreviewUpdater.cs index 0818d78b9..c040ebadb 100644 --- a/RotationSolver/Updaters/PreviewUpdater.cs +++ b/RotationSolver/Updaters/PreviewUpdater.cs @@ -2,6 +2,7 @@ using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling.Payloads; using ECommons.DalamudServices; +using ECommons.ExcelServices; using ECommons.GameHelpers; using FFXIVClientStructs.FFXIV.Client.Game.UI; using FFXIVClientStructs.FFXIV.Client.System.Framework; @@ -9,6 +10,9 @@ using FFXIVClientStructs.FFXIV.Client.UI.Misc; using RotationSolver.Basic.Configuration; using RotationSolver.Commands; +using Dalamud.Game.ClientState.Keys; +using Lumina.Excel.GeneratedSheets; +using ECommons; namespace RotationSolver.Updaters; @@ -20,12 +24,43 @@ internal static void UpdatePreview() UpdateCancelCast(); } + //public static byte Job => Job; static IDtrBarEntry? _dtrEntry; + private static void UpdateEntry() { var showStr = RSCommands.EntryString; - if (Service.Config.ShowInfoOnDtr - && !string.IsNullOrEmpty(showStr)) + var icon = Player.Job switch + { + Job.WAR => BitmapFontIcon.Warrior, + Job.PLD => BitmapFontIcon.Paladin, + Job.DRK => BitmapFontIcon.DarkKnight, + Job.GNB => BitmapFontIcon.Gunbreaker, + + Job.AST => BitmapFontIcon.Astrologian, + Job.WHM => BitmapFontIcon.WhiteMage, + Job.SGE => BitmapFontIcon.Sage, + Job.SCH => BitmapFontIcon.Scholar, + + Job.BLM => BitmapFontIcon.BlackMage, + Job.SMN => BitmapFontIcon.Summoner, + Job.RDM => BitmapFontIcon.RedMage, + Job.PCT => BitmapFontIcon.Pictomancer, + + Job.MNK => BitmapFontIcon.Monk, + Job.SAM => BitmapFontIcon.Samurai, + Job.DRG => BitmapFontIcon.Dragoon, + Job.RPR => BitmapFontIcon.Reaper, + Job.NIN => BitmapFontIcon.Ninja, + Job.VPR => BitmapFontIcon.Viper, + + Job.BRD => BitmapFontIcon.Bard, + Job.MCH => BitmapFontIcon.Machinist, + Job.DNC => BitmapFontIcon.Dancer, + _ => BitmapFontIcon.ExclamationRectangle, + }; + + if (Service.Config.ShowInfoOnDtr && !string.IsNullOrEmpty(showStr)) { try { @@ -41,9 +76,9 @@ private static void UpdateEntry() if (!_dtrEntry.Shown) _dtrEntry.Shown = true; _dtrEntry.Text = new SeString( - new IconPayload(BitmapFontIcon.DPS), + new IconPayload(icon), new TextPayload(showStr) - ); + ); _dtrEntry.OnClick = RSCommands.IncrementState; } else if (_dtrEntry != null && _dtrEntry.Shown)