diff --git a/BossMod/ActionQueue/Casters/PCT.cs b/BossMod/ActionQueue/Casters/PCT.cs index f4249aa0e3..ba99080fda 100644 --- a/BossMod/ActionQueue/Casters/PCT.cs +++ b/BossMod/ActionQueue/Casters/PCT.cs @@ -167,7 +167,8 @@ public void Dispose() { } private void Customize(ActionDefinitions d) { d.RegisterChargeIncreaseTrait(AID.StrikingMuse, TraitID.EnhancedPictomancyII); - d.RegisterChargeIncreaseTrait(AID.LivingMuse, TraitID.EnhancedPictomancyIV); + foreach (var creature in new AID[] { AID.LivingMuse, AID.PomMuse, AID.WingedMuse, AID.ClawedMuse, AID.FangedMuse }) + d.RegisterChargeIncreaseTrait(creature, TraitID.EnhancedPictomancyIV); d.Spell(AID.Smudge)!.TransformAngle = (ws, _, _, _) => _config.AlignDashToCamera ? ws.Client.CameraAzimuth + 180.Degrees() diff --git a/BossMod/Autorotation/MiscAI/AutoPull.cs b/BossMod/Autorotation/MiscAI/AutoPull.cs index e93f88ad8b..32ce1ff7ae 100644 --- a/BossMod/Autorotation/MiscAI/AutoPull.cs +++ b/BossMod/Autorotation/MiscAI/AutoPull.cs @@ -38,7 +38,7 @@ public override void Execute(StrategyValues strategy, ref Actor? primaryTarget, if (strategy.Enabled(Track.Hunt) && Bossmods.ActiveModule?.Info?.Category == BossModuleInfo.Category.Hunt && Bossmods.ActiveModule?.PrimaryActor is Actor p && p.InCombat && p.HPRatio < 0.95f) { Hints.SetPriority(p, 0); - primaryTarget = p; + primaryTarget = Hints.ForcedTarget = p; return; } @@ -48,7 +48,7 @@ public override void Execute(StrategyValues strategy, ref Actor? primaryTarget, if (bestEnemy != null) { bestEnemy.Priority = 0; - primaryTarget = bestEnemy.Actor; + primaryTarget = Hints.ForcedTarget = bestEnemy.Actor; } } } diff --git a/BossMod/Framework/MovementOverride.cs b/BossMod/Framework/MovementOverride.cs index fed3bd57e9..c68941a498 100644 --- a/BossMod/Framework/MovementOverride.cs +++ b/BossMod/Framework/MovementOverride.cs @@ -99,7 +99,7 @@ public void Dispose() _rmiFlyHook.Dispose(); } - private bool NavmeshActive() + private bool FollowpathActive() { if (_navmeshPathIsRunning == null && _dalamud.TryGetData("vnav.PathIsRunning", out var data)) _navmeshPathIsRunning = data; @@ -113,7 +113,7 @@ private void RMIWalkDetour(void* self, float* sumLeft, float* sumForward, float* _rmiWalkHook.Original(self, sumLeft, sumForward, sumTurnLeft, haveBackwardOrStrafe, a6, bAdditiveUnk); // TODO: we really need to introduce some extra checks that PlayerMoveController::readInput does - sometimes it skips reading input, and returning something non-zero breaks stuff... - var movementAllowed = bAdditiveUnk == 0 && _rmiWalkIsInputEnabled1(self) && _rmiWalkIsInputEnabled2(self) && !NavmeshActive(); + var movementAllowed = bAdditiveUnk == 0 && _rmiWalkIsInputEnabled1(self) && _rmiWalkIsInputEnabled2(self) && !FollowpathActive(); var misdirectionMode = PlayerHasMisdirection(); if (!movementAllowed && misdirectionMode) { @@ -166,6 +166,11 @@ private void RMIFlyDetour(void* self, PlayerMoveControllerFlyInput* result) { _forcedControlState = null; _rmiFlyHook.Original(self, result); + + // do nothing while followpath is running + if (FollowpathActive()) + return; + // TODO: we really need to introduce some extra checks that PlayerMoveController::readInput does - sometimes it skips reading input, and returning something non-zero breaks stuff... if (result->Forward == 0 && result->Left == 0 && result->Up == 0 && DirectionToDestination(true) is var relDir && relDir != null) { diff --git a/BossMod/Framework/Plugin.cs b/BossMod/Framework/Plugin.cs index 5d1bc6312b..0d64cedfe6 100644 --- a/BossMod/Framework/Plugin.cs +++ b/BossMod/Framework/Plugin.cs @@ -57,7 +57,8 @@ public unsafe Plugin(IDalamudPluginInterface dalamud, ICommandManager commandMan InteropGenerator.Runtime.Resolver.GetInstance.Resolve(); dalamud.Create(); - Service.LogHandler = (string msg) => Service.Logger.Debug(msg); + Service.LogHandlerDebug = (string msg) => Service.Logger.Debug(msg); + Service.LogHandlerVerbose = (string msg) => Service.Logger.Verbose(msg); Service.LuminaGameData = dataManager.GameData; Service.WindowSystem = new("vbm"); //Service.Device = pluginInterface.UiBuilder.Device; diff --git a/BossMod/Framework/Service.cs b/BossMod/Framework/Service.cs index a0eb26917f..7373203b58 100644 --- a/BossMod/Framework/Service.cs +++ b/BossMod/Framework/Service.cs @@ -31,8 +31,10 @@ public sealed class Service #pragma warning restore CS8618 #pragma warning disable CA2211 - public static Action? LogHandler; - public static void Log(string msg) => LogHandler?.Invoke(msg); + public static Action? LogHandlerDebug; + public static Action? LogHandlerVerbose; + public static void Log(string msg) => LogHandlerDebug?.Invoke(msg); + public static void LogVerbose(string msg) => LogHandlerVerbose?.Invoke(msg); public static Lumina.GameData? LuminaGameData; public static Lumina.Excel.ExcelSheet? LuminaSheet() where T : struct, Lumina.Excel.IExcelRow => LuminaGameData?.GetExcelSheet(Lumina.Data.Language.English); diff --git a/BossMod/Framework/WorldStateGameSync.cs b/BossMod/Framework/WorldStateGameSync.cs index cffa7435b7..40587bb426 100644 --- a/BossMod/Framework/WorldStateGameSync.cs +++ b/BossMod/Framework/WorldStateGameSync.cs @@ -219,7 +219,7 @@ private unsafe void UpdateActors() if (obj != null && (obj->EntityId & 0xFF000000) == 0xFF000000) { - Service.Log($"[WorldState] Skipping bad object #{i} with id {obj->EntityId:X}"); + Service.LogVerbose($"[WorldState] Skipping bad object #{i} with id {obj->EntityId:X}"); obj = null; } diff --git a/BossMod/Pathfinding/ObstacleMaps/1193.824.1.bmp b/BossMod/Pathfinding/ObstacleMaps/1193.824.1.bmp index a5831ab34b..4c5195e017 100644 Binary files a/BossMod/Pathfinding/ObstacleMaps/1193.824.1.bmp and b/BossMod/Pathfinding/ObstacleMaps/1193.824.1.bmp differ diff --git a/BossMod/Pathfinding/ObstacleMaps/1193.824.2.bmp b/BossMod/Pathfinding/ObstacleMaps/1193.824.2.bmp index 50d9bd2098..d094ee15f5 100644 Binary files a/BossMod/Pathfinding/ObstacleMaps/1193.824.2.bmp and b/BossMod/Pathfinding/ObstacleMaps/1193.824.2.bmp differ diff --git a/BossMod/Pathfinding/ObstacleMaps/1193.824.3.bmp b/BossMod/Pathfinding/ObstacleMaps/1193.824.3.bmp index d094ee15f5..77e43bd127 100644 Binary files a/BossMod/Pathfinding/ObstacleMaps/1193.824.3.bmp and b/BossMod/Pathfinding/ObstacleMaps/1193.824.3.bmp differ diff --git a/BossMod/Pathfinding/ObstacleMaps/1193.824.4.bmp b/BossMod/Pathfinding/ObstacleMaps/1193.824.4.bmp deleted file mode 100644 index 77e43bd127..0000000000 Binary files a/BossMod/Pathfinding/ObstacleMaps/1193.824.4.bmp and /dev/null differ diff --git a/BossMod/Pathfinding/ObstacleMaps/1193.824.5.bmp b/BossMod/Pathfinding/ObstacleMaps/1193.824.5.bmp deleted file mode 100644 index 9193376a16..0000000000 Binary files a/BossMod/Pathfinding/ObstacleMaps/1193.824.5.bmp and /dev/null differ diff --git a/BossMod/Pathfinding/ObstacleMaps/1242.1008.1.bmp b/BossMod/Pathfinding/ObstacleMaps/1242.1008.1.bmp new file mode 100644 index 0000000000..ce18feb908 Binary files /dev/null and b/BossMod/Pathfinding/ObstacleMaps/1242.1008.1.bmp differ diff --git a/BossMod/Pathfinding/ObstacleMaps/maplist.json b/BossMod/Pathfinding/ObstacleMaps/maplist.json index 1eafba39e2..46310c9608 100644 --- a/BossMod/Pathfinding/ObstacleMaps/maplist.json +++ b/BossMod/Pathfinding/ObstacleMaps/maplist.json @@ -1545,31 +1545,18 @@ } ], "1193.824": [ - { - "MinBoundsX": 9, - "MinBoundsY": -25, - "MinBoundsZ": 157, - "MaxBoundsX": 222.5, - "MaxBoundsY": 2, - "MaxBoundsZ": 212.5, - "OriginX": 9, - "OriginZ": 157, - "ViewWidth": 60, - "ViewHeight": 60, - "Filename": "1193.824.1.bmp" - }, { "MinBoundsX": -155.5, - "MinBoundsY": 9.5, + "MinBoundsY": -25, "MinBoundsZ": 49, - "MaxBoundsX": -63, + "MaxBoundsX": 222.5, "MaxBoundsY": 51.5, - "MaxBoundsZ": 154, + "MaxBoundsZ": 212.5, "OriginX": -155.5, "OriginZ": 49, "ViewWidth": 60, "ViewHeight": 60, - "Filename": "1193.824.2.bmp" + "Filename": "1193.824.1.bmp" }, { "MinBoundsX": -167.5, @@ -1582,7 +1569,7 @@ "OriginZ": -22.5, "ViewWidth": 60, "ViewHeight": 60, - "Filename": "1193.824.3.bmp" + "Filename": "1193.824.2.bmp" }, { "MinBoundsX": -173, @@ -1595,20 +1582,7 @@ "OriginZ": -219.5, "ViewWidth": 60, "ViewHeight": 60, - "Filename": "1193.824.4.bmp" - }, - { - "MinBoundsX": -111, - "MinBoundsY": -8.5, - "MinBoundsZ": 158, - "MaxBoundsX": 4, - "MaxBoundsY": 21.5, - "MaxBoundsZ": 211, - "OriginX": -111, - "OriginZ": 158, - "ViewWidth": 60, - "ViewHeight": 60, - "Filename": "1193.824.5.bmp" + "Filename": "1193.824.3.bmp" } ], "1194.829": [ diff --git a/BossMod/QuestBattle/ARealmReborn/MSQ/LurkersInTheGrotto.cs b/BossMod/QuestBattle/ARealmReborn/MSQ/LurkersInTheGrotto.cs new file mode 100644 index 0000000000..957aa70363 --- /dev/null +++ b/BossMod/QuestBattle/ARealmReborn/MSQ/LurkersInTheGrotto.cs @@ -0,0 +1,11 @@ +namespace BossMod.QuestBattle.ARealmReborn.MSQ; + +[ZoneModuleInfo(BossModuleInfo.Maturity.Contributed, 332)] +public class LurkersInTheGrotto(WorldState ws) : QuestBattle(ws) +{ + public override void CalculateAIHints(int playerSlot, Actor player, AIHints hints) + { + foreach (var p in hints.PotentialTargets) + p.Priority = p.Actor.OID == 0x386 ? 0 : 1; + } +} diff --git a/UIDev/UITest.cs b/UIDev/UITest.cs index 60b934b3ec..ecf8ee1337 100644 --- a/UIDev/UITest.cs +++ b/UIDev/UITest.cs @@ -47,7 +47,8 @@ public static void Main(string[] args) InitializeDalamudStyle(); - Service.LogHandler = msg => Debug.WriteLine(msg); + Service.LogHandlerDebug = msg => Debug.WriteLine(msg); + Service.LogHandlerVerbose = msg => Debug.WriteLine(msg); Service.LuminaGameData = new(FindGameDataPath()); //Service.LuminaGameData.Options.PanicOnSheetChecksumMismatch = false; // TODO: remove - temporary workaround until lumina is updated Service.LuminaGameData.Options.RsvResolver = Service.LuminaRSV.TryGetValue;