From 06383bdd1d73334545a9bf07de33210284da88c1 Mon Sep 17 00:00:00 2001 From: Leontopodium Nival Date: Tue, 1 Oct 2024 20:58:59 -0400 Subject: [PATCH 01/13] POTD - Floor 160 Creation Created the floor 160 module, stilll want to clean this up a bit but for now it's a 1-1 of the floor 60 boss --- .../PalaceOfTheDead/D160Todesritter.cs | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs new file mode 100644 index 0000000000..040758cd5e --- /dev/null +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs @@ -0,0 +1,60 @@ +namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D160Todesritter; + +public enum OID : uint +{ + Boss = 0x181D, // R3.920, x1 + VoidsentDiscarnate = 0x18EF, // R1.000, x0 (spawn during fight) + Actor1e86e0 = 0x1E86E0, // R2.000, x1, EventObj type + Voidzone = 0x1E858E, // R0.500, x0 (spawn during fight), EventObj type +} + +public enum AID : uint +{ + AutoAttack = 7179, // Boss->players, no cast, range 8+R(11.92) 90?-degree cone + Geirrothr = 7154, // Boss->self, no cast, range 6+R(9.92) 90?-degree cone + HallOfSorrow = 7155, // Boss->location, no cast, range 9 circle + Infatuation = 7090, // VoidsentDiscarnate->self, 6.5s cast, range 6+R(7) circle + Valfodr = 7156, // Boss->player, 4.0s cast, width 6 rect charge + kb +} + +class CleaveAuto(BossModule module) : Components.Cleave(module, ActionID.MakeSpell(AID.AutoAttack), new AOEShapeCone(11.92f, 45.Degrees()), activeWhileCasting: false); +class HallOfSorrow(BossModule module) : Components.PersistentVoidzone(module, 9, m => m.Enemies(OID.Voidzone).Where(z => z.EventState != 7)); +class Infatuation(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Infatuation), new AOEShapeCircle(7)); +class Valfodr(BossModule module) : Components.BaitAwayChargeCast(module, ActionID.MakeSpell(AID.Valfodr), 3); +class ValfodrKB(BossModule module) : Components.Knockback(module) // note actual knockback is delayed by upto 1.2s in replay +{ + private DateTime _activation; + + public override IEnumerable Sources(int slot, Actor actor) + { + if (Module.FindComponent()?.CurrentBaits.Count > 0) + yield return new(Module.PrimaryActor.Position, 25, _activation, Module.FindComponent()!.CurrentBaits[0].Shape, Angle.FromDirection(Module.FindComponent()!.CurrentBaits[0].Target.Position - Module.PrimaryActor.Position), Kind: Kind.DirForward); + } + + public override void OnCastStarted(Actor caster, ActorCastInfo spell) + { + if ((AID)spell.Action.ID == AID.Valfodr) + { + _activation = Module.CastFinishAt(spell); + StopAtWall = true; + } + } + + public override bool DestinationUnsafe(int slot, Actor actor, WPos pos) => (Module.FindComponent()?.ActiveAOEs(slot, actor).Any(z => z.Shape.Check(pos, z.Origin, z.Rotation)) ?? false) || (Module.FindComponent()?.ActiveAOEs(slot, actor).Any(z => z.Shape.Check(pos, z.Origin, z.Rotation)) ?? false); +} + +class D160TodesritterStates : StateMachineBuilder +{ + public D160TodesritterStates(BossModule module) : base(module) + { + TrivialPhase() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter(); + } +} + +[ModuleInfo(BossModuleInfo.Maturity.WIP, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 214, NameID = 5438)] +public class D160Todesritter(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -300), new ArenaBoundsCircle(25)); From e23910d2d898122b70538dbe7617b88a6425cb67 Mon Sep 17 00:00:00 2001 From: Leontopodium Nival Date: Sat, 19 Oct 2024 19:47:24 -0400 Subject: [PATCH 02/13] Maturity update had it marked as WIP, should of been labeled as contributed. Sorry --- BossMod/Modules/Dawntrail/TreasureHunt/BullApollyon.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BossMod/Modules/Dawntrail/TreasureHunt/BullApollyon.cs b/BossMod/Modules/Dawntrail/TreasureHunt/BullApollyon.cs index f4e165401c..5da7222023 100644 --- a/BossMod/Modules/Dawntrail/TreasureHunt/BullApollyon.cs +++ b/BossMod/Modules/Dawntrail/TreasureHunt/BullApollyon.cs @@ -4,7 +4,7 @@ public enum OID : uint { Boss = 0x4305, // R7.000, x1 Helper = 0x233C, // R0.500, x16, Helper type - // The following 5 need to be killed in order from 1->5 to maximize the rewards + // The following 5 need to be killed in order from 1->5 to maximize the rewards TuraliOnion = 0x4300, // R0.840, // Icon #1 TuraliEggplant = 0x4301, // R0.840, x0 // Icon #2 TuraliGarlic = 0x4302, // R0.840, x0 // Icon #3 @@ -101,5 +101,5 @@ public BullApollyonStates(BossModule module) : base(module) } } -[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 993, NameID = 13247)] +[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 993, NameID = 13247)] public class BullApollyon(WorldState ws, Actor primary) : BossModule(ws, primary, new(0, -372), new ArenaBoundsCircle(20)); From 09cbc7958308624c1b6ea565fe6b7fc3f7f06577 Mon Sep 17 00:00:00 2001 From: Simon Latusek Date: Sun, 20 Oct 2024 20:43:03 +0200 Subject: [PATCH 03/13] AutoDuty Range Rotation Module --- BossMod/Autorotation/MiscAI/AD_Range.cs | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 BossMod/Autorotation/MiscAI/AD_Range.cs diff --git a/BossMod/Autorotation/MiscAI/AD_Range.cs b/BossMod/Autorotation/MiscAI/AD_Range.cs new file mode 100644 index 0000000000..b2427b9f67 --- /dev/null +++ b/BossMod/Autorotation/MiscAI/AD_Range.cs @@ -0,0 +1,26 @@ +namespace BossMod.Autorotation.MiscAI; + +public sealed class AD_Range(RotationModuleManager manager, Actor player) : RotationModule(manager, player) +{ + public static RotationModuleDefinition Definition() => new("Misc AI: AD Range", "Module for use by AutoDuty preset.", "erdelf", RotationModuleQuality.Basic, new(~0ul), 1000); + + public override void Execute(StrategyValues strategy, Actor? primaryTarget, float estimatedAnimLockDelay, bool isMoving) + { + if (primaryTarget != null) + { + var radius = 10f; + + var adConfig = Service.PluginInterface.GetIpcSubscriber("AutoDuty.GetConfig"); + + if (adConfig is { HasFunction: true }) + { + var func = adConfig.InvokeFunc("MaxDistanceToTargetFloat"); + if (float.TryParse(func, out var newRadius) && newRadius > 0) + { + radius = newRadius; + } + } + Hints.GoalZones.Add(Hints.GoalSingleTarget(primaryTarget.Position, radius+primaryTarget.HitboxRadius, 0.5f)); + } + } +} From 02807f5445d59c5a0a67594ffaf883122c4f861e Mon Sep 17 00:00:00 2001 From: Simon Latusek Date: Sun, 20 Oct 2024 20:56:30 +0200 Subject: [PATCH 04/13] style fix --- BossMod/Autorotation/MiscAI/{AD_Range.cs => ADRange.cs} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename BossMod/Autorotation/MiscAI/{AD_Range.cs => ADRange.cs} (84%) diff --git a/BossMod/Autorotation/MiscAI/AD_Range.cs b/BossMod/Autorotation/MiscAI/ADRange.cs similarity index 84% rename from BossMod/Autorotation/MiscAI/AD_Range.cs rename to BossMod/Autorotation/MiscAI/ADRange.cs index b2427b9f67..aec30c95ca 100644 --- a/BossMod/Autorotation/MiscAI/AD_Range.cs +++ b/BossMod/Autorotation/MiscAI/ADRange.cs @@ -1,6 +1,6 @@ namespace BossMod.Autorotation.MiscAI; -public sealed class AD_Range(RotationModuleManager manager, Actor player) : RotationModule(manager, player) +public sealed class ADRange(RotationModuleManager manager, Actor player) : RotationModule(manager, player) { public static RotationModuleDefinition Definition() => new("Misc AI: AD Range", "Module for use by AutoDuty preset.", "erdelf", RotationModuleQuality.Basic, new(~0ul), 1000); @@ -20,7 +20,7 @@ public override void Execute(StrategyValues strategy, Actor? primaryTarget, floa radius = newRadius; } } - Hints.GoalZones.Add(Hints.GoalSingleTarget(primaryTarget.Position, radius+primaryTarget.HitboxRadius, 0.5f)); + Hints.GoalZones.Add(Hints.GoalSingleTarget(primaryTarget.Position, radius + primaryTarget.HitboxRadius, 0.5f)); } } } From 996e92eaa8af108931166fe58345ce1ef76ee714 Mon Sep 17 00:00:00 2001 From: xanunderscore <149614526+xanunderscore@users.noreply.github.com> Date: Mon, 21 Oct 2024 15:05:25 -0400 Subject: [PATCH 05/13] move to debug window --- BossMod/Debug/MainDebugWindow.cs | 7 ++++++- BossMod/Framework/Plugin.cs | 2 +- BossMod/QuestBattle/QuestBattle.cs | 5 +---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/BossMod/Debug/MainDebugWindow.cs b/BossMod/Debug/MainDebugWindow.cs index 93ca34eb8f..452acfb57f 100644 --- a/BossMod/Debug/MainDebugWindow.cs +++ b/BossMod/Debug/MainDebugWindow.cs @@ -7,7 +7,7 @@ namespace BossMod; -class MainDebugWindow(WorldState ws, RotationModuleManager autorot, ActionManagerEx amex, AIHintsBuilder hintBuilder, IDalamudPluginInterface dalamud) : UIWindow("Boss mod debug UI", false, new(300, 200)) +class MainDebugWindow(WorldState ws, RotationModuleManager autorot, ZoneModuleManager zmm, ActionManagerEx amex, AIHintsBuilder hintBuilder, IDalamudPluginInterface dalamud) : UIWindow("Boss mod debug UI", false, new(300, 200)) { private readonly DebugObstacles _debugObstacles = new(hintBuilder.Obstacles, dalamud); private readonly DebugObjects _debugObjects = new(); @@ -87,6 +87,11 @@ public override unsafe void Draw() { _debugAutorot.Draw(); } + if (ImGui.CollapsingHeader("Solo duty module")) + { + if (zmm.ActiveModule is QuestBattle.QuestBattle qb) + qb.DrawDebugInfo(); + } if (ImGui.CollapsingHeader("Graphics scene")) { _debugGraphics.DrawSceneTree(); diff --git a/BossMod/Framework/Plugin.cs b/BossMod/Framework/Plugin.cs index 61fea721f3..0f6a80977f 100644 --- a/BossMod/Framework/Plugin.cs +++ b/BossMod/Framework/Plugin.cs @@ -93,7 +93,7 @@ public unsafe Plugin(IDalamudPluginInterface dalamud, ICommandManager commandMan _wndReplay = new(_ws, _bossmod, _rotationDB, replayDir); _wndRotation = new(_rotation, _amex, () => OpenConfigUI("Autorotation Presets")); _wndAI = new(_ai); - _wndDebug = new(_ws, _rotation, _amex, _hintsBuilder, dalamud); + _wndDebug = new(_ws, _rotation, _zonemod, _amex, _hintsBuilder, dalamud); dalamud.UiBuilder.DisableAutomaticUiHide = true; dalamud.UiBuilder.Draw += DrawUI; diff --git a/BossMod/QuestBattle/QuestBattle.cs b/BossMod/QuestBattle/QuestBattle.cs index 7e1d62c274..59a47b6a07 100644 --- a/BossMod/QuestBattle/QuestBattle.cs +++ b/BossMod/QuestBattle/QuestBattle.cs @@ -391,11 +391,8 @@ public override void CalculateAIHints(int playerSlot, Actor player, AIHints hint } } - public override void DrawExtra() + public void DrawDebugInfo() { - if (!_config.ShowXanDebugger) - return; - if (UIMisc.Button("Leave duty", !ImGui.GetIO().KeyShift, "Hold shift to leave")) _abandonDuty?.Invoke(false); ImGui.SameLine(); From 74e13f6c9adaf4ea3ff45f72d393169b2538917f Mon Sep 17 00:00:00 2001 From: Simon Latusek Date: Wed, 23 Oct 2024 02:49:12 +0200 Subject: [PATCH 06/13] changed StayCloseToTarget module to use transient strategies --- BossMod/Autorotation/MiscAI/ADRange.cs | 26 ---------------- .../Autorotation/MiscAI/StayCloseToTarget.cs | 30 +++++++++++++++++-- FFXIVClientStructs | 2 +- 3 files changed, 28 insertions(+), 30 deletions(-) delete mode 100644 BossMod/Autorotation/MiscAI/ADRange.cs diff --git a/BossMod/Autorotation/MiscAI/ADRange.cs b/BossMod/Autorotation/MiscAI/ADRange.cs deleted file mode 100644 index aec30c95ca..0000000000 --- a/BossMod/Autorotation/MiscAI/ADRange.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace BossMod.Autorotation.MiscAI; - -public sealed class ADRange(RotationModuleManager manager, Actor player) : RotationModule(manager, player) -{ - public static RotationModuleDefinition Definition() => new("Misc AI: AD Range", "Module for use by AutoDuty preset.", "erdelf", RotationModuleQuality.Basic, new(~0ul), 1000); - - public override void Execute(StrategyValues strategy, Actor? primaryTarget, float estimatedAnimLockDelay, bool isMoving) - { - if (primaryTarget != null) - { - var radius = 10f; - - var adConfig = Service.PluginInterface.GetIpcSubscriber("AutoDuty.GetConfig"); - - if (adConfig is { HasFunction: true }) - { - var func = adConfig.InvokeFunc("MaxDistanceToTargetFloat"); - if (float.TryParse(func, out var newRadius) && newRadius > 0) - { - radius = newRadius; - } - } - Hints.GoalZones.Add(Hints.GoalSingleTarget(primaryTarget.Position, radius + primaryTarget.HitboxRadius, 0.5f)); - } - } -} diff --git a/BossMod/Autorotation/MiscAI/StayCloseToTarget.cs b/BossMod/Autorotation/MiscAI/StayCloseToTarget.cs index 06a705e983..7e46a448fc 100644 --- a/BossMod/Autorotation/MiscAI/StayCloseToTarget.cs +++ b/BossMod/Autorotation/MiscAI/StayCloseToTarget.cs @@ -1,12 +1,36 @@ -namespace BossMod.Autorotation.MiscAI; +using System.Globalization; + +namespace BossMod.Autorotation.MiscAI; public sealed class StayCloseToTarget(RotationModuleManager manager, Actor player) : RotationModule(manager, player) { - public static RotationModuleDefinition Definition() => new("Misc AI: Stay within 10m of target", "Module for use by AutoDuty preset.", "AI Behaviours", "veyn", RotationModuleQuality.Basic, new(~0ul), 1000); + + public enum Tracks + { + Range + } + + public enum RangeDefinition + { + } + + public static RotationModuleDefinition Definition() + { + RotationModuleDefinition def = new("Misc AI: Stay within 10m of target", "Module for use by AutoDuty preset.", "Misc", "veyn", RotationModuleQuality.Basic, new(~0ul), 1000); + + var configRef = def.Define(Tracks.Range).As("range"); + + for (float f = 1; f <= 30f; f = MathF.Round(f + 0.1f, 1)) + { + configRef.AddOption((RangeDefinition)(f * 10f - 10f), f.ToString(CultureInfo.InvariantCulture)); + } + + return def; + } public override void Execute(StrategyValues strategy, Actor? primaryTarget, float estimatedAnimLockDelay, bool isMoving) { if (primaryTarget != null) - Hints.GoalZones.Add(Hints.GoalSingleTarget(primaryTarget.Position, 10, 0.5f)); + Hints.GoalZones.Add(Hints.GoalSingleTarget(primaryTarget.Position, (strategy.Option(Tracks.Range).Value.Option + 10f) / 10f + primaryTarget.HitboxRadius, 0.5f)); } } diff --git a/FFXIVClientStructs b/FFXIVClientStructs index 093674e553..3841b96f6a 160000 --- a/FFXIVClientStructs +++ b/FFXIVClientStructs @@ -1 +1 @@ -Subproject commit 093674e553064cac397b854b13bc7109c5e90610 +Subproject commit 3841b96f6aad172aca7e4b8e75a5d89c6d054e50 From afb8b53a50862321392f7cc87aed58fdf8bd1f5b Mon Sep 17 00:00:00 2001 From: Simon Latusek Date: Wed, 23 Oct 2024 02:54:07 +0200 Subject: [PATCH 07/13] StayCloseToTarget module: adjusted specified range in the description --- BossMod/Autorotation/MiscAI/StayCloseToTarget.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BossMod/Autorotation/MiscAI/StayCloseToTarget.cs b/BossMod/Autorotation/MiscAI/StayCloseToTarget.cs index 7e46a448fc..8c22f4aee4 100644 --- a/BossMod/Autorotation/MiscAI/StayCloseToTarget.cs +++ b/BossMod/Autorotation/MiscAI/StayCloseToTarget.cs @@ -16,7 +16,7 @@ public enum RangeDefinition public static RotationModuleDefinition Definition() { - RotationModuleDefinition def = new("Misc AI: Stay within 10m of target", "Module for use by AutoDuty preset.", "Misc", "veyn", RotationModuleQuality.Basic, new(~0ul), 1000); + RotationModuleDefinition def = new("Misc AI: Stay within range of target", "Module for use by AutoDuty preset.", "Misc", "veyn", RotationModuleQuality.Basic, new(~0ul), 1000); var configRef = def.Define(Tracks.Range).As("range"); From 6c770cb0b59064294ffc6db2e66463aad24a1f4a Mon Sep 17 00:00:00 2001 From: Andrew Gilewsky Date: Wed, 23 Oct 2024 22:17:18 +0100 Subject: [PATCH 08/13] Fix range for positionals. --- BossMod/BossModule/AIHints.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BossMod/BossModule/AIHints.cs b/BossMod/BossModule/AIHints.cs index 2e40c4c6da..8e3cc91980 100644 --- a/BossMod/BossModule/AIHints.cs +++ b/BossMod/BossModule/AIHints.cs @@ -253,7 +253,7 @@ public Func GoalSingleTarget(WPos target, Angle rotation, Positiona return inPositional ? 2 : 1; }; } - public Func GoalSingleTarget(Actor target, Positional positional, float range = 3) => GoalSingleTarget(target.Position, target.Rotation, positional, range + target.HitboxRadius); + public Func GoalSingleTarget(Actor target, Positional positional, float range = 3) => GoalSingleTarget(target.Position, target.Rotation, positional, range + target.HitboxRadius + 0.5f); // simple goal zone that returns number of targets in aoes; note that performance is a concern for these functions, and perfection isn't required, so eg they ignore forbidden targets, etc public Func GoalAOECircle(float radius) From 2b1a793ce4e014593b2c541dbc440ad0c33be30f Mon Sep 17 00:00:00 2001 From: Leontopodium Nival Date: Wed, 23 Oct 2024 20:14:32 -0400 Subject: [PATCH 09/13] POTD Floors 80, 170, 180 Update -> Created floors 170/180 -> Added a cast counter specifically for floors 80/180, that way the place where behemoth cast "Trounce" is tracked at all times. (POTD has a static rotation of actions from the bosses so, makes it easy to make a cast counter for there. Might go through and add some for other floors if I eventually find it useful/a good thing for the module to have but, for now those 2 floors are the only ones where I can imagine it actually being "required/a good idea (maybe floor 90/190 as well but, that's debatable..) --- .../PalaceOfTheDead/D170Yulunggu.cs | 59 +++++++++ .../PalaceOfTheDead/D180Dendainsonne.cs | 114 ++++++++++++++++++ .../DeepDungeon/PalaceOfTheDead/D80Gudanna.cs | 60 ++++++++- 3 files changed, 229 insertions(+), 4 deletions(-) create mode 100644 BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs create mode 100644 BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs new file mode 100644 index 0000000000..74d84be8af --- /dev/null +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs @@ -0,0 +1,59 @@ +namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D170Yulunggu; + +public enum OID : uint +{ + Boss = 0x181E, // R5.750, x1 + Voidzone = 0x1E9998, // R0.500, x0 (spawn during fight), EventObj type + Actor1E86E0 = 0x1E86E0, // R2.000, x1, EventObj type +} + +public enum AID : uint +{ + AutoAttack = 6497, // Boss->player, no cast, single-target + Douse = 7158, // Boss->self, 2.0s cast, range 8 circle + Drench = 7160, // Boss->self, no cast, range 10+R ?-degree cone + Electrogenesis = 7161, // Boss->location, 3.0s cast, range 8 circle + FangsEnd = 7159, // Boss->player, no cast, single-target +} + +class Douse(BossModule module) : Components.PersistentVoidzoneAtCastTarget(module, 8, ActionID.MakeSpell(AID.Douse), m => m.Enemies(OID.Voidzone).Where(z => z.EventState != 7), 0.8f); + +class DouseHaste(BossModule module) : BossComponent(module) +{ + private bool _bossInVoidzone; + + public override void Update() + { + if (Module.FindComponent()?.ActiveAOEs(0, Module.PrimaryActor).Any(z => z.Shape.Check(Module.PrimaryActor.Position, z.Origin, z.Rotation)) ?? false) + _bossInVoidzone = true; + else + _bossInVoidzone = false; + } + + public override void AddHints(int slot, Actor actor, TextHints hints) + { + if (_bossInVoidzone && Module.PrimaryActor.TargetID == actor.InstanceID) + hints.Add("Pull the boss out of the water puddle!"); + if (_bossInVoidzone && Module.PrimaryActor.TargetID != actor.InstanceID && actor.Role == Role.Tank) + hints.Add("Consider provoking and pulling the boss out of the water puddle."); + } +} + +class Drench(BossModule module) : Components.Cleave(module, ActionID.MakeSpell(AID.Drench), new AOEShapeCone(15.75f, 45.Degrees()), activeWhileCasting: false); + +class Electrogenesis(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.Electrogenesis), 8, "Get out of the AOE"); + +class D170YulungguStates : StateMachineBuilder +{ + public D170YulungguStates(BossModule module) : base(module) + { + TrivialPhase() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter(); + } +} + +[ModuleInfo(BossModuleInfo.Maturity.WIP, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 215, NameID = 5449)] +public class D170Yulunggu(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -300), new ArenaBoundsCircle(25)); diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs new file mode 100644 index 0000000000..9d83f70795 --- /dev/null +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs @@ -0,0 +1,114 @@ +namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D180Dendainsonne; + +public enum OID : uint +{ + Boss = 0x181F, // R11.600, x1 + TornadoVoidZones = 0x18F0, // R1.000, x0 (spawn during fight) + Actor1E86E0 = 0x1E86E0, // R2.000, x1, EventObj type +} + +public enum AID : uint +{ + AutoAttack = 6497, // Boss->player, no cast, single-target + CharybdisCast = 7163, // Boss->location, 3.0s cast, range 6 circle + CharybdisTornado = 7164, // TornadoVoidZones->self, no cast, range 6 circle + EclipticMeteor = 7166, // Boss->self, 6.0s cast, range 50 circle + Maelstrom = 7167, // TornadoVoidZones->self, 1.3s cast, range 10 circle + Thunderbolt = 7162, // Boss->self, 2.5s cast, range 5+R 120-degree cone + Trounce = 7165, // Boss->self, 2.5s cast, range 40+R 60-degree cone +} + +class Charybdis(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.CharybdisCast), 6); +class Maelstrom(BossModule module) : Components.PersistentVoidzone(module, 10, m => m.Enemies(OID.TornadoVoidZones)); +class Trounce(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Trounce), new AOEShapeCone(51.6f, 30.Degrees())); +class EclipticMeteor(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.EclipticMeteor), "Kill him before he kills you! 80% max HP damage incoming!"); +class Thunderbolt(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Thunderbolt), new AOEShapeCone(16.6f, 60.Degrees())); + +class EncounterHints(BossModule module) : BossComponent(module) +{ + private int NumCast { get; set; } + + public override void OnEventCast(Actor caster, ActorCastEvent spell) + { + if ((AID)spell.Action.ID is AID.CharybdisCast or AID.Trounce or AID.Thunderbolt) + ++NumCast; + + if ((AID)spell.Action.ID is AID.EclipticMeteor) + NumCast = 11; + + if (NumCast == 10) + { + // reset the rotation back to the beginning. This loops continuously until you hit the hp threshold (15.0% here) + NumCast = 0; + } + } + + public override void AddGlobalHints(GlobalHints hints) + { + switch (NumCast) + { + case 0: + hints.Add("Thunderbolt -> Charybdis x2 -> Thunderbolt -> Trounce from South Wall."); + break; + case 1: + hints.Add("Charybdis x2 -> Thunderbolt -> Trounce from South Wall."); + break; + case 2: + hints.Add("Charybdis x1 -> Thunderbolt -> Trounce from South Wall!"); + break; + case 3: + hints.Add("Thunderbolt -> Trounce from South Wall!"); + break; + case 4: + hints.Add("Boss is running to the South wall to cast Trounce!"); + break; + case 5: + hints.Add("Charybdis x2 -> Thunderbolt -> Charybdis -> Trounce from North Wall."); + break; + case 6: + hints.Add("Charybdis x1 -> Thunderbolt -> Charybdis -> Trounce from North Wall."); + break; + case 7: + hints.Add("Thunderbolt -> Charybdis -> Trounce from North Wall!"); + break; + case 8: + hints.Add("Charybdis -> Trounce from North Wall!"); + break; + case 9: + hints.Add("Boss is running to the North wall to cast Trounce!"); + break; + } + } +} + +class Hints(BossModule module) : BossComponent(module) +{ + public override void AddGlobalHints(GlobalHints hints) + { + hints.Add($"{Module.PrimaryActor.Name} will cast Trounce (Cone AOE) from the South and North wall. \nMake sure to stay near him to dodge the AOE. \n{Module.PrimaryActor.Name} will also cast Ecliptic Meteor at 15% HP, plan accordingly!"); + } +} + +class D180DendainsonneStates : StateMachineBuilder +{ + public D180DendainsonneStates(BossModule module) : base(module) + { + TrivialPhase() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .DeactivateOnEnter(); + } +} + +[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 216, NameID = 5461)] +public class D180Dendainsonne : BossModule +{ + public D180Dendainsonne(WorldState ws, Actor primary) : base(ws, primary, new(-300, -300), new ArenaBoundsCircle(25)) + { + ActivateComponent(); + } +} diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs index ec7a9f4cbe..2b4f8d471c 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs @@ -1,3 +1,4 @@ +using BossMod.Shadowbringers.TreasureHunt.ShiftingOubliettesOfLyheGhiah.SecretPegasus; namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D80Gudanna; public enum OID : uint @@ -24,9 +25,59 @@ class Maelstrom(BossModule module) : Components.PersistentVoidzone(module, 10, m class EclipticMeteor(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.EclipticMeteor), "Kill him before he kills you! 80% max HP damage incoming!"); class Thunderbolt(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Thunderbolt), new AOEShapeCone(16.6f, 60.Degrees())); -// things to do: -// add a hint counter to tell the player where the boss is going to cast Trounce next -// It's always East wall -> West wall -> East... ect +class EncounterHints(BossModule module) : BossComponent(module) +{ + private int NumCast { get; set; } + + public override void OnEventCast(Actor caster, ActorCastEvent spell) + { + if ((AID)spell.Action.ID is AID.Charybdis or AID.Trounce or AID.Thunderbolt) + ++NumCast; + + if ((AID)spell.Action.ID is AID.EclipticMeteor) + NumCast = 9; + + if (NumCast == 8) + { + // reset the rotation back to the beginning. This loops continuously until you hit the hp threshold (10.0% here) + NumCast = 0; + } + } + + public override void AddGlobalHints(GlobalHints hints) + { + switch (NumCast) + { + case 0: + hints.Add("Thunderbolt -> Charybdis -> Thunderbolt -> Trounce from East Wall"); + break; + case 1: + hints.Add("Charybdis -> Thunderbolt -> Trounce from East Wall"); + break; + case 2: + hints.Add("Thunderbolt -> Trounce from East Wall"); + break; + case 3: + hints.Add("Trounce from East Wall"); + break; + case 4: + hints.Add("Charybdis -> Thunderbolt -> Charybdis -> Trounce from West Wall."); + break; + case 5: + hints.Add("Thunderbolt -> Charybdis -> Trounce from West Wall."); + break; + case 6: + hints.Add("Charybdis -> Trounce from West Wall!"); + break; + case 7: + hints.Add("Trounce from West Wall!"); + break; + default: + break; + } + } +} + class Hints(BossModule module) : BossComponent(module) { public override void AddGlobalHints(GlobalHints hints) @@ -45,7 +96,8 @@ public D80GudannaStates(BossModule module) : base(module) .ActivateOnEnter() .ActivateOnEnter() .ActivateOnEnter() - .DeactivateOnEnter(); + .DeactivateOnEnter() + .ActivateOnEnter(); } } From 1d04c5b9ee2f39702c63a7a8a086275984bcd4cd Mon Sep 17 00:00:00 2001 From: Leontopodium Nival Date: Wed, 23 Oct 2024 20:16:53 -0400 Subject: [PATCH 10/13] Maturity Update ofc I forgot this -.- --- .../Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs index 040758cd5e..24c54385a6 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs @@ -56,5 +56,5 @@ public D160TodesritterStates(BossModule module) : base(module) } } -[ModuleInfo(BossModuleInfo.Maturity.WIP, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 214, NameID = 5438)] +[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 214, NameID = 5438)] public class D160Todesritter(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -300), new ArenaBoundsCircle(25)); diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs index 74d84be8af..39a7b931a8 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs @@ -55,5 +55,5 @@ public D170YulungguStates(BossModule module) : base(module) } } -[ModuleInfo(BossModuleInfo.Maturity.WIP, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 215, NameID = 5449)] +[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 215, NameID = 5449)] public class D170Yulunggu(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -300), new ArenaBoundsCircle(25)); From 1d0ad54e97e98fec12d68eeec02fa8d6f116f615 Mon Sep 17 00:00:00 2001 From: Leontopodium Nival Date: Wed, 23 Oct 2024 20:18:31 -0400 Subject: [PATCH 11/13] Boss Action Rotation HAVE NO IDEA why it pulled this but... glad I double checked github after I pushed --- .../Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs index 2b4f8d471c..a18ce3ef3f 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs @@ -1,4 +1,3 @@ -using BossMod.Shadowbringers.TreasureHunt.ShiftingOubliettesOfLyheGhiah.SecretPegasus; namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D80Gudanna; public enum OID : uint From 02bb7b7716c963fc83691f961a0c4f01eb7c9a8b Mon Sep 17 00:00:00 2001 From: Leontopodium Nival Date: Wed, 23 Oct 2024 21:36:33 -0400 Subject: [PATCH 12/13] Floor 190 Module Created Created the floor 190 boss. Still some things I want to add to it (hints for where the stun bomb will show up) but overall a huge improvement to the floor 90 version. Will go back and add to it at a later time --- .../PalaceOfTheDead/D190TheGodfather.cs | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs new file mode 100644 index 0000000000..47d871ca0b --- /dev/null +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs @@ -0,0 +1,116 @@ +namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D190TheGodfather; + +public enum OID : uint +{ + Boss = 0x1820, // R3.750, x1 + GiddyBomb = 0x18F3, // R0.600, x0 (spawn during fight), small bombs that are untargetable, multiple spawn up and explode at once + LavaBomb = 0x18F2, // R1.200, x0 (spawn during fight), (also known as greybomb) cast a pbaoe that stuns needs to be on top of the boss's hitbox to stun + RemedyBomb = 0x18F1, // R1.200, x0 (spawn during fight), cast a roomwide aoe that will hit for 80% of max hp + inflicts a dot + Actor1E86E0 = 0x1E86E0, // R2.000, x1, EventObj type +} + +public enum AID : uint +{ + AutoAttack = 6499, // Boss->player, no cast, single-target + Flashthoom = 7170, // LavaBomb->self, 5.0s cast, range 6+R(7.2f) circle, needs to be on boss's hitbox and finish the cast to stun the boss + HypothermalCombustionMinionCast = 7172, // GiddyBomb->self, 1.5s cast, range 6+R(6.6f) circle, pbaoe's. Should be considered voidzones while they're alive + HypothermalCombustionRemedyBomb = 7171, // RemedyBomb->self, 15.0s cast, range 50+R(51.2f) circle, roomwide cast, will take 80% of your hp and give a dot (15 potency for 5 seconds) if not killed + MassiveBurst = 7103, // Boss->self, 25.0s cast, range 50 circle, roomwide cast, needs to be stunned by Flashthoom (Lavabomb/GreyBomb) cast + Sap = 7169, // Boss->location, 3.5s cast, range 8 circle, location targeted aoe's + ScaldingScolding = 7168, // Boss->self, no cast, range 8+R(11.75f) ?-degree cone, think might be a 90 degree's, needs checked +} + +//TODO: Make the boss's hitbox show up potentially/maybe add 2 circle indicators to show how close the stun bomb needs to be, add indicators to where the stun bomb will spawn next, to allow pre-positioning +//spawn locations for stun bomb are as follows: 1:(-288.626, -300.256) 2:(-297.465, -297.525) 3:(-288.837, -305.537) 4:(-309.132, -303.739) 5:(-298.355, -293.630) 6:(-301.954, -314.289) 7:(-299.119, -297.563) +class BossAdds(BossModule module) : Components.AddsMulti(module, [(uint)OID.LavaBomb, (uint)OID.RemedyBomb]); +class Flashthoom(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Flashthoom), new AOEShapeCircle(7.2f)); +class Sap(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.Sap), 8); +class ScaldingScoldingCleave(BossModule module) : Components.Cleave(module, ActionID.MakeSpell(AID.ScaldingScolding), new AOEShapeCone(11.75f, 45.Degrees()), activeWhileCasting: false); + +class RemedyBombEnrage(BossModule module) : BossComponent(module) +{ + private DateTime _enrage; + + public override void AddGlobalHints(GlobalHints hints) + { + if (_enrage != default) + hints.Add($"Remedy bomb is enraging in {(_enrage - WorldState.CurrentTime).TotalSeconds:f1}s, kill it!"); + } + public override void OnCastStarted(Actor caster, ActorCastInfo spell) + { + { + if ((AID)spell.Action.ID == AID.HypothermalCombustionRemedyBomb) + _enrage = WorldState.FutureTime(16); + } + } + public override void OnCastFinished(Actor caster, ActorCastInfo spell) + { + { + if ((AID)spell.Action.ID == AID.HypothermalCombustionRemedyBomb) + _enrage = default; + } + } +} + +class MassiveBurstEnrage(BossModule module) : BossComponent(module) +{ + private DateTime _enrage; + + public override void AddGlobalHints(GlobalHints hints) + { + if (_enrage != default) + hints.Add($"Boss will cast a roomwide in {(_enrage - WorldState.CurrentTime).TotalSeconds:f1}s, stun it with the Lavabomb!"); + } + public override void OnCastStarted(Actor caster, ActorCastInfo spell) + { + { + if ((AID)spell.Action.ID == AID.MassiveBurst) + _enrage = WorldState.FutureTime(26); + } + } + public override void OnCastFinished(Actor caster, ActorCastInfo spell) + { + { + if ((AID)spell.Action.ID == AID.MassiveBurst) + _enrage = default; + } + } +} + +class HypothermalMinion(BossModule module) : Components.GenericAOEs(module) +{ + private readonly List _aoes = []; + private static readonly AOEShapeCircle Circle = new(6.6f); + + public override IEnumerable ActiveAOEs(int slot, Actor actor) => _aoes; + + public override void OnActorCreated(Actor actor) + { + if ((OID)actor.OID == OID.GiddyBomb) + _aoes.Add(new(Circle, actor.Position, default, WorldState.FutureTime(10))); + } + + public override void OnCastFinished(Actor caster, ActorCastInfo spell) + { + if ((AID)spell.Action.ID == AID.HypothermalCombustionMinionCast) + _aoes.Clear(); + } +} + +class D190TheGodfatherStates : StateMachineBuilder +{ + public D190TheGodfatherStates(BossModule module) : base(module) + { + TrivialPhase() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter(); + } +} + +[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 217, NameID = 5471)] +public class D190TheGodfather(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -300), new ArenaBoundsCircle(25)); From db4cc5feaad65fc9ac5e233e9188b6e7bbf5138b Mon Sep 17 00:00:00 2001 From: Andrew Gilewsky Date: Fri, 25 Oct 2024 21:08:02 +0100 Subject: [PATCH 13/13] Cleanup --- BossMod/BossModule/ZoneModuleConfig.cs | 3 --- .../DeepDungeon/PalaceOfTheDead/D100NybethObdilord.cs | 2 +- .../DeepDungeon/PalaceOfTheDead/D10PalaceDeathgaze.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D110Alicanto.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D120Kirtimukha.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D130Alfard.cs | 4 +--- .../Heavensward/DeepDungeon/PalaceOfTheDead/D140AhPuch.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D150Tisiphone.cs | 2 +- .../DeepDungeon/PalaceOfTheDead/D160Todesritter.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs | 2 +- .../DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs | 2 +- .../DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D20Spurge.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D30Ningishzida.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D40Ixtab.cs | 2 +- .../DeepDungeon/PalaceOfTheDead/D50EddaBlackbosom.cs | 2 +- .../DeepDungeon/PalaceOfTheDead/D60TheBlackRider.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D70Yaquaru.cs | 2 +- .../Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs | 2 +- .../DeepDungeon/PalaceOfTheDead/D90TheGodmother.cs | 2 +- FFXIVClientStructs | 2 +- 21 files changed, 20 insertions(+), 25 deletions(-) diff --git a/BossMod/BossModule/ZoneModuleConfig.cs b/BossMod/BossModule/ZoneModuleConfig.cs index ca1dad4d44..01cdcdedbe 100644 --- a/BossMod/BossModule/ZoneModuleConfig.cs +++ b/BossMod/BossModule/ZoneModuleConfig.cs @@ -14,7 +14,4 @@ public sealed class ZoneModuleConfig : ConfigNode [PropertyDisplay("Use dash abilities for navigation (Smudge, Elusive Jump, etc)")] public bool UseDash = true; - - [PropertyDisplay("Show xan debug UI")] - public bool ShowXanDebugger = false; } diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D100NybethObdilord.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D100NybethObdilord.cs index db10763967..ccaa085f7f 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D100NybethObdilord.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D100NybethObdilord.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D100NybethObdilord; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D100NybethObdilord; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D10PalaceDeathgaze.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D10PalaceDeathgaze.cs index 2dae69bd40..9a8eb2417e 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D10PalaceDeathgaze.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D10PalaceDeathgaze.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D10PalaceDeathgaze; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D10PalaceDeathgaze; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D110Alicanto.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D110Alicanto.cs index 72d074d7ae..6691c8862f 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D110Alicanto.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D110Alicanto.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D110Alicanto; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D110Alicanto; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D120Kirtimukha.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D120Kirtimukha.cs index 4f53e73f89..0798382cf3 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D120Kirtimukha.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D120Kirtimukha.cs @@ -1,4 +1,4 @@ -namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D120Kirtimukha; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D120Kirtimukha; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D130Alfard.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D130Alfard.cs index 26a0ed7126..ff4e16d3b8 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D130Alfard.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D130Alfard.cs @@ -1,6 +1,4 @@ -using BossMod.Heavensward.Dungeon.D06AetherochemicalResearchFacility.D062Harmachis; - -namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D130Alfard; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D130Alfard; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D140AhPuch.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D140AhPuch.cs index 1cee369dbb..037a80a5d5 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D140AhPuch.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D140AhPuch.cs @@ -1,4 +1,4 @@ -namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D140AhPuch; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D140AhPuch; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D150Tisiphone.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D150Tisiphone.cs index f8b38828cb..d9a5fa47a2 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D150Tisiphone.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D150Tisiphone.cs @@ -1,4 +1,4 @@ -namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D150Tisiphone; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D150Tisiphone; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs index 24c54385a6..dd62e28e58 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D160Todesritter.cs @@ -1,4 +1,4 @@ -namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D160Todesritter; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D160Todesritter; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs index 39a7b931a8..5beca074f2 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D170Yulunggu.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D170Yulunggu; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D170Yulunggu; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs index 9d83f70795..6bbcaae908 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D180Dendainsonne.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D180Dendainsonne; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D180Dendainsonne; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs index 47d871ca0b..1fe0dfc39f 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D190TheGodfather.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D190TheGodfather; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D190TheGodfather; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D20Spurge.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D20Spurge.cs index b3ac72354c..68a39675a3 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D20Spurge.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D20Spurge.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D20Spurge; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D20Spurge; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D30Ningishzida.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D30Ningishzida.cs index d79713361c..2005bfd4de 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D30Ningishzida.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D30Ningishzida.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D30Ningishzida; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D30Ningishzida; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D40Ixtab.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D40Ixtab.cs index 8a5370dbdd..0e1bd48b1a 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D40Ixtab.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D40Ixtab.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D40Ixtab; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D40Ixtab; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D50EddaBlackbosom.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D50EddaBlackbosom.cs index db4b2c2f14..c765163da0 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D50EddaBlackbosom.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D50EddaBlackbosom.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D50EddaBlackbosom; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D50EddaBlackbosom; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D60TheBlackRider.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D60TheBlackRider.cs index f9469ca62a..37a095ceaa 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D60TheBlackRider.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D60TheBlackRider.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D60TheBlackRider; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D60TheBlackRider; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D70Yaquaru.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D70Yaquaru.cs index 1d42db1d5c..5d45228203 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D70Yaquaru.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D70Yaquaru.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D70Taquaru; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D70Taquaru; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs index a18ce3ef3f..f7fe4e3301 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D80Gudanna.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D80Gudanna; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D80Gudanna; public enum OID : uint { diff --git a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D90TheGodmother.cs b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D90TheGodmother.cs index 2753676c8a..4c4178d389 100644 --- a/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D90TheGodmother.cs +++ b/BossMod/Modules/Heavensward/DeepDungeon/PalaceOfTheDead/D90TheGodmother.cs @@ -1,4 +1,4 @@ -namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D90TheGodmother; +namespace BossMod.Heavensward.DeepDungeon.PalaceOfTheDead.D90TheGodmother; public enum OID : uint { diff --git a/FFXIVClientStructs b/FFXIVClientStructs index 3841b96f6a..093674e553 160000 --- a/FFXIVClientStructs +++ b/FFXIVClientStructs @@ -1 +1 @@ -Subproject commit 3841b96f6aad172aca7e4b8e75a5d89c6d054e50 +Subproject commit 093674e553064cac397b854b13bc7109c5e90610