Skip to content

Commit

Permalink
Merge pull request #67 from FFXIV-CombatReborn/Alliance-Raids
Browse files Browse the repository at this point in the history
Various improvements to Dun Scaith
  • Loading branch information
LTS-FFXIV authored May 2, 2024
2 parents 3cac4bd + a04a293 commit 904c9a5
Show file tree
Hide file tree
Showing 22 changed files with 186 additions and 39 deletions.
22 changes: 16 additions & 6 deletions BossMod/Modules/Endwalker/Dungeon/D02TowerOfBabil/D023Anima.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,35 @@ public enum OID : uint
public enum AID : uint
{
AutoAttack = 25341, // Boss->player, no cast, single-target

AetherialPull = 25345, // MegaGraviton->player, 8.0s cast, single-target Knockback towardsorigin 30
BoundlessPain1 = 25347, // Boss->self, 8.0s cast, single-target
BoundlessPain2 = 25348, // Helper->location, no cast, range 6 circle

BoundlessPain1 = 25347, // Boss->self, 8.0s cast, single-target //players pulled to the center of the room and hit by a continuous AoE that slowly expands outwards
BoundlessPain2 = 25348, // Helper->location, no cast, range 6 circle
BoundlessPain3 = 25349, // Helper->location, no cast, range 6 circle

CharnelClaw = 25357, // IronNail->self, 6.0s cast, range 40 width 5 rect
CoffinScratch = 25358, // Helper->location, 3.5s cast, range 3 circle
Imperatum = 25353, // Boss->self, 5.0s cast, range 60 circle
LunarNail = 25342, // Boss->self, 3.0s cast, single-target
MegaGraviton = 25344, // Boss->self, 5.0s cast, range 60 circle

Imperatum = 25353, // Boss->self, 5.0s cast, range 60 circle //Players are pulled into the floor to face the lower half of Anima

LunarNail = 25342, // Boss->self, 3.0s cast, single-target

ObliviatingClaw1 = 25354, // LowerAnima->self, 3.0s cast, single-target
ObliviatingClaw2 = 25355, // LowerAnima->self, 3.0s cast, single-target
ObliviatingClawSpawnAOE = 25356, // IronNail->self, 6.0s cast, range 3 circle

Oblivion1 = 23697, // Helper->location, no cast, range 60 circle
Oblivion2 = 23872, // Helper->location, no cast, range 60 circle
Oblivion3 = 25359, // LowerAnima->self, 6.0s cast, single-target

MegaGraviton = 25344, // Boss->self, 5.0s cast, range 60 circle // Tether mechanic
PaterPatriaeAOE = 24168, // Helper->self, 3.5s cast, range 60 width 8 rect
PaterPatriae2 = 25350, // Boss->self, 3.5s cast, single-target

PhantomPain1 = 21182, // Boss->self, 7.0s cast, single-target
PhantomPain2 = 25343, // Helper->self, 7.0s cast, range 20 width 20 rect

Unknown1 = 23929, // Helper->player, no cast, single-target Knockback 60
Unknown2 = 26229, // Helper->self, no cast, range 60 circle Knockback towards origin 60
Unknown3 = 27228, // LowerAnima->self, no cast, single-target
Expand All @@ -47,7 +57,7 @@ public enum SID : uint

public enum IconID : uint
{
Icon_197 = 197, // player
Nox = 197, // player chasing AOE icon
}

public enum TetherID : uint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,5 +76,5 @@ public enum SID : uint

public enum IconID : uint
{
Icon_197 = 197, // player
Nox = 197, // player Nox Chasing AOE icon
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,56 @@
class DarkII(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.DarkII), new AOEShapeCone(50, 30.Degrees()));
class BoltOfDarkness3(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BoltOfDarkness3), new AOEShapeRect(31, 10));
class VoidDeath(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.VoidDeath), new AOEShapeCircle(10));
class VoidAeroII(BossModule module) : Components.BaitAwayCast(module, ActionID.MakeSpell(AID.VoidAeroII), new AOEShapeCircle(5), true);

