diff --git a/.github/workflows/build-plugin.yml b/.github/workflows/build-plugin.yml index ac3c798..c3dec74 100644 --- a/.github/workflows/build-plugin.yml +++ b/.github/workflows/build-plugin.yml @@ -25,7 +25,7 @@ jobs: - name: Download Dalamud Latest run: | - wget https://goatcorp.github.io/dalamud-distrib/latest.zip -O ${{ env.DALAMUD_HOME }}.zip + wget https://goatcorp.github.io/dalamud-distrib/stg/latest.zip -O ${{ env.DALAMUD_HOME }}.zip unzip ${{ env.DALAMUD_HOME }}.zip -d ${{ env.DALAMUD_HOME }} - name: Restore diff --git a/ECommons b/ECommons index 515433f..11fd2f0 160000 --- a/ECommons +++ b/ECommons @@ -1 +1 @@ -Subproject commit 515433fba468f4706fb4eca92447ebc54b7164e3 +Subproject commit 11fd2f06e1374e846e1aada06071da5fc7ef697a diff --git a/HoardFarm/HoardFarm.cs b/HoardFarm/HoardFarm.cs index 045b412..a6d03dd 100644 --- a/HoardFarm/HoardFarm.cs +++ b/HoardFarm/HoardFarm.cs @@ -1,12 +1,12 @@ using System.Diagnostics.CodeAnalysis; using System.Globalization; using AutoRetainerAPI; -using Dalamud; +using Dalamud.Game; using Dalamud.Interface.Windowing; using Dalamud.Plugin; using Dalamud.Plugin.Services; using ECommons; -using ECommons.Automation; +using ECommons.Automation.LegacyTaskManager; using ECommons.Reflection; using HoardFarm.IPC; using HoardFarm.Model; @@ -28,7 +28,7 @@ public sealed class HoardFarm : IDalamudPlugin private readonly RetainerService retainerService; public readonly WindowSystem WindowSystem = new("HoardFarm"); - public HoardFarm(DalamudPluginInterface? pluginInterface) + public HoardFarm(IDalamudPluginInterface? pluginInterface) { pluginInterface?.Create(); P = this; diff --git a/HoardFarm/HoardFarm.csproj b/HoardFarm/HoardFarm.csproj index ccce398..3891bb3 100644 --- a/HoardFarm/HoardFarm.csproj +++ b/HoardFarm/HoardFarm.csproj @@ -21,6 +21,7 @@ $(appdata)\XIVLauncher\addon\Hooks\dev\ + $(appdata)\XIVLauncher\devPlugins\HoardFarm\ true @@ -30,6 +31,7 @@ TRACE + $(DalamudDevPlugins) diff --git a/HoardFarm/HoardFarm.json b/HoardFarm/HoardFarm.json index fe3ba44..a157b65 100644 --- a/HoardFarm/HoardFarm.json +++ b/HoardFarm/HoardFarm.json @@ -5,6 +5,7 @@ "Description": "Plugin to help farming DeepDungeon Hoards (...for you)", "InternalName": "HoardFarm", "ApplicableVersion": "any", + "DalamudApiLevel": 10, "Tags": [ "hoard", "farm", diff --git a/HoardFarm/Service/HoardFarmService.cs b/HoardFarm/Service/HoardFarmService.cs index d95a631..f94190a 100644 --- a/HoardFarm/Service/HoardFarmService.cs +++ b/HoardFarm/Service/HoardFarmService.cs @@ -124,12 +124,12 @@ private unsafe bool SearchLogic() if (!TaskManager.IsBusy) { if (!objectPositions.Where(e => !visitedObjectIds.Contains(e.Value.ObjectId)) .Where(e => ChestIDs.Contains(e.Value.DataId)) - .OrderBy(e => e.Value.Position.Distance(Player.GameObject->Position)) + .OrderBy(e => e.Value.Position.Distance(Player.Position)) .Select(e => e.Value) .TryGetFirst(out var next)) { if (!objectPositions.Where(e => !visitedObjectIds.Contains(e.Value.ObjectId)) - .OrderBy(e => e.Value.Position.Distance(Player.GameObject->Position)) + .OrderBy(e => e.Value.Position.Distance(Player.Position)) .Select(e => e.Value) .TryGetFirst(out next)) { @@ -342,7 +342,7 @@ private void SafetyChecks() private void UpdateObjectPositions() { foreach (var gameObject in ObjectTable) - objectPositions.TryAdd(gameObject.ObjectId, new MapObject(gameObject.ObjectId, gameObject.DataId, gameObject.Position)); + objectPositions.TryAdd(gameObject.EntityId, new MapObject(gameObject.EntityId, gameObject.DataId, gameObject.Position)); } private bool CheckRetainer() @@ -427,7 +427,7 @@ private void OnMapChange(ushort territoryType) } private void OnChatMessage( - XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) + XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled) { if (senseHoardMessage.Equals(message.TextValue)) { diff --git a/HoardFarm/Service/PluginService.cs b/HoardFarm/Service/PluginService.cs index 200f753..bc6cedb 100644 --- a/HoardFarm/Service/PluginService.cs +++ b/HoardFarm/Service/PluginService.cs @@ -3,7 +3,7 @@ using Dalamud.IoC; using Dalamud.Plugin; using Dalamud.Plugin.Services; -using ECommons.Automation; +using ECommons.Automation.LegacyTaskManager; using HoardFarm.Model; namespace HoardFarm.Service; @@ -13,7 +13,7 @@ public class PluginService public static HoardFarm P = null!; [PluginService] - public static DalamudPluginInterface PluginInterface { get; private set; } = null!; + public static IDalamudPluginInterface PluginInterface { get; private set; } = null!; [PluginService] public static IChatGui ChatGui { get; private set; } = null!; [PluginService] diff --git a/HoardFarm/Service/RetainerService.cs b/HoardFarm/Service/RetainerService.cs index a28e2a5..ed2d19b 100644 --- a/HoardFarm/Service/RetainerService.cs +++ b/HoardFarm/Service/RetainerService.cs @@ -106,7 +106,7 @@ private unsafe void OnTimerUpdate(object? sender, ElapsedEventArgs e) if (ObjectTable.TryGetFirst(gameObject => gameObject.DataId == RetainerBellDataId, out var bell)) { - if (bell.Position.Distance(Player.GameObject->Position) > 3) + if (bell.Position.Distance(Player.Position) > 3) { Enqueue(new PathfindTask(RetainerBellLocation, true, 1f), "Move to bell"); EnqueueWait(2000); // SE server are just slow @@ -114,7 +114,7 @@ private unsafe void OnTimerUpdate(object? sender, ElapsedEventArgs e) } } - if (NotBusy() || TargetSystem.Instance()->Target == null || TargetSystem.Instance()->Target->DataID != RetainerBellDataId) + if (NotBusy() || TargetSystem.Instance()->Target == null || TargetSystem.Instance()->Target->BaseId != RetainerBellDataId) { Enqueue(new InteractObjectTask(RetainerBellDataId), "Interact Bell"); if (GetOpenBellBehavior() != OpenBellBehavior.Enable_AutoRetainer) diff --git a/HoardFarm/Tasks/PathfindTask.cs b/HoardFarm/Tasks/PathfindTask.cs index cea0d4f..f4fe029 100644 --- a/HoardFarm/Tasks/PathfindTask.cs +++ b/HoardFarm/Tasks/PathfindTask.cs @@ -13,7 +13,7 @@ public class PathfindTask(Vector3 targetPosition, bool sprint = false, float tol { public override unsafe bool? Run() { - if (targetPosition.Distance(Player.GameObject->Position) <= toleranceDistance) + if (targetPosition.Distance(Player.Position) <= toleranceDistance) { NavmeshIPC.PathStop(); return true; diff --git a/HoardFarm/Tasks/TaskGroups/LeaveDutyTask.cs b/HoardFarm/Tasks/TaskGroups/LeaveDutyTask.cs index b5f7f4b..53e0812 100644 --- a/HoardFarm/Tasks/TaskGroups/LeaveDutyTask.cs +++ b/HoardFarm/Tasks/TaskGroups/LeaveDutyTask.cs @@ -39,7 +39,7 @@ public ArrayList GetTaskList() return false; } - var eventObject = stackalloc EventObject[1]; + var eventObject = stackalloc AtkValue[1]; var atkValues = CreateEventParams(); if (atkValues != null) { diff --git a/HoardFarm/Utils/Utils.cs b/HoardFarm/Utils/Utils.cs index 727e456..d769267 100644 --- a/HoardFarm/Utils/Utils.cs +++ b/HoardFarm/Utils/Utils.cs @@ -48,7 +48,7 @@ public static unsafe bool NotBusy() var target = TargetSystem.Instance()->Target; if (occupied && Svc.Condition[ConditionFlag.OccupiedInQuestEvent] && target != null && - target->DataID == KyuseiDataId) occupied = false; + target->BaseId == KyuseiDataId) occupied = false; return Player.Available && Player.Object.CastActionId == 0 @@ -62,7 +62,7 @@ public static unsafe bool NotBusy() { if (node == null || ids.Length <= 0) return null; - if (node->NodeID == ids[0]) + if (node->NodeId == ids[0]) { if (ids.Length == 1) return node; @@ -119,7 +119,7 @@ public static unsafe bool NotBusy() public static unsafe bool KyuseiInteractable() { if (ObjectTable.TryGetFirst(e => e.DataId == KyuseiDataId, out var npc)) - return npc.Position.Distance(Player.GameObject->Position) < 7f; + return npc.Position.Distance(Player.Position) < 7f; return false; } @@ -134,7 +134,7 @@ public static unsafe bool CanUsePomander(Pomander pomander) Pomander.Safety => SafetyChain, _ => [] }; - return chain.Length != 0 && GetNodeByIDChain(addon->GetRootNode(), chain)->IsVisible; + return chain.Length != 0 && GetNodeByIDChain(addon->GetRootNode(), chain)->IsVisible(); } return false; @@ -143,7 +143,7 @@ public static unsafe bool CanUsePomander(Pomander pomander) public static unsafe bool CanUseMagicite() { if (TryGetAddonByName("DeepDungeonStatus", out var addon) && IsAddonReady(addon)) - return GetNodeByIDChain(addon->GetRootNode(), MagiciteChain)->IsVisible; + return GetNodeByIDChain(addon->GetRootNode(), MagiciteChain)->IsVisible(); return false; }