From 369511406e877c16aa998e63ff6e707451cad6dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <53346444+ArchiDog1998@users.noreply.github.com> Date: Sat, 9 Mar 2024 21:09:00 +0800 Subject: [PATCH] fix: casting and some ui preview fix. --- Resources/HostileCastingArea.json | 4 +++- Resources/NoCastingStatus.json | 13 +++++++++++++ Resources/RotationSolverRecord.json | 4 ++-- RotationSolver/Commands/RSCommands_Actions.cs | 4 +++- RotationSolver/Localization/Localization.json | 4 +++- RotationSolver/UI/RotationConfigWindow.cs | 2 +- RotationSolver/UI/TimelineDrawer.cs | 5 +++-- RotationSolver/Updaters/PreviewUpdater.cs | 4 +++- XIVPainter | 2 +- 9 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 Resources/NoCastingStatus.json diff --git a/Resources/HostileCastingArea.json b/Resources/HostileCastingArea.json index 05019adb8..9c8a49795 100644 --- a/Resources/HostileCastingArea.json +++ b/Resources/HostileCastingArea.json @@ -517,5 +517,7 @@ 32945, 22247, 22238, - 33077 + 33077, + 34694, + 34695 ] \ No newline at end of file diff --git a/Resources/NoCastingStatus.json b/Resources/NoCastingStatus.json new file mode 100644 index 000000000..386c1bc53 --- /dev/null +++ b/Resources/NoCastingStatus.json @@ -0,0 +1,13 @@ +[ + 639, + 960, + 1049, + 1133, + 1599, + 3522, + 1072, + 1384, + 2657, + 3793, + 3802 +] \ No newline at end of file diff --git a/Resources/RotationSolverRecord.json b/Resources/RotationSolverRecord.json index 86404b036..c13eea449 100644 --- a/Resources/RotationSolverRecord.json +++ b/Resources/RotationSolverRecord.json @@ -1,5 +1,5 @@ { - "ClickingCount": 99386, - "SayingHelloCount": 167, + "ClickingCount": 100914, + "SayingHelloCount": 168, "SaidUsers": [] } \ No newline at end of file diff --git a/RotationSolver/Commands/RSCommands_Actions.cs b/RotationSolver/Commands/RSCommands_Actions.cs index 5e8786e89..1c45d64eb 100644 --- a/RotationSolver/Commands/RSCommands_Actions.cs +++ b/RotationSolver/Commands/RSCommands_Actions.cs @@ -40,7 +40,9 @@ internal static unsafe bool CanDoAnAction(bool isGCD) internal static uint _lastActionID; public static void DoAction() { - if (Player.Object.HasStatus(false, [..OtherConfiguration.NoCastingStatus.Select(i => (StatusID)i)])) + var statusTimes = Player.Object.StatusTimes(false, [.. OtherConfiguration.NoCastingStatus.Select(i => (StatusID)i)]); + + if (statusTimes.Any() && statusTimes.Min() > Player.Object.TotalCastTime - Player.Object.CurrentCastTime && statusTimes.Min() < 5) { return; } diff --git a/RotationSolver/Localization/Localization.json b/RotationSolver/Localization/Localization.json index 39b90eb4d..d501fe1ca 100644 --- a/RotationSolver/Localization/Localization.json +++ b/RotationSolver/Localization/Localization.json @@ -391,5 +391,7 @@ "RotationSolver.Data.UiString.TimelineNeedATarget": "Need a target", "RotationSolver.Data.UiString.TimelineTargetByTarget": "Target by target", "RotationSolver.Data.UiString.TimelinePlaceOnTarget": "Place On Target", - "RotationSolver.Data.UiString.TimelinePositionOffset": "Position Offset" + "RotationSolver.Data.UiString.TimelinePositionOffset": "Position Offset", + "RotationSolver.Data.UiString.ConfigWindow_List_NoCastingStatus": "No Casting debuffs", + "RotationSolver.Data.UiString.ConfigWindow_List_NoCastingStatusDesc": "No Casting debuffs List" } \ No newline at end of file diff --git a/RotationSolver/UI/RotationConfigWindow.cs b/RotationSolver/UI/RotationConfigWindow.cs index 76e28d2ad..e7e4c5a3b 100644 --- a/RotationSolver/UI/RotationConfigWindow.cs +++ b/RotationSolver/UI/RotationConfigWindow.cs @@ -1938,7 +1938,7 @@ private static void DrawListStatuses() ImGui.SetNextItemWidth(ImGui.GetWindowWidth()); ImGui.InputTextWithHint("##Searching the action", UiString.ConfigWindow_List_StatusNameOrId.Local(), ref _statusSearching, 128); - using var table = ImRaii.Table("Rotation Solver List Statuses", 3, ImGuiTableFlags.BordersInner | ImGuiTableFlags.Resizable | ImGuiTableFlags.SizingStretchSame); + using var table = ImRaii.Table("Rotation Solver List Statuses", 4, ImGuiTableFlags.BordersInner | ImGuiTableFlags.Resizable | ImGuiTableFlags.SizingStretchSame); if (table) { ImGui.TableSetupScrollFreeze(0, 1); diff --git a/RotationSolver/UI/TimelineDrawer.cs b/RotationSolver/UI/TimelineDrawer.cs index f3e357847..c871f631a 100644 --- a/RotationSolver/UI/TimelineDrawer.cs +++ b/RotationSolver/UI/TimelineDrawer.cs @@ -768,10 +768,11 @@ private static void DrawingGetterDraw(BaseDrawingGetter drawing, uint[] actionId ImGui.SameLine(); if (objectDrawing.IsActorEffect) { - index = Array.IndexOf(_actorNames, objectDrawing.Path.UnLockOn()); + index = Array.IndexOf(_actorNames.Select(n => n.StartsWith("chn_") ? n.Channeling() : n.LockOn()).ToArray(), objectDrawing.Path); if (ImGuiHelper.SelectableCombo("##PathName" + drawing.GetHashCode(), _actorShowNames, ref index)) { - objectDrawing.Path = _actorNames[index].LockOn(); + var actorName = _actorNames[index]; + objectDrawing.Path = actorName.StartsWith("chn_") ? actorName.Channeling() : actorName.LockOn(); } } else diff --git a/RotationSolver/Updaters/PreviewUpdater.cs b/RotationSolver/Updaters/PreviewUpdater.cs index 4e21f571b..123996b1d 100644 --- a/RotationSolver/Updaters/PreviewUpdater.cs +++ b/RotationSolver/Updaters/PreviewUpdater.cs @@ -53,13 +53,15 @@ private static void UpdateEntry() private static unsafe void UpdateCancelCast() { + if (!Player.Object.IsCasting) return; + var tarDead = Service.Config.UseStopCasting && Svc.Objects.SearchById(Player.Object.CastTargetObjectId) is BattleChara b && b.IsEnemy() && b.CurrentHp == 0; var statusTimes = Player.Object.StatusTimes(false, [.. OtherConfiguration.NoCastingStatus.Select(i => (StatusID)i)]); - var stopDueStatus = statusTimes.Any() && statusTimes.Min() > Player.Object.TotalCastTime - Player.Object.CurrentCastTime; + var stopDueStatus = statusTimes.Any() && statusTimes.Min() > Player.Object.TotalCastTime - Player.Object.CurrentCastTime && statusTimes.Min() < 5; if (_tarStopCastDelay.Delay(tarDead) || stopDueStatus) { diff --git a/XIVPainter b/XIVPainter index c404f0bde..7c97afa2e 160000 --- a/XIVPainter +++ b/XIVPainter @@ -1 +1 @@ -Subproject commit c404f0bde564225554f08cc82fcbe3bfe623a759 +Subproject commit 7c97afa2e63d4656df95435593dbee6e541be7a0