//yoinked from Sephirot Unreal ans stripped down as both mechancics use the same logic and iconID
class VoidAeroII(BossModule module) : BossComponent(module)
{
private BitMask _greenTargets;
private BitMask _purpleTargets;

private static readonly float _greenRadius = 5;

public override void AddHints(int slot, Actor actor, TextHints hints)
{
if ((_greenTargets | _purpleTargets).None())
return;

bool clippedByGreen = Raid.WithSlot().Exclude(slot).IncludedInMask(_greenTargets).InRadius(actor.Position, _greenRadius).Any();
hints.Add($"Spread! (debuff: {(_greenTargets[slot] ? "green" : _purpleTargets[slot] ? "purple" : "none")})", clippedByGreen);
}

public override PlayerPriority CalcPriority(int pcSlot, Actor pc, int playerSlot, Actor player, ref uint customColor)
{
return (_greenTargets)[playerSlot] ? PlayerPriority.Interesting : PlayerPriority.Irrelevant;
}

public override void DrawArenaForeground(int pcSlot, Actor pc)
{
foreach (var (slot, actor) in Raid.WithSlot().IncludedInMask(_greenTargets))
Arena.AddCircle(actor.Position, _greenRadius, 0xff00ff00, slot == pcSlot ? 2 : 1);
}

public override void OnEventCast(Actor caster, ActorCastEvent spell)
{
switch ((AID)spell.Action.ID)
{
case AID.VoidAeroII:
_greenTargets.Clear(Raid.FindSlot(spell.MainTargetID));
break;
}
}

public override void OnEventIcon(Actor actor, uint iconID)
{
switch ((IconID)iconID)
{
case IconID.WindSpread:
_greenTargets.Set(Raid.FindSlot(actor.InstanceID));
break;
}
}
}

class VoidBlizzardIIIAOE(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.VoidBlizzardIIIAOE), new AOEShapeCone(60, 10.Degrees()));

class VoidAeroIVKB1(BossModule module) : Components.KnockbackFromCastTarget(module, ActionID.MakeSpell(AID.VoidAeroIVKB1), 37, kind: Kind.DirLeft, stopAtWall: true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,5 @@ public enum SID : uint

public enum IconID : uint
{
Icon_70 = 70, // player
WindSpread = 70,
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

class Blackbolt(BossModule module) : Components.StackWithCastTargets(module, ActionID.MakeSpell(AID.Blackbolt), 6, 8);

class Blackfire2(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.Blackfire2), 7);
class Blackfire2(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.Blackfire2), 7); // expanding aoe circle

class JestersJig1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.JestersJig1), new AOEShapeCircle(9));

Expand All @@ -18,13 +18,18 @@ class LuckyPierrot2(BossModule module) : Components.ChargeAOEs(module, ActionID.

class PetrifyingEye(BossModule module) : Components.CastGaze(module, ActionID.MakeSpell(AID.PetrifyingEye));

class Flameflow1(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.Flameflow1), 30);
class Flameflow1(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Flameflow1));
class Flameflow2(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Flameflow2));
class Flameflow3(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Flameflow3));

class Unknown4(BossModule module) : Components.ChargeAOEs(module, ActionID.MakeSpell(AID.Unknown4), 3);
class Unknown6(BossModule module) : Components.ChargeAOEs(module, ActionID.MakeSpell(AID.Unknown6), 3);

class AtmosAOE1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.AtmosAOE1), new AOEShapeCircle(20));
class AtmosAOE2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.AtmosAOE2), new AOEShapeCircle(20));
class AtmosDonut(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.AtmosDonut), new AOEShapeDonut(6, 20));


[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 220, NameID = 5509)]
public class A32FerdiadHollow(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsCircle(new(-350, 225), 30))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ public enum AID : uint

Sleight = 7321, // Boss->location, no cast, ???

Unknown1 = 7241, // WailingAtomos/CursingAtomos->self, 6.8s cast, single-target
Unknown2 = 7324, // WailingAtomos/CursingAtomos->self, 8.5s cast, single-target
Unknown3 = 7325, // WailingAtomos/CursingAtomos->self, 8.5s cast, single-target
AtmosAOE1 = 7241, // WailingAtomos/CursingAtomos->self, 6.8s cast, single-target // circle?
AtmosAOE2 = 7324, // WailingAtomos/CursingAtomos->self, 8.5s cast, single-target // circle?
AtmosDonut = 7325, // WailingAtomos/CursingAtomos->self, 8.5s cast, single-target // donut?

Unknown4 = 7326, // WailingAtomos->location, 3.0s cast, width 6 rect charge
Unknown5 = 7323, // WailingAtomos->self, 4.8s cast, single-target
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ public A32FerdiadHollowStates(BossModule module) : base(module)
.ActivateOnEnter<JongleursX>()
.ActivateOnEnter<JugglingSphere>()
.ActivateOnEnter<JugglingSphere2>()
.ActivateOnEnter<LuckyPierrot1>()
.ActivateOnEnter<LuckyPierrot2>()
.ActivateOnEnter<AtmosAOE1>()
.ActivateOnEnter<AtmosAOE2>()
.ActivateOnEnter<AtmosDonut>()
.ActivateOnEnter<PetrifyingEye>()
.ActivateOnEnter<Flameflow1>()
.ActivateOnEnter<Flameflow2>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ class AetherochemicalFlare(BossModule module) : Components.RaidwideCast(module,

class Rotoswipe(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Rotoswipe), new AOEShapeCone(11, 60.Degrees()));

class WreckingBall(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.WreckingBall), 8);

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 220, NameID = 3780)]
public class A33ProtoUltima(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsCircle(new(-350, -50), 30))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public enum AID : uint

Touchdown = 7580, // Boss->self, no cast, range 6+R circle

WreckingBall = 4557, // AllaganDreadnaught->location, 4.0s cast, range 8 circle

UnknownWeaponskill1 = 7584, // Boss->self, no cast, single-target
UnknownWeaponskill2 = 7585, // Boss->self, no cast, single-target
UnknownWeaponskill3 = 7586, // Boss->self, no cast, single-target
Expand All @@ -48,5 +50,10 @@ public enum AID : uint
public enum IconID : uint
{
Icon_62 = 62, // ProtoUltimaHelper2
Icon_197 = 197, // player
Nox = 197, // player chasing aoe icon
}

public enum TetherID : uint
{
Tether_12 = 12, // AetherCollector->Boss
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class A33ProtoUltimaStates : StateMachineBuilder
public A33ProtoUltimaStates(BossModule module) : base(module)
{
TrivialPhase()
//.ActivateOnEnter<AetherialPool>()
.ActivateOnEnter<WreckingBall>()
.ActivateOnEnter<AetherochemicalFlare>()
.ActivateOnEnter<AetherochemicalLaser1>()
.ActivateOnEnter<AetherochemicalLaser2>()
Expand Down
17 changes: 16 additions & 1 deletion BossMod/Modules/Heavensward/Alliance/A34Scathach/A34Scathach.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,22 @@ class ThirtyArrows1(BossModule module) : Components.LocationTargetedAOEs(module,
class Shadesmite2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Shadesmite2), new AOEShapeCircle(3));
class Shadesmite3(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Shadesmite3), new AOEShapeCircle(3));

class Nox1(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.Nox1), 10);
class Pitfall(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Pitfall));
class FullSwing(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.FullSwing));

class Nox : Components.StandardChasingAOEs
{
public Nox(BossModule module) : base(module, new AOEShapeCircle(10), ActionID.MakeSpell(AID.NoxAOEFirst), ActionID.MakeSpell(AID.NoxAOERest), 5.5f, 1.6f, 5)
{
ExcludedTargets = Raid.WithSlot(true).Mask();
}

public override void OnEventIcon(Actor actor, uint iconID)
{
if (iconID == (uint)IconID.Nox)
ExcludedTargets.Clear(Raid.FindSlot(actor.InstanceID));
}
}

class MarrowDrain(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.MarrowDrain), new AOEShapeCone(10, 60.Degrees()));
class BigHug(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BigHug), new AOEShapeRect(6, 1.5f));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,13 @@ public enum AID : uint
Manos = 7379, // Boss->self, no cast, single-target
MarrowDrain = 3342, // ShadowcourtHound->self, 3.0s cast, range 6+R 120-degree cone

Nox1 = 7458, // Connla->location, 5.0s cast, range 10 circle
Nox2 = 7457, // Connla->location, no cast, range 10 circle
NoxAOEFirst = 7458, // Connla->location, 5.0s cast, range 10 circle
NoxAOERest = 7457, // Connla->location, no cast, range 10 circle

ParticleBeam = 7464, // Connla->location, no cast, range 5 circle
ParticleBeam1 = 7463, // Connla->location, no cast, range 60 circle
ParticleBeam2 = 7464, // Connla->location, no cast, range 5 circle
Pitfall = 7377, // Connla->self, 5.0s cast, range 60 circle
FullSwing = 7378, // Connla2->self, 7.0s cast, range 60 circle

Shadesmite1 = 7453, // Connla->self, 1.5s cast, range 15 circle
Shadesmite2 = 7636, // Connla->self, 1.5s cast, range 3 circle
Expand Down Expand Up @@ -60,6 +62,7 @@ public enum AID : uint

Unknown = 7452, // Boss->self, no cast, range 15 circle
Unknown2 = 7376, // Connla2->self, no cast, single-target

VoidBlizzard = 7778, // ShadowcourtJester->player, 2.5s cast, single-target
}

Expand All @@ -73,12 +76,11 @@ public enum SID : uint
Riled = 1146, // none->Connla/Connla2/Boss, extra=0x0
Petrification = 610, // none->ShadowLimb, extra=0x0
EvasionDown = 32, // none->ShadowLimb, extra=0x0

}

public enum IconID : uint
{
Icon_197 = 197, // player
Nox = 197, // player
Icon_62 = 62, // player
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ public A34ScathachStates(BossModule module) : base(module)
.ActivateOnEnter<Shadesmite1>()
.ActivateOnEnter<Shadesmite2>()
.ActivateOnEnter<Shadesmite3>()
.ActivateOnEnter<Nox1>()
.ActivateOnEnter<Nox>()
.ActivateOnEnter<MarrowDrain>()
.ActivateOnEnter<Pitfall>()
.ActivateOnEnter<FullSwing>()
.ActivateOnEnter<BigHug>();
}
}
10 changes: 9 additions & 1 deletion BossMod/Modules/Heavensward/Alliance/A35Diabolos/A35Diabolos.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,12 @@ class RuinousOmen2(BossModule module) : Components.RaidwideCast(module, ActionID
class UltimateTerror(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.UltimateTerror), new AOEShapeDonut(5, 18));

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 220, NameID = 5526)]
public class A35Diabolos(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsCircle(new(-350, -445), 35));
public class A35Diabolos(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsCircle(new(-350, -445), 35))
{
protected override void DrawEnemies(int pcSlot, Actor pc)
{
Arena.Actor(PrimaryActor, ArenaColor.Enemy);
Arena.Actors(Enemies(OID.Deathgate), ArenaColor.Enemy);
Arena.Actors(Enemies(OID.Lifegate), ArenaColor.Enemy);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,29 @@ class HollowNightGaze(BossModule module) : Components.CastGaze(module, ActionID.
class ParticleBeam2(BossModule module) : Components.CastTowers(module, ActionID.MakeSpell(AID.ParticleBeam2), 5);
class ParticleBeam4(BossModule module) : Components.CastTowers(module, ActionID.MakeSpell(AID.ParticleBeam4), 5);

class Nox : Components.StandardChasingAOEs
{
public Nox(BossModule module) : base(module, new AOEShapeCircle(10), ActionID.MakeSpell(AID.NoxAOEFirst), ActionID.MakeSpell(AID.NoxAOERest), 5.5f, 1.6f, 5)
{
ExcludedTargets = Raid.WithSlot(true).Mask();
}

public override void OnEventIcon(Actor actor, uint iconID)
{
if (iconID == (uint)IconID.Nox)
ExcludedTargets.Clear(Raid.FindSlot(actor.InstanceID));
}
}

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 220, NameID = 5526)]
public class A36DiabolosHollow(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsCircle(new(-350, -445), 35));
public class A36DiabolosHollow(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsCircle(new(-350, -445), 35))
{
protected override void DrawEnemies(int pcSlot, Actor pc)
{
Arena.Actor(PrimaryActor, ArenaColor.Enemy);
Arena.Actors(Enemies(OID.Deathgate), ArenaColor.Enemy);
Arena.Actors(Enemies(OID.DiabolicGate), ArenaColor.Enemy);
Arena.Actors(Enemies(OID.Shadowsphere), ArenaColor.Enemy);
Arena.Actors(Enemies(OID.NightHound), ArenaColor.Enemy);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public enum OID : uint
Deathgate = 0x190A, // R3.200, x0 (spawn during fight)
DiabolicGate = 0x190B, // R3.200, x0 (spawn during fight)
Shadowsphere = 0x19AF, // R1.500, x0 (spawn during fight)
NightHound = 0x190E, // R5.850, x0 (spawn during fight)
}

public enum AID : uint
Expand All @@ -28,8 +29,8 @@ public enum AID : uint
HollowOmen2 = 7203, // Helper->self, 20.0s cast, range 30 circle
Hollowshield = 7198, // Boss->self, no cast, single-target

Nox1 = 7195, // Helper->location, no cast, range 10 circle
Nox2 = 7196, // Helper->location, 5.0s cast, range 10 circle
NoxAOEFirst = 7196, // Helper->location, 5.0s cast, range 10 circle
NoxAOERest = 7195, // Helper->location, no cast, range 10 circle

ParticleBeam1 = 7204, // Helper->location, no cast, range 60 circle
ParticleBeam2 = 7205, // Helper->location, no cast, range 5 circle
Expand All @@ -41,6 +42,10 @@ public enum AID : uint
Shadethrust = 7194, // Boss->location, 3.0s cast, range 40+R width 5 rect
UnknownAbility = 7192, // Boss->location, no cast, ???
VoidCall = 7188, // Deathgate->self, 9.0s cast, single-target

Attack = 870, // NightHound->player, no cast, single-target
RavenousBite = 7687, // NightHound->player, no cast, single-target

}

public enum SID : uint
Expand All @@ -63,7 +68,7 @@ public enum SID : uint

public enum IconID : uint
{
Icon_197 = 197, // player
Nox = 197, // player chasing AOE icon
Icon_91 = 91, // player
Icon_93 = 93, // player
Icon_40 = 40, // player
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public A36DiabolosHollowStates(BossModule module) : base(module)
.ActivateOnEnter<HollowOmen1>()
.ActivateOnEnter<HollowOmen2>()
.ActivateOnEnter<Blindside>()
//.ActivateOnEnter<EarthShaker2>()
.ActivateOnEnter<Nox>()
.ActivateOnEnter<HollowNight>()
.ActivateOnEnter<HollowNightGaze>()
.ActivateOnEnter<ParticleBeam2>()
Expand Down
Loading

0 comments on commit 904c9a5

Please sign in to comment.