Skip to content

Commit

Permalink
Merge pull request #508 from FFXIV-CombatReborn/mergeWIP
Browse files Browse the repository at this point in the history
snowcloak fix
  • Loading branch information
CarnifexOptimus authored Dec 21, 2024
2 parents 46377ea + 346a292 commit 886cbf2
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 10 deletions.
11 changes: 7 additions & 4 deletions BossMod/Components/ThinIce.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ namespace BossMod.Components;

abstract class ThinIce(BossModule module, uint statusID = 911, float distance = 11, bool stopAtWall = false, bool stopAfterWall = false) : Knockback(module, stopAtWall: stopAtWall, stopAfterWall: stopAfterWall)
{
public readonly uint StatusID = statusID;
public readonly float Distance = distance;

public override IEnumerable<Source> Sources(int slot, Actor actor)
{
if (actor.FindStatus(statusID) != null)
yield return new(actor.Position, distance, default, default, actor.Rotation, Kind.DirForward);
if (actor.FindStatus(StatusID) != null)
yield return new(actor.Position, Distance, default, default, actor.Rotation, Kind.DirForward);
}

public override void AddHints(int slot, Actor actor, TextHints hints)
Expand All @@ -17,7 +20,7 @@ public override void AddHints(int slot, Actor actor, TextHints hints)
public override void DrawArenaForeground(int pcSlot, Actor pc)
{
base.DrawArenaForeground(pcSlot, pc);
if (pc.FindStatus(statusID) != null)
Arena.AddCircle(pc.Position, distance, Colors.Vulnerable);
if (pc.FindStatus(StatusID) != null)
Arena.AddCircle(pc.Position, Distance, Colors.Vulnerable);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,12 @@ class ThinIce(BossModule module) : Components.ThinIce(module, stopAtWall: true)
{
public override bool DestinationUnsafe(int slot, Actor actor, WPos pos) => (Module.FindComponent<FrostedOrb>()?.ActiveAOEs(slot, actor).Any(z => z.Shape.Check(pos, z.Origin, z.Rotation)) ?? false) ||
(Module.FindComponent<FrigidDive>()?.ActiveAOEs(slot, actor).Any(z => z.Shape.Check(pos, z.Origin, z.Rotation)) ?? false);

public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
if (actor.FindStatus(StatusID) != null)
hints.AddForbiddenZone(ShapeDistance.InvertedDonut(actor.Position, Distance, Distance + 0.5f));
}
}

class D133HraesvelgrStates : StateMachineBuilder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ namespace BossMod.RealmReborn.Dungeon.D26Snowcloak.D260NorthernBateleur;

public enum OID : uint
{
IceSprite = 0xD31, // R0.9
Boss = 0xD1E, // R0.8
IceSprite = 0xD31, // R0.9
Hrimthurs = 0xD1F, // R1.69
SnowcloakGoobbue = 0xD1B, // R1.9
WallController1 = 0x1E94F1,
WindController1 = 0x1E96D4,
WindController2 = 0x1E94F0,
WindController3 = 0x1E94F2,
Yeti = 0x3977 // R3.8
}

public enum AID : uint
Expand Down Expand Up @@ -94,7 +95,8 @@ public D260NorthernBateleurStates(BossModule module) : base(module)
.ActivateOnEnter<WingCutter>()
.ActivateOnEnter<DoubleSmash>()
.ActivateOnEnter<SicklySneeze>()
.Raw.Update = () => Module.Enemies(OID.IceSprite).Concat(Module.Enemies(OID.Boss)).Concat(Module.Enemies(OID.SnowcloakGoobbue)).All(x => x.IsDeadOrDestroyed);
.Raw.Update = () => module.Enemies(D260NorthernBateleur.Trash).Where(x => x.Position.AlmostEqual(module.Arena.Center, module.Bounds.Radius)).All(x => x.IsDeadOrDestroyed)
|| module.Enemies(OID.Yeti).Any(x => x.InCombat);
}
}

Expand Down Expand Up @@ -174,12 +176,11 @@ public class D260NorthernBateleur(WorldState ws, Actor primary) : BossModule(ws,

public static readonly ArenaBoundsComplex Arena1 = new([new PolygonCustom(vertices1)]);
public static readonly ArenaBoundsComplex Arena2 = new([new PolygonCustom(vertices1), new PolygonCustom(vertices2)]);

protected override bool CheckPull() => Enemies(OID.IceSprite).Concat(Enemies(OID.Boss))
.Concat(Enemies(OID.Hrimthurs)).Concat(Enemies(OID.SnowcloakGoobbue)).Any(x => x.InCombat);
public static readonly uint[] Trash = [(uint)OID.IceSprite, (uint)OID.Boss, (uint)OID.Hrimthurs, (uint)OID.SnowcloakGoobbue];
protected override bool CheckPull() => Enemies(Trash).Any(x => x.InCombat && x.Position.AlmostEqual(Arena.Center, Bounds.Radius));

protected override void DrawEnemies(int pcSlot, Actor pc)
{
Arena.Actors(Enemies(OID.Hrimthurs).Concat(Enemies(OID.Boss)).Concat(Enemies(OID.SnowcloakGoobbue)).Concat(Enemies(OID.IceSprite)));
Arena.Actors(Enemies(Trash).Where(x => x.Position.AlmostEqual(Arena.Center, Bounds.Radius)));
}
}

0 comments on commit 886cbf2

Please sign in to comment.