From 9c94ab299768c4596acf10be214a17ca61d09654 Mon Sep 17 00:00:00 2001 From: Andrew Gilewsky Date: Sat, 6 Apr 2024 21:52:34 +0100 Subject: [PATCH] Formatting --- BossMod/BossModule/AOEShapes.cs | 112 +++++++++--------- BossMod/BossModule/ArenaBounds.cs | 10 +- BossMod/Components/Exaflare.cs | 5 +- .../Alliance/A30TrashPack1/A30TrashPack1.cs | 4 +- .../A30TrashPack1/A30TrashPack1Enums.cs | 4 +- .../Alliance/A31Thaliak/A31Thaliak.cs | 52 ++++---- .../Alliance/A31Thaliak/A31ThaliakEnums.cs | 3 +- .../Alliance/A31Thaliak/A31ThaliakStates.cs | 2 +- .../A31Thaliak/ThaliakHieroglyphika.cs | 13 +- .../Alliance/A31Thaliak/ThaliakRheognosis.cs | 7 +- .../Alliance/A31Thaliak/ThaliakTetraktys.cs | 2 +- .../Alliance/A32Llymlaen/A32Llymlaen.cs | 8 +- .../Alliance/A32Llymlaen/A32LlymlaenEnum.cs | 2 +- .../Alliance/A32Llymlaen/A32LlymlaenStates.cs | 2 +- .../A32Llymlaen/LlymlaenDireStraits.cs | 2 +- .../A32Llymlaen/LlymlaenFrothingSea.cs | 5 +- .../A32Llymlaen/LlymlaenNavigatorsTrident.cs | 2 +- .../A32Llymlaen/LlymlaenSerpentsTide.cs | 2 +- .../A32Llymlaen/LlymlaenSurgingWave.cs | 4 +- .../Alliance/A32Llymlaen/LlymlaenToTheLast.cs | 2 +- .../Alliance/A32Llymlaen/LlymlaenTridents.cs | 2 +- .../Alliance/A33Oschon/A33OschonStates.cs | 3 +- .../Alliance/A33Oschon/OschonClimbingShot.cs | 2 +- .../Alliance/A33Oschon/OschonP2ArrowTrail.cs | 4 +- .../Alliance/A33Oschon/OschonSwingingDraw.cs | 4 +- .../Alliance/A34TrashPack2/A34TrashPack3.cs | 2 +- .../Alliance/A35TrashPack3/A35TrashPack3.cs | 3 +- .../Alliance/A36Eulogia/A36Eulogia.cs | 2 +- .../Alliance/A36Eulogia/A36EulogiaEnums.cs | 4 +- .../Alliance/A36Eulogia/A36EulogiaStates.cs | 2 +- .../A36Eulogia/EulogiaAsAboveSoBelow.cs | 2 +- .../A36Eulogia/EulogiaByregotStrike.cs | 2 +- .../A36Eulogia/EulogiaClimbingShot.cs | 2 +- .../Alliance/A36Eulogia/EulogiaFirstBlush.cs | 2 +- .../A36Eulogia/EulogiaHieroglyphika.cs | 4 +- .../A36Eulogia/EulogiaMatronsBreath.cs | 2 +- .../A36Eulogia/EulogiaRadiantRhythm.cs | 4 +- .../A36Eulogia/EulogiaThousandfoldThrust.cs | 2 +- .../Alliance/A36Eulogia/EulogiaTridents.cs | 2 +- BossMod/Util/ShapeDistance.cs | 21 +--- 40 files changed, 152 insertions(+), 162 deletions(-) diff --git a/BossMod/BossModule/AOEShapes.cs b/BossMod/BossModule/AOEShapes.cs index 9d0f42fdec..7c49fe83e4 100644 --- a/BossMod/BossModule/AOEShapes.cs +++ b/BossMod/BossModule/AOEShapes.cs @@ -231,59 +231,61 @@ private IEnumerable ContourPoints(WPos origin, Angle rotation, float offse yield return origin + dx1 + dy2; } } + +// TODO: revise and reconsider, not convinced it needs to be here, and it's not well implemented public class AOEShapeTriangle : AOEShape - { - public float SideLength; - public Angle DirectionOffset; - - public AOEShapeTriangle(float sideLength, Angle directionOffset = new()) - { - SideLength = sideLength; - DirectionOffset = directionOffset; - } - - public override bool Check(WPos position, WPos origin, Angle rotation) - { - var vertices = CalculateVertices(origin, rotation + DirectionOffset); - return position.InTri(vertices.p1, vertices.p2, vertices.p3); - } - - public override void Draw(MiniArena arena, WPos origin, Angle rotation, uint color = ArenaColor.AOE) - { - var vertices = CalculateVertices(origin, rotation + DirectionOffset); - arena.AddTriangleFilled(vertices.p1, vertices.p2, vertices.p3, color); - } - - public override void Outline(MiniArena arena, WPos origin, Angle rotation, uint color = ArenaColor.Danger) - { - var vertices = CalculateVertices(origin, rotation + DirectionOffset); - arena.AddTriangle(vertices.p1, vertices.p2, vertices.p3, color); - } - - public override IEnumerable> Contour(WPos origin, Angle rotation, float offset = 0, float maxError = 1) - { - var vertices = CalculateVertices(origin, rotation + DirectionOffset, offset); - return new List> { new[] { vertices.p1, vertices.p2, vertices.p3 } }; - } - - public override Func Distance(WPos origin, Angle rotation) - { - // Implementing an exact distance calculation for a triangle shape might be complex and is beyond the scope of this basic implementation. - return p => (p - origin).Length(); // Simplified placeholder - } - - private (WPos p1, WPos p2, WPos p3) CalculateVertices(WPos origin, Angle rotation, float offset = 0) - { - // Calculate vertex positions for an equilateral triangle with origin as one vertex - var sideOffset = (SideLength + offset) / 2; - var height = MathF.Sqrt(3) / 2 * (SideLength + offset); - var direction = rotation.ToDirection(); - var ortho = direction.OrthoR(); - - var p1 = origin; // The origin is one of the vertices - var p2 = origin + direction * height - ortho * sideOffset; - var p3 = origin + direction * height + ortho * sideOffset; - - return (p1, p2, p3); - } - } \ No newline at end of file +{ + public float SideLength; + public Angle DirectionOffset; + + public AOEShapeTriangle(float sideLength, Angle directionOffset = new()) + { + SideLength = sideLength; + DirectionOffset = directionOffset; + } + + public override bool Check(WPos position, WPos origin, Angle rotation) + { + var vertices = CalculateVertices(origin, rotation + DirectionOffset); + return position.InTri(vertices.p1, vertices.p2, vertices.p3); + } + + public override void Draw(MiniArena arena, WPos origin, Angle rotation, uint color = ArenaColor.AOE) + { + var vertices = CalculateVertices(origin, rotation + DirectionOffset); + arena.AddTriangleFilled(vertices.p1, vertices.p2, vertices.p3, color); + } + + public override void Outline(MiniArena arena, WPos origin, Angle rotation, uint color = ArenaColor.Danger) + { + var vertices = CalculateVertices(origin, rotation + DirectionOffset); + arena.AddTriangle(vertices.p1, vertices.p2, vertices.p3, color); + } + + public override IEnumerable> Contour(WPos origin, Angle rotation, float offset = 0, float maxError = 1) + { + var vertices = CalculateVertices(origin, rotation + DirectionOffset, offset); + return new List> { new[] { vertices.p1, vertices.p2, vertices.p3 } }; + } + + public override Func Distance(WPos origin, Angle rotation) + { + // Implementing an exact distance calculation for a triangle shape might be complex and is beyond the scope of this basic implementation. + return p => (p - origin).Length(); // Simplified placeholder + } + + private (WPos p1, WPos p2, WPos p3) CalculateVertices(WPos origin, Angle rotation, float offset = 0) + { + // Calculate vertex positions for an equilateral triangle with origin as one vertex + var sideOffset = (SideLength + offset) / 2; + var height = MathF.Sqrt(3) / 2 * (SideLength + offset); + var direction = rotation.ToDirection(); + var ortho = direction.OrthoR(); + + var p1 = origin; // The origin is one of the vertices + var p2 = origin + direction * height - ortho * sideOffset; + var p3 = origin + direction * height + ortho * sideOffset; + + return (p1, p2, p3); + } +} diff --git a/BossMod/BossModule/ArenaBounds.cs b/BossMod/BossModule/ArenaBounds.cs index d570fc1ac7..ff1e7ce11f 100644 --- a/BossMod/BossModule/ArenaBounds.cs +++ b/BossMod/BossModule/ArenaBounds.cs @@ -56,9 +56,9 @@ protected ArenaBounds(WPos center, float halfSize) var points = (donut, fullCircle) switch { (false, false) => CurveApprox.CircleSector(center, outerRadius, centerDirection - halfAngle, centerDirection + halfAngle, MaxApproxError), - (false, true) => CurveApprox.Circle(center, outerRadius, MaxApproxError), - ( true, false) => CurveApprox.DonutSector(center, innerRadius, outerRadius, centerDirection - halfAngle, centerDirection + halfAngle, MaxApproxError), - ( true, true) => CurveApprox.Donut(center, innerRadius, outerRadius, MaxApproxError), + (false, true) => CurveApprox.Circle(center, outerRadius, MaxApproxError), + (true, false) => CurveApprox.DonutSector(center, innerRadius, outerRadius, centerDirection - halfAngle, centerDirection + halfAngle, MaxApproxError), + (true, true) => CurveApprox.Donut(center, innerRadius, outerRadius, MaxApproxError), }; return ClipAndTriangulate(points); } @@ -207,6 +207,7 @@ public override WDir ClampToBounds(WDir offset, float scale) } } +// TODO: revise and reconsider, not convinced it needs to be here, and it's not well implemented public class ArenaBoundsTri : ArenaBounds { private static readonly float sqrt3 = MathF.Sqrt(3); @@ -248,7 +249,6 @@ private float Sign(WPos p1, WPos p2, WPos p3) return (p1.X - p3.X) * (p2.Z - p3.Z) - (p2.X - p3.X) * (p1.Z - p3.Z); } - public override float IntersectRay(WPos origin, WDir dir) { // Define triangle vertices @@ -268,4 +268,4 @@ public override WDir ClampToBounds(WDir offset, float scale = 1) // This method needs a detailed implementation based on specific requirements return new WDir(0, 0); // Placeholder to indicate that clamping logic is needed } -} \ No newline at end of file +} diff --git a/BossMod/Components/Exaflare.cs b/BossMod/Components/Exaflare.cs index 0c8d00b95c..f2c8e7ddf9 100644 --- a/BossMod/Components/Exaflare.cs +++ b/BossMod/Components/Exaflare.cs @@ -7,11 +7,11 @@ public class Line { public WPos Next; public WDir Advance; + public Angle Rotation; public DateTime NextExplosion; public float TimeToMove; public int ExplosionsLeft; public int MaxShownExplosions; - public Angle Rotation; } public AOEShape Shape { get; private init; } @@ -41,7 +41,6 @@ public override IEnumerable ActiveAOEs(BossModule module, int slot, { foreach (var l in Lines) { - Angle angle = l.Rotation; int num = Math.Min(l.ExplosionsLeft, l.MaxShownExplosions); var pos = l.Next; var time = l.NextExplosion > currentTime ? l.NextExplosion : currentTime; @@ -49,7 +48,7 @@ public override IEnumerable ActiveAOEs(BossModule module, int slot, { pos += l.Advance; time = time.AddSeconds(l.TimeToMove); - yield return (pos, time, angle); + yield return (pos, time, l.Rotation); } } } diff --git a/BossMod/Modules/Endwalker/Alliance/A30TrashPack1/A30TrashPack1.cs b/BossMod/Modules/Endwalker/Alliance/A30TrashPack1/A30TrashPack1.cs index 9744021760..38342500d6 100644 --- a/BossMod/Modules/Endwalker/Alliance/A30TrashPack1/A30TrashPack1.cs +++ b/BossMod/Modules/Endwalker/Alliance/A30TrashPack1/A30TrashPack1.cs @@ -47,7 +47,7 @@ public A30TrashPack1States(BossModule module) : base(module) .ActivateOnEnter() .ActivateOnEnter() .ActivateOnEnter() - .Raw.Update = () => module.Enemies(OID.Boss).All(e => e.IsDestroyed) && module.Enemies(OID.Triton).All(e => e.IsDead) && module.Enemies(OID.WaterSprite).All(e => e.IsDead) && module.Enemies(OID.WaterSprite).All(e => e.IsDead); + .Raw.Update = () => module.Enemies(OID.Boss).All(e => e.IsDestroyed) && module.Enemies(OID.Triton).All(e => e.IsDead) && module.Enemies(OID.WaterSprite).All(e => e.IsDead) && module.Enemies(OID.WaterSprite).All(e => e.IsDead); } } @@ -67,4 +67,4 @@ protected override void DrawEnemies(int pcSlot, Actor pc) foreach (var e in Enemies(OID.WaterSprite)) Arena.Actor(e, ArenaColor.Enemy); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A30TrashPack1/A30TrashPack1Enums.cs b/BossMod/Modules/Endwalker/Alliance/A30TrashPack1/A30TrashPack1Enums.cs index 411ba2a3cb..1812ab91ab 100644 --- a/BossMod/Modules/Endwalker/Alliance/A30TrashPack1/A30TrashPack1Enums.cs +++ b/BossMod/Modules/Endwalker/Alliance/A30TrashPack1/A30TrashPack1Enums.cs @@ -6,7 +6,7 @@ public enum OID : uint Triton = 0x4011, // R1.950, x2 DivineSprite = 0x4012, // R1.600, x3 WaterSprite = 0x4085, // R0.800, x5 -}; +} public enum AID : uint { @@ -19,4 +19,4 @@ public enum AID : uint WaterBurst = 35443, // Water Sprite->self, no cast, range 40 circle, raidwide when Water Sprite dies DivineFlood = 35440, // Divine Sprite->self, 3.0s cast, range 6 circle DivineBurst = 35441, // Divine Sprite->self, no cast, range 40 circle, raidwide when Divine Sprite dies -}; \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31Thaliak.cs b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31Thaliak.cs index 477adc20b7..1628bff3f4 100644 --- a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31Thaliak.cs +++ b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31Thaliak.cs @@ -7,62 +7,62 @@ public Katarraktes() : base(ActionID.MakeSpell(AID.KatarraktesAOE), "Raidwide + class Thlipsis : Components.StackWithCastTargets { - public Thlipsis() : base(ActionID.MakeSpell(AID.ThlipsisStack), 6) { } + public Thlipsis() : base(ActionID.MakeSpell(AID.ThlipsisStack), 6) { } } class Hydroptosis : Components.SpreadFromCastTargets { - public Hydroptosis() : base(ActionID.MakeSpell(AID.HydroptosisSpread), 6) { } + public Hydroptosis() : base(ActionID.MakeSpell(AID.HydroptosisSpread), 6) { } } - + class Rhyton : Components.GenericBaitAway { - private static readonly AOEShapeRect _shape = new(70, 3); + private static readonly AOEShapeRect _shape = new(70, 3); - public override void OnEventIcon(BossModule module, Actor actor, uint iconID) - { - if (iconID == (uint)IconID.RhytonBuster) - CurrentBaits.Add(new(module.PrimaryActor, actor, _shape)); - } + public override void OnEventIcon(BossModule module, Actor actor, uint iconID) + { + if (iconID == (uint)IconID.RhytonBuster) + CurrentBaits.Add(new(module.PrimaryActor, actor, _shape)); + } - public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent spell) + public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent spell) { - if ((AID)spell.Action.ID == AID.RhytonHelper) - { - ++NumCasts; - CurrentBaits.Clear(); - } + if ((AID)spell.Action.ID == AID.RhytonHelper) + { + ++NumCasts; + CurrentBaits.Clear(); + } } - public override void AddGlobalHints(BossModule module, GlobalHints hints) - { - if (CurrentBaits.Count > 0) - hints.Add("Tankbuster cleave"); - } + public override void AddGlobalHints(BossModule module, GlobalHints hints) + { + if (CurrentBaits.Count > 0) + hints.Add("Tankbuster cleave"); + } } class LeftBank : Components.SelfTargetedAOEs { - public LeftBank() : base(ActionID.MakeSpell(AID.LeftBank), new AOEShapeCone(60, 90.Degrees())) { } + public LeftBank() : base(ActionID.MakeSpell(AID.LeftBank), new AOEShapeCone(60, 90.Degrees())) { } } class LeftBank2 : Components.SelfTargetedAOEs { - public LeftBank2() : base(ActionID.MakeSpell(AID.LeftBank2), new AOEShapeCone(60, 90.Degrees())) { } + public LeftBank2() : base(ActionID.MakeSpell(AID.LeftBank2), new AOEShapeCone(60, 90.Degrees())) { } } class RightBank : Components.SelfTargetedAOEs { - public RightBank() : base(ActionID.MakeSpell(AID.RightBank), new AOEShapeCone(60, 90.Degrees())) { } + public RightBank() : base(ActionID.MakeSpell(AID.RightBank), new AOEShapeCone(60, 90.Degrees())) { } } class RightBank2 : Components.SelfTargetedAOEs { - public RightBank2() : base(ActionID.MakeSpell(AID.RightBank2), new AOEShapeCone(60, 90.Degrees())) { } + public RightBank2() : base(ActionID.MakeSpell(AID.RightBank2), new AOEShapeCone(60, 90.Degrees())) { } } [ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "Malediktus, LTS", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 962, NameID = 11298)] public class A31Thaliak : BossModule { - public A31Thaliak(WorldState ws, Actor primary) : base(ws, primary, new ArenaBoundsSquare(new(-945, 945), 24)) { } -} \ No newline at end of file + public A31Thaliak(WorldState ws, Actor primary) : base(ws, primary, new ArenaBoundsSquare(new(-945, 945), 24)) { } +} diff --git a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31ThaliakEnums.cs b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31ThaliakEnums.cs index 9d8f47e4e5..2b706dc152 100644 --- a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31ThaliakEnums.cs +++ b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31ThaliakEnums.cs @@ -1,4 +1,5 @@ namespace BossMod.Endwalker.Alliance.A31Thaliak; + public enum OID : uint { Boss = 0x404C, // R9.496, x1 @@ -63,4 +64,4 @@ public enum IconID : uint RhytonBuster = 471, // player ClockwiseHieroglyphika = 487, // HieroglyphikaIndicator CounterClockwiseHieroglyphika = 490, // HieroglyphikaIndicator -}; \ No newline at end of file +}; diff --git a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31ThaliakStates.cs b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31ThaliakStates.cs index b4ea906104..ecf894db51 100644 --- a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31ThaliakStates.cs +++ b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/A31ThaliakStates.cs @@ -1,7 +1,7 @@ namespace BossMod.Endwalker.Alliance.A31Thaliak; class A31ThaliakStates : StateMachineBuilder -{ +{ public A31ThaliakStates(BossModule module) : base(module) { TrivialPhase() diff --git a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakHieroglyphika.cs b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakHieroglyphika.cs index 482eb610a4..653ec289a7 100644 --- a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakHieroglyphika.cs +++ b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakHieroglyphika.cs @@ -5,7 +5,7 @@ class Hieroglyphika : Components.GenericAOEs private static readonly AOEShapeRect rect = new(6, 6, 6); private readonly List _aoes = []; private const float RadianConversion = MathF.PI / 180; - private static readonly WPos[] StartingCoords = [new(-963, 939), new(-963, 963), new(-939, 927), new (-951, 939), new(-951, 927), new(-939, 963), new(-927, 939), new(-939, 951), new(-939, 939), new(-927, 963), new(-963, 951), new(-927, 951), new(-951, 951), new(-963, 927)]; + private static readonly WPos[] StartingCoords = [new(-963, 939), new(-963, 963), new(-939, 927), new(-951, 939), new(-951, 927), new(-939, 963), new(-927, 939), new(-939, 951), new(-939, 939), new(-927, 963), new(-963, 951), new(-927, 951), new(-951, 951), new(-963, 927)]; private byte currentIndex; public override IEnumerable ActiveAOEs(BossModule module, int slot, Actor actor) => _aoes.Take(14); @@ -16,13 +16,14 @@ class Hieroglyphika : Components.GenericAOEs float z = MathF.Sin(rotatebydegrees * RadianConversion) * (caster.X - origin.X) + MathF.Cos(rotatebydegrees * RadianConversion) * (caster.Z - origin.Z); return new WPos(origin.X + x, origin.Z + z); } + public override void OnEventEnvControl(BossModule module, byte index, uint state) { if (state == 0x00020001) { - if (index == 0x17) + if (index == 0x17) currentIndex = 0x17; - if (index == 0x4A) + if (index == 0x4A) currentIndex = 0x4A; } } @@ -38,13 +39,13 @@ public override void OnEventIcon(BossModule module, Actor actor, uint iconID) _aoes.Add(new(rect, RotateAroundOrigin(0, origin, r), default, _activation)); if (currentIndex == 0x4A) foreach (var r in StartingCoords) - _aoes.Add(new(rect, RotateAroundOrigin(-90, origin, r), default, _activation)); + _aoes.Add(new(rect, RotateAroundOrigin(-90, origin, r), default, _activation)); } if (iconID == (uint)IconID.CounterClockwiseHieroglyphika) { if (currentIndex == 0x4A) foreach (var r in StartingCoords) - _aoes.Add(new(rect, RotateAroundOrigin(90, origin, r), default, _activation)); + _aoes.Add(new(rect, RotateAroundOrigin(90, origin, r), default, _activation)); if (currentIndex == 0x17) foreach (var r in StartingCoords) _aoes.Add(new(rect, RotateAroundOrigin(180, origin, r), default, _activation)); @@ -56,4 +57,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent if (_aoes.Count > 0 && (AID)spell.Action.ID is AID.HieroglyphikaRect) _aoes.Clear(); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakRheognosis.cs b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakRheognosis.cs index 175db9e849..2c9be3e9d8 100644 --- a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakRheognosis.cs +++ b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakRheognosis.cs @@ -1,6 +1,5 @@ namespace BossMod.Endwalker.Alliance.A31Thaliak; - class Rheognosis : Components.RaidwideCast { public Rheognosis() : base(ActionID.MakeSpell(AID.RheognosisKnockback), "Raidwide + Knockback") { } @@ -11,6 +10,7 @@ class RheognosisKnockback : Components.Knockback private Source? _knockback; public override IEnumerable Sources(BossModule module, int slot, Actor actor) => Utils.ZeroOrOne(_knockback); + public override void OnCastStarted(BossModule module, Actor caster, ActorCastInfo spell) { if ((AID)spell.Action.ID is AID.Rheognosis or AID.RheognosisPetrine) @@ -28,7 +28,8 @@ public class RheognosisCrash : Components.Exaflare { private static readonly Angle _rot1 = 90.Degrees(); private static readonly Angle _rot2 = -90.Degrees(); - public RheognosisCrash() : base(new AOEShapeRect(24.01f, 12)) { } //actually the rect is only 24, but there seem to be a few thousandth of variation in the location + + public RheognosisCrash() : base(new AOEShapeRect(24.01f, 12)) { } //actually the rect is only 24, but there seem to be a few thousandth of variation in the location public override void OnEventEnvControl(BossModule module, byte index, uint state) { @@ -60,4 +61,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent Lines.RemoveAt(index); } } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakTetraktys.cs b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakTetraktys.cs index 8318a5376d..2640b3fc41 100644 --- a/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakTetraktys.cs +++ b/BossMod/Modules/Endwalker/Alliance/A31Thaliak/ThaliakTetraktys.cs @@ -124,4 +124,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent if (_aoes.Count > 0 && (AID)spell.Action.ID is AID.TetraBlueTriangles or AID.TetraGreenTriangles or AID.TetraktuosKosmosTri or AID.TetraktuosKosmosRect) _aoes.RemoveAt(0); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32Llymlaen.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32Llymlaen.cs index af90ebb300..d448cd106e 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32Llymlaen.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32Llymlaen.cs @@ -40,22 +40,22 @@ class SeafoamSpiral : Components.SelfTargetedAOEs public SeafoamSpiral() : base(ActionID.MakeSpell(AID.SeafoamSpiral), new AOEShapeDonut(6, 70)) { } } -class DeepDive1: Components.StackWithCastTargets +class DeepDive1 : Components.StackWithCastTargets { public DeepDive1() : base(ActionID.MakeSpell(AID.DeepDiveStack1), 6) { } } -class DeepDive2: Components.StackWithCastTargets +class DeepDive2 : Components.StackWithCastTargets { public DeepDive2() : base(ActionID.MakeSpell(AID.DeepDiveStack2), 6) { } } -class HardWater1: Components.StackWithCastTargets +class HardWater1 : Components.StackWithCastTargets { public HardWater1() : base(ActionID.MakeSpell(AID.HardWaterStack1), 6) { } } -class HardWater2: Components.StackWithCastTargets +class HardWater2 : Components.StackWithCastTargets { public HardWater2() : base(ActionID.MakeSpell(AID.HardWaterStack2), 6) { } } diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32LlymlaenEnum.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32LlymlaenEnum.cs index a98eeb67d8..04d002c6f4 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32LlymlaenEnum.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32LlymlaenEnum.cs @@ -79,4 +79,4 @@ public enum AID : uint //these only happen if a player uses the blowkiss emote on Llymlaen, stun+heavy dmg, not our fault if people do that BlowkissPunishment = 34874, // Llymlaen->player, no cast, single-target, knockback 10 away from source + down for the count NavigatorsDagger = 34875, // Llymlaen->player, no cast, single-target -}; \ No newline at end of file +}; diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32LlymlaenStates.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32LlymlaenStates.cs index 376b8e614f..b75c4325b9 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32LlymlaenStates.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/A32LlymlaenStates.cs @@ -35,4 +35,4 @@ public A32LlymlaenStates(BossModule module) : base(module) .ActivateOnEnter() .ActivateOnEnter(); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenDireStraits.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenDireStraits.cs index 78614dc183..eadc84d2c0 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenDireStraits.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenDireStraits.cs @@ -30,4 +30,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn if (_aoes.Count > 0 && (AID)spell.Action.ID is AID.DireStraitsRectAOE1 or AID.DireStraitsRectAOE2) _aoes.RemoveAt(0); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenFrothingSea.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenFrothingSea.cs index 668930d5e9..cf73aa182f 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenFrothingSea.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenFrothingSea.cs @@ -4,7 +4,8 @@ public class FrothingSea : Components.Exaflare { private static readonly Angle _rot1 = 90.Degrees(); private static readonly Angle _rot2 = -90.Degrees(); - public FrothingSea() : base(new AOEShapeRect(6, 20, 80)) { } + + public FrothingSea() : base(new AOEShapeRect(6, 20, 80)) { } public override void OnEventEnvControl(BossModule module, byte index, uint state) { @@ -25,4 +26,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent Lines.RemoveAt(0); } } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenNavigatorsTrident.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenNavigatorsTrident.cs index 28548bcc93..efb78208db 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenNavigatorsTrident.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenNavigatorsTrident.cs @@ -55,4 +55,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn } public override bool DestinationUnsafe(BossModule module, int slot, Actor actor, WPos pos) => module.FindComponent()?.ActiveAOEs(module, slot, actor).Any(z => z.Shape.Check(pos, z.Origin, z.Rotation)) ?? false || !module.Bounds.Contains(pos); -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenSerpentsTide.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenSerpentsTide.cs index e41a390354..18bf5dc63b 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenSerpentsTide.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenSerpentsTide.cs @@ -18,4 +18,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent if (_aoes.Count > 0 && (AID)spell.Action.ID is AID.SerpentsTideRectAOE1 or AID.SerpentsTideRectAOE2 or AID.SerpentsTideRectAOE3 or AID.SerpentsTideRectAOE4) _aoes.RemoveAt(0); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenSurgingWave.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenSurgingWave.cs index 6bb9141aa3..3075af6c44 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenSurgingWave.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenSurgingWave.cs @@ -56,7 +56,7 @@ public override void AddAIHints(BossModule module, int slot, Actor actor, PartyR { var c = Shape == Arena.ExtendWest ? -1 : 1; base.AddAIHints(module, slot, actor, assignment, hints); - if (module.FindComponent()!.Sources(module, slot, actor).Any()) + if (module.FindComponent()!.Sources(module, slot, actor).Any()) hints.AddForbiddenZone(ShapeDistance.InvertedCone(new(4 * c, -900), 6, c * 90.Degrees(), 22.5f.Degrees())); //for some reason I need to use different coords and angle for this than when drawing the ZoneCone, otherwise it wont appear in the correct spot? } @@ -91,4 +91,4 @@ public Shockwave() : base(ActionID.MakeSpell(AID.Shockwave), 68, true, kind: Kin class ShockwaveRaidwide : Components.RaidwideCast { public ShockwaveRaidwide() : base(ActionID.MakeSpell(AID.Shockwave)) { } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenToTheLast.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenToTheLast.cs index 7af55673fc..ec55dff508 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenToTheLast.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenToTheLast.cs @@ -24,4 +24,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn if (_aoes.Count > 0 && (AID)spell.Action.ID == AID.ToTheLastAOE) _aoes.RemoveAt(0); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenTridents.cs b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenTridents.cs index 1f66adfc87..1dee6ecd1a 100644 --- a/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenTridents.cs +++ b/BossMod/Modules/Endwalker/Alliance/A32Llymlaen/LlymlaenTridents.cs @@ -29,4 +29,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn if ((AID)spell.Action.ID == AID.LandingCircle && _aoes.Count > 0) _aoes.RemoveAt(0); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A33Oschon/A33OschonStates.cs b/BossMod/Modules/Endwalker/Alliance/A33Oschon/A33OschonStates.cs index 16f94d1105..63451cef51 100644 --- a/BossMod/Modules/Endwalker/Alliance/A33Oschon/A33OschonStates.cs +++ b/BossMod/Modules/Endwalker/Alliance/A33Oschon/A33OschonStates.cs @@ -12,6 +12,7 @@ public override void OnEventEnvControl(BossModule module, byte index, uint state class A33OschonStates : StateMachineBuilder { private readonly A33Oschon _module; + public A33OschonStates(A33Oschon module) : base(module) { _module = module; @@ -44,4 +45,4 @@ public A33OschonStates(A33Oschon module) : base(module) .ActivateOnEnter() .Raw.Update = () => _module.OschonP2 != null && _module.OschonP2()?.HP.Cur == 1; } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonClimbingShot.cs b/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonClimbingShot.cs index 36e5f5d625..2cc25c6eec 100644 --- a/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonClimbingShot.cs +++ b/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonClimbingShot.cs @@ -19,4 +19,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn } public override bool DestinationUnsafe(BossModule module, int slot, Actor actor, WPos pos) => module.FindComponent()?.ActiveAOEs(module, slot, actor).Any(z => z.Shape.Check(pos, z.Origin, z.Rotation)) ?? false || !module.Bounds.Contains(pos); -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonP2ArrowTrail.cs b/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonP2ArrowTrail.cs index 38304eadbe..f84b30a43a 100644 --- a/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonP2ArrowTrail.cs +++ b/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonP2ArrowTrail.cs @@ -2,7 +2,7 @@ namespace BossMod.Endwalker.Alliance.A33Oschon; public class ArrowTrail : Components.Exaflare { - public ArrowTrail() : base(new AOEShapeRect(5, 5, 5)) { } + public ArrowTrail() : base(new AOEShapeRect(5, 5, 5)) { } public override void OnCastStarted(BossModule module, Actor caster, ActorCastInfo spell) { @@ -21,4 +21,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent Lines.RemoveAt(index); } } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonSwingingDraw.cs b/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonSwingingDraw.cs index 74d05831f9..bac3f45032 100644 --- a/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonSwingingDraw.cs +++ b/BossMod/Modules/Endwalker/Alliance/A33Oschon/OschonSwingingDraw.cs @@ -18,7 +18,7 @@ public override void OnCastStarted(BossModule module, Actor caster, ActorCastInf if (caster.Position.AlmostEqual(new(10, 740), 1) && caster.Rotation.AlmostEqual(135.Degrees(), maxError)) _aoes.Add(new(_shape, new(25, 750), -90.Degrees(), _activation)); if (caster.Position.AlmostEqual(new(10, 760), 1) && caster.Rotation.AlmostEqual(45.Degrees(), maxError)) - _aoes.Add(new(_shape, new(0, 775), 180.Degrees(), _activation)); + _aoes.Add(new(_shape, new(0, 775), 180.Degrees(), _activation)); if (caster.Position.AlmostEqual(new(-10, 760), 1) && caster.Rotation.AlmostEqual(-45.Degrees(), maxError)) _aoes.Add(new(_shape, new(-25, 750), 90.Degrees(), _activation)); } @@ -43,4 +43,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn ++NumCasts; } } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A34TrashPack2/A34TrashPack3.cs b/BossMod/Modules/Endwalker/Alliance/A34TrashPack2/A34TrashPack3.cs index 9ce2d66f49..fabbfe30b2 100644 --- a/BossMod/Modules/Endwalker/Alliance/A34TrashPack2/A34TrashPack3.cs +++ b/BossMod/Modules/Endwalker/Alliance/A34TrashPack2/A34TrashPack3.cs @@ -51,4 +51,4 @@ protected override void DrawEnemies(int pcSlot, Actor pc) foreach (var e in Enemies(OID.AngelosMikros)) Arena.Actor(e, ArenaColor.Enemy); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A35TrashPack3/A35TrashPack3.cs b/BossMod/Modules/Endwalker/Alliance/A35TrashPack3/A35TrashPack3.cs index 314ed75a9a..2e0fb82208 100644 --- a/BossMod/Modules/Endwalker/Alliance/A35TrashPack3/A35TrashPack3.cs +++ b/BossMod/Modules/Endwalker/Alliance/A35TrashPack3/A35TrashPack3.cs @@ -20,7 +20,6 @@ class SkylightCrossHint : Components.CastInterruptHint public SkylightCrossHint() : base(ActionID.MakeSpell(AID.SkylightCross)) { } } - public class A35TrashPack2States : StateMachineBuilder { public A35TrashPack2States(BossModule module) : base(module) @@ -44,4 +43,4 @@ protected override void DrawEnemies(int pcSlot, Actor pc) foreach (var e in Enemies(OID.Boss)) Arena.Actor(e, ArenaColor.Enemy); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36Eulogia.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36Eulogia.cs index e51695d823..5ad24cad69 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36Eulogia.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36Eulogia.cs @@ -50,4 +50,4 @@ public DestructiveBoltStack() : base(ActionID.MakeSpell(AID.DestructiveBoltStack public class A36Eulogia : BossModule { public A36Eulogia(WorldState ws, Actor primary) : base(ws, primary, new ArenaBoundsCircle(new(945, -945), 35)) { } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36EulogiaEnums.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36EulogiaEnums.cs index bdca90bfff..c3111f9196 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36EulogiaEnums.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36EulogiaEnums.cs @@ -28,7 +28,7 @@ public enum AID : uint Visual = 35336, // Eulogia->self, no cast, single-target Visual2 = 35337, // Eulogia->self, no cast, single-target Visual3 = 36066, // Eulogia->self, no cast, single-target - + QuintessenceVisual1 = 35360, // Avatar->self, 0.5s cast, single-target QuintessenceVisual2 = 35361, // Avatar->self, 0.5s cast, single-target QuintessenceVisual3 = 35358, // Avatar->self, 0.5s cast, single-target @@ -176,4 +176,4 @@ public enum IconID : uint Order2 = 399, // MatronsBreathHelper Order3 = 400, // MatronsBreathHelper Order4 = 401, // MatronsBreathHelper -}; \ No newline at end of file +}; diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36EulogiaStates.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36EulogiaStates.cs index a4d42e00ec..a7bd7b5b05 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36EulogiaStates.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/A36EulogiaStates.cs @@ -46,4 +46,4 @@ public A36EulogiaStates(BossModule module) : base(module) .ActivateOnEnter() .ActivateOnEnter(); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaAsAboveSoBelow.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaAsAboveSoBelow.cs index 703437fe2f..69daf1bff1 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaAsAboveSoBelow.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaAsAboveSoBelow.cs @@ -48,4 +48,4 @@ private void Advance(BossModule module, WPos position, WDir dir) if (Lines[index].ExplosionsLeft == 0) Lines.RemoveAt(index); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaByregotStrike.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaByregotStrike.cs index dac68f93d3..cbcd6cbea9 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaByregotStrike.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaByregotStrike.cs @@ -33,4 +33,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent ++NumCasts; } } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaClimbingShot.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaClimbingShot.cs index cc488d210a..956ea75c0f 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaClimbingShot.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaClimbingShot.cs @@ -19,4 +19,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent } public override bool DestinationUnsafe(BossModule module, int slot, Actor actor, WPos pos) => module.FindComponent()?.ActiveAOEs(module, slot, actor).Any(z => z.Shape.Check(pos, z.Origin, z.Rotation)) ?? false || !module.Bounds.Contains(pos); -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaFirstBlush.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaFirstBlush.cs index 9476aa4196..fea9668232 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaFirstBlush.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaFirstBlush.cs @@ -32,4 +32,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn _castersunsorted.Clear(); } } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaHieroglyphika.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaHieroglyphika.cs index 0dcf8fccb9..636fe9b699 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaHieroglyphika.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaHieroglyphika.cs @@ -5,7 +5,7 @@ class Hieroglyphika : Components.GenericAOEs private static readonly AOEShapeRect rect = new(12, 6); private readonly List _aoes = []; private const float RadianConversion = MathF.PI / 180; - private static readonly WPos[] StartingCoords = [new(951, -933), new(939, -933), new(951, -957), new (939, -957), new(927, -933), new(963, -957), new(963, -933), new(951, -945), new(939, -945), new(927, -921), new(939, -921), new(927, -945), new(963, -945), new(963, -921)]; + private static readonly WPos[] StartingCoords = [new(951, -933), new(939, -933), new(951, -957), new(939, -957), new(927, -933), new(963, -957), new(963, -933), new(951, -945), new(939, -945), new(927, -921), new(939, -921), new(927, -945), new(963, -945), new(963, -921)]; public override IEnumerable ActiveAOEs(BossModule module, int slot, Actor actor) => _aoes.Take(14); @@ -33,4 +33,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent if (_aoes.Count > 0 && (AID)spell.Action.ID is AID.HieroglyphikaRect) _aoes.Clear(); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaMatronsBreath.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaMatronsBreath.cs index 321b79c7db..6b9e10970e 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaMatronsBreath.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaMatronsBreath.cs @@ -28,4 +28,4 @@ public override void OnEventCast(BossModule module, Actor caster, ActorCastEvent _flowers.RemoveAt(0); } } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaRadiantRhythm.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaRadiantRhythm.cs index a4733b95c8..d4a15217ea 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaRadiantRhythm.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaRadiantRhythm.cs @@ -4,6 +4,7 @@ class RadiantFlourish : Components.GenericAOEs { private static readonly AOEShapeCircle circle = new(27); private readonly List _aoes = []; + public override IEnumerable ActiveAOEs(BossModule module, int slot, Actor actor) => _aoes; public override void OnCastFinished(BossModule module, Actor caster, ActorCastInfo spell) @@ -19,6 +20,7 @@ class RadiantRhythm : Components.GenericAOEs { private static readonly AOEShapeDonutSector _shape = new(20, 30, 45.Degrees()); private readonly List _aoes = []; + public override IEnumerable ActiveAOEs(BossModule module, int slot, Actor actor) { if (_aoes.Count > 1) @@ -54,4 +56,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn if (_aoes.Count > 0 && (AID)spell.Action.ID == AID.RadiantFlight) _aoes.RemoveAt(0); } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaThousandfoldThrust.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaThousandfoldThrust.cs index 76cb3cd3df..15525779c1 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaThousandfoldThrust.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaThousandfoldThrust.cs @@ -27,4 +27,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn if ((AID)spell.Action.ID == AID.ThousandfoldThrustAOEFirst) ++NumCasts; } -} \ No newline at end of file +} diff --git a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaTridents.cs b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaTridents.cs index f91df20300..d4d70e13cb 100644 --- a/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaTridents.cs +++ b/BossMod/Modules/Endwalker/Alliance/A36Eulogia/EulogiaTridents.cs @@ -29,4 +29,4 @@ public override void OnCastFinished(BossModule module, Actor caster, ActorCastIn if ((AID)spell.Action.ID == AID.LightningBolt && _aoes.Count > 0) _aoes.RemoveAt(0); } -} \ No newline at end of file +} diff --git a/BossMod/Util/ShapeDistance.cs b/BossMod/Util/ShapeDistance.cs index 9ab0b7741c..a853c911e2 100644 --- a/BossMod/Util/ShapeDistance.cs +++ b/BossMod/Util/ShapeDistance.cs @@ -49,25 +49,8 @@ public static Func Cone(WPos origin, float radius, Angle centerDir, public static Func InvertedCone(WPos origin, float radius, Angle centerDir, Angle halfAngle) { - if (halfAngle.Rad <= 0 || radius <= 0) - return _ => float.MaxValue; - if (halfAngle.Rad >= MathF.PI) - return Circle(origin, radius); - // for <= 180-degree cone: result = intersection of circle and two half-planes with normals pointing outside cone sides - // for > 180-degree cone: result = intersection of circle and negated intersection of two half-planes with inverted normals - // both normals point outside - float coneFactor = halfAngle.Rad > MathF.PI / 2 ? -1 : 1; - var nl = coneFactor * (centerDir + halfAngle).ToDirection().OrthoL(); - var nr = coneFactor * (centerDir - halfAngle).ToDirection().OrthoR(); - return p => - { - var off = p - origin; - var distOrigin = off.Length(); - var distOuter = distOrigin - radius; - var distLeft = off.Dot(nl); - var distRight = off.Dot(nr); - return -Math.Max(distOuter, coneFactor * Math.Max(distLeft, distRight)); - }; + var cone = Cone(origin, radius, centerDir, halfAngle); + return p => -cone(p); } public static Func DonutSector(WPos origin, float innerRadius, float outerRadius, Angle centerDir, Angle halfAngle)