Skip to content

Commit

Permalink
Merge pull request #443 from FFXIV-CombatReborn/Jeuno
Browse files Browse the repository at this point in the history
Jeuno First Walk WIP modules
  • Loading branch information
LTS-FFXIV authored Nov 17, 2024
2 parents 0886036 + a1a62c7 commit f7ae0e2
Show file tree
Hide file tree
Showing 12 changed files with 704 additions and 0 deletions.
21 changes: 21 additions & 0 deletions BossMod/Modules/Dawntrail/Alliance/A11Prishe/A11Prishe.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace BossMod.Dawntrail.Alliance.A11Prishe;

class Banishga(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Banishga));

// Knuckle Sandwich and Brittle Impact happen at the same time and need to be staggered
class KnuckleSandwichAOE1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.KnuckleSandwichAOE1), new AOEShapeCircle(9));
class KnuckleSandwichAOE2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.KnuckleSandwichAOE2), new AOEShapeCircle(18));
class KnuckleSandwichAOE3(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.KnuckleSandwichAOE3), new AOEShapeCircle(27));
class BrittleImpact1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BrittleImpact1), new AOEShapeDonut(9, 60));
class BrittleImpact2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BrittleImpact2), new AOEShapeDonut(18, 60));
class BrittleImpact3(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BrittleImpact3), new AOEShapeDonut(27, 60));

class NullifyingDropkick1(BossModule module) : Components.CastSharedTankbuster(module, ActionID.MakeSpell(AID.NullifyingDropkick1), 6);

class Holy2(BossModule module) : Components.SpreadFromCastTargets(module, ActionID.MakeSpell(AID.Holy2), 6);

class BanishgaIV(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.BanishgaIV));
class Explosion(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Explosion), new AOEShapeCircle(8));

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "The Combat Reborn Team (LTS)", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 1015, NameID = 13351)]
public class A11Prishe(WorldState ws, Actor primary) : BossModule(ws, primary, new(800, 400), new ArenaBoundsSquare(35));
82 changes: 82 additions & 0 deletions BossMod/Modules/Dawntrail/Alliance/A11Prishe/A11PrisheEnums.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
namespace BossMod.Dawntrail.Alliance.A11Prishe;

public enum OID : uint
{
Helper = 0x233C, // R0.500, x?, Helper type
Unknown1 = 0x46CF, // R1.200, x?
Unknown2 = 0x4696, // R0.465, x?
SpatialRift = 0x1EBCD1, // R0.500, x?, EventObj type
Boss = 0x4673, // R6.342, x?
BakoolJaJa = 0x4697, // R3.150, x?
LuminousRemnant = 0x4674, // R1.000-1.860, x?
Actor1ebcc9 = 0x1EBCC9, // R0.500, x?, EventObj type
}

public enum AID : uint
{
AutoAttack = 40934, // 4673->player, no cast, single-target
Banishga = 40935, // 4673->self, 5.0s cast, range 80 circle
UnknownAbility = 40933, // 4673->location, no cast, single-target

KnuckleSandwich1 = 40936, // 4673->location, 12.0+1.0s cast, single-target
KnuckleSandwich2 = 40937, // 4673->location, 12.0+1.0s cast, single-target
KnuckleSandwich3 = 40938, // 4673->location, 12.0+1.0s cast, single-target
KnuckleSandwichAOE1 = 40939, // 233C->self, 13.0s cast, range 9 circle
KnuckleSandwichAOE2 = 40940, // 233C->self, 13.0s cast, range 18 circle
KnuckleSandwichAOE3 = 40941, // 233C->self, 13.0s cast, range 27 circle

BrittleImpact1 = 40942, // 233C->self, 14.5s cast, range ?-60 donut
BrittleImpact2 = 40943, // 233C->self, 14.5s cast, range ?-60 donut
BrittleImpact3 = 40944, // 233C->self, 14.5s cast, range ?-60 donut

NullifyingDropkick1 = 40945, // 4673->players, 5.0+1.5s cast, range 6 circle
NullifyingDropkick2 = 40957, // 233C->players, 6.5s cast, range 6 circle

BanishStorm = 40946, // 4673->self, 4.0s cast, single-target // Marching AOEs
Banish = 40947, // 233C->self, no cast, range 6 circle

Holy1 = 40962, // 4673->self, 4.0+1.0s cast, single-target
Holy2 = 40963, // 233C->players, 5.0s cast, range 6 circle // Spread Markers

CrystallineThorns = 40948, // 4673->self, 4.0+1.0s cast, single-target // Arena Change
Thornbite = 40949, // 233C->self, no cast, range 80 circle

// AuroralUppercut1 = 40950, // 4673->self, 11.4+1.6s cast, single-target // Suspected single space cast
AuroralUppercut2 = 40951, // 4673->self, 11.4+1.6s cast, single-target // Suspected two space cast
AuroralUppercut3 = 40952, // 4673->self, 11.4+1.6s cast, single-target // Definitely 3 space cast
AuroralUppercut4 = 40953, // 233C->self, no cast, range 80 circle

BanishgaIV = 40954, // 4673->self, 5.0s cast, range 80 circle // Raidwide that spawns AOEs
Explosion = 40955, // 4674->self, 5.0s cast, range 8 circle

AsuranFists1 = 40956, // 4673->self, 6.5+0.5s cast, single-target
AsuranFists2 = 40958, // 233C->self, no cast, range 6 circle
AsuranFists3 = 40959, // 233C->self, no cast, range 6 circle
AsuranFists4 = 40960, // 233C->self, no cast, range 6 circle
}

public enum SID : uint
{
LightResistanceDown = 2278, // Helper->player, extra=0x0
Stun1 = 4378, // none->player, extra=0x0
Stun2 = 4374, // none->player, extra=0x0
SustainedDamage1 = 2935, // Helper->player, extra=0x0
SustainedDamage2 = 3795, // none->LuminousRemnant, extra=0x1
Unknown1 = 2195, // none->Boss, extra=0x338
Unknown2 = 2056, // none->Boss, extra=0x339
Unknown3 = 3517, // Helper->player, extra=0x0
VulnerabilityUp1 = 1789, // Helper/LuminousRemnant->player, extra=0x1/0x2/0x3/0x4
VulnerabilityUp2 = 3366, // none->player, extra=0x0
}

public enum IconID : uint
{
Icon570 = 570, // player->self
Icon215 = 215, // player->self
}

public enum TetherID : uint
{
Tether215 = 215, // Unknown1->Boss
Tether297 = 297, // player->Unknown1
}
20 changes: 20 additions & 0 deletions BossMod/Modules/Dawntrail/Alliance/A11Prishe/A11PrisheStates.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace BossMod.Dawntrail.Alliance.A11Prishe;

class A11PrisheStates : StateMachineBuilder
{
public A11PrisheStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<Banishga>()
.ActivateOnEnter<KnuckleSandwichAOE1>()
.ActivateOnEnter<KnuckleSandwichAOE2>()
.ActivateOnEnter<KnuckleSandwichAOE3>()
.ActivateOnEnter<BrittleImpact1>()
.ActivateOnEnter<BrittleImpact2>()
.ActivateOnEnter<BrittleImpact3>()
.ActivateOnEnter<NullifyingDropkick1>()
.ActivateOnEnter<Holy2>()
.ActivateOnEnter<BanishgaIV>()
.ActivateOnEnter<Explosion>();
}
}
64 changes: 64 additions & 0 deletions BossMod/Modules/Dawntrail/Alliance/A12Fafnir/A12Fafnir.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
namespace BossMod.Dawntrail.Alliance.A12Fafnir;

class DarkMatterBlast(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.DarkMatterBlast));
class HorridRoar2(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.HorridRoar2), 4);
class HorridRoar3(BossModule module) : Components.SpreadFromCastTargets(module, ActionID.MakeSpell(AID.HorridRoar3), 8);
class SpikeFlail(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.SpikeFlail), new AOEShapeCone(80, 135.Degrees()));
class Touchdown(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Touchdown), new AOEShapeCircle(27));

class HurricaneWing1(BossModule module) : Components.ConcentricAOEs(module, _shapes)
{
private static readonly AOEShape[] _shapes = [new AOEShapeCircle(9), new AOEShapeDonut(9, 16), new AOEShapeDonut(16, 23), new AOEShapeDonut(23, 30)];

public override void OnCastStarted(Actor caster, ActorCastInfo spell)
{
if ((AID)spell.Action.ID == AID.HurricaneWing7)
AddSequence(Arena.Center, Module.CastFinishAt(spell));
}

public override void OnEventCast(Actor caster, ActorCastEvent spell)
{
if (Sequences.Count > 0)
{
var order = (AID)spell.Action.ID switch
{
AID.HurricaneWing7 => 0,
AID.HurricaneWing8 => 1,
AID.HurricaneWing9 => 2,
AID.HurricaneWing10 => 3,
_ => -1
};
AdvanceSequence(order, Arena.Center, WorldState.FutureTime(3));
}
}
}

class HurricaneWing2(BossModule module) : Components.ConcentricAOEs(module, _shapes)
{
private static readonly AOEShape[] _shapes = [new AOEShapeCircle(9), new AOEShapeDonut(9, 16), new AOEShapeDonut(16, 23), new AOEShapeDonut(23, 30)];

public override void OnCastStarted(Actor caster, ActorCastInfo spell)
{
if ((AID)spell.Action.ID == AID.HurricaneWing11)
AddSequence(Arena.Center, Module.CastFinishAt(spell));
}

public override void OnEventCast(Actor caster, ActorCastEvent spell)
{
if (Sequences.Count > 0)
{
var order = (AID)spell.Action.ID switch
{
AID.HurricaneWing11 => 0,
AID.HurricaneWing12 => 1,
AID.HurricaneWing13 => 2,
AID.HurricaneWing14 => 3,
_ => -1
};
AdvanceSequence(order, Arena.Center, WorldState.FutureTime(3));
}
}
}

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "The Combat Reborn Team (LTS)", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 1015, NameID = 13662)]
public class A12Fafnir(WorldState ws, Actor primary) : BossModule(ws, primary, new(-500, 600), new ArenaBoundsCircle(35));
101 changes: 101 additions & 0 deletions BossMod/Modules/Dawntrail/Alliance/A12Fafnir/A12FafnirEnums.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
namespace BossMod.Dawntrail.Alliance.A12Fafnir;

public enum OID : uint
{
Actor1e8f2f = 0x1E8F2F, // R0.500, x1, EventObj type
Actor1e8fb8 = 0x1E8FB8, // R2.000, x1, EventObj type
Actor1ebccb = 0x1EBCCB, // R0.500, x4, EventObj type
BakoolJaJa = 0x4697, // R3.150, x1
BitingWind = 0x41E8, // R1.000, x6
Boss = 0x41E5, // R17.000, x1
Darter = 0x41E9, // R2.250, x0 (spawn during fight)
Helper = 0x233C, // R0.500, x43, Helper type
RavagingWind = 0x41E7, // R3.000, x3
SpatialRift = 0x1EBCD6, // R0.500, x1, EventObj type
Teleporter = 0x1EBCCE, // R0.500, x1, EventObj type
Unknown = 0x41E6, // R1.000, x3
}

public enum AID : uint
{
AutoAttack1 = 40633, // Darter->player, no cast, single-target
AutoAttack2 = 40860, // Boss->player, no cast, single-target

AbsoluteTerror1 = 40845, // Boss->self, 6.0+1.4s cast, single-target
AbsoluteTerror2 = 40846, // Helper->self, 7.4s cast, range 70 width 20 rect

BalefulNail = 40812, // Boss->location, no cast, single-target // Four hit line AOE
DarkMatterBlast = 40854, // Boss->self, 5.0s cast, range 70 circle

GreatWhirlwind1 = 39873, // RavagingWind->self, 4.5s cast, range 10 circle
GreatWhirlwind2 = 39874, // BitingWind->self, 4.5s cast, range 3 circle
GreatWhirlwind3 = 40843, // Helper->self, no cast, range 9 circle
GreatWhirlwind4 = 40844, // Helper->self, no cast, range 3 circle

HorridRoar1 = 40849, // Boss->self, 3.0s cast, single-target
HorridRoar2 = 40850, // Helper->location, 4.0s cast, range 4 circle
HorridRoar3 = 40851, // Helper->players, 5.0s cast, range 8 circle // Spreadmarker

HurricaneWing1 = 40817, // Boss->self, 3.0+2.5s cast, single-target
HurricaneWing2 = 40818, // Helper->self, no cast, range 70 circle
HurricaneWing3 = 40819, // Helper->self, no cast, range 70 circle
HurricaneWing4 = 40820, // Helper->self, no cast, range 70 circle
HurricaneWing5 = 40821, // Helper->self, no cast, range 70 circle
HurricaneWing6 = 40822, // Helper->self, no cast, range 70 circle

// Concentric AOEs
HurricaneWing7 = 40829, // Helper->self, 5.0s cast, range 9 circle
HurricaneWing8 = 40830, // Helper->self, 7.0s cast, range 9-16 donut
HurricaneWing9 = 40831, // Helper->self, 9.0s cast, range 16-23 donut
HurricaneWing10 = 40832, // Helper->self, 11.0s cast, range 23-30 donut

// Concentric AOEs
HurricaneWing11 = 40839, // Helper->self, 4.0s cast, range 9 circle
HurricaneWing12 = 40840, // Helper->self, 6.0s cast, range 9-16 donut
HurricaneWing13 = 40841, // Helper->self, 8.0s cast, range 16-23 donut
HurricaneWing14 = 40842, // Helper->self, 10.0s cast, range 23-30 donut

HurricaneWing15 = 41302, // Helper->self, no cast, range 70 circle
HurricaneWing16 = 41303, // Helper->self, no cast, range 70 circle
HurricaneWing17 = 41304, // Helper->self, no cast, range 70 circle
HurricaneWing18 = 41305, // Helper->self, no cast, range 70 circle

OffensivePosture1 = 40811, // Boss->self, 8.0+1.0s cast, single-target
OffensivePosture2 = 40814, // Boss->self, 8.0+1.1s cast, single-target
OffensivePosture3 = 40816, // Boss->self, 8.0+1.2s cast, single-target

SpikeFlail = 41114, // Helper->self, 9.0s cast, range 80 270.000-degree cone // Rear cone aoe
DragonBreath = 40815, // Helper->self, no cast, range ?-30 donut // Donut, inner circle is boss hitbox
Touchdown = 41116, // Helper->self, 9.2s cast, range 24 circle // Point blank AOE, likely slightly larger than Boss hitbox

PestilentSphere = 40859, // Darter->player, 5.0s cast, single-target

SharpSpike1 = 40855, // Boss->self, 5.0+1.0s cast, single-target // AOE tankbusters on all 3 tanks
SharpSpike2 = 40856, // Helper->player, no cast, range 4 circle

ShudderingEarth = 40857, // Boss->location, no cast, single-target

WingedTerror1 = 40847, // Boss->self, 6.0+1.4s cast, single-target
WingedTerror2 = 40848, // Helper->self, 7.4s cast, range 70 width 25 rect
}

public enum SID : uint
{
Bleeding = 3077, // none->player, extra=0x0
Burns1 = 1787, // Boss->player, extra=0x0
Burns2 = 2194, // Boss->player, extra=0x0
Concussion = 997, // Helper->player, extra=0xF43
DirectionalDisregard = 3808, // none->Boss, extra=0x0
Hysteria = 296, // Helper->player, extra=0x0
Liftoff = 4377, // Helper->player, extra=0x0
Stun = 4433, // Helper->player, extra=0x0
Unknown = 2056, // none->Boss, extra=0x328/0x346/0x347/0x327/0x348
VulnerabilityUp = 1789, // Helper->player, extra=0x1/0x4/0x2/0x3/0x5
Windburn = 2947, // Helper->player, extra=0x0
}

public enum IconID : uint
{
Icon342 = 342, // player->self
Icon499 = 499, // player->self
}
15 changes: 15 additions & 0 deletions BossMod/Modules/Dawntrail/Alliance/A12Fafnir/A12FafnirStates.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace BossMod.Dawntrail.Alliance.A12Fafnir;

class A12FafnirStates : StateMachineBuilder
{
public A12FafnirStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<DarkMatterBlast>()
.ActivateOnEnter<HorridRoar2>()
.ActivateOnEnter<HorridRoar3>()
.ActivateOnEnter<SpikeFlail>()
.ActivateOnEnter<Touchdown>()
.ActivateOnEnter<HurricaneWing1>();
}
}
29 changes: 29 additions & 0 deletions BossMod/Modules/Dawntrail/Alliance/A13ArkAngels/A13ArkAngels.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
namespace BossMod.Dawntrail.Alliance.A13ArkAngels;

class Cloudsplitter2(BossModule module) : Components.SpreadFromCastTargets(module, ActionID.MakeSpell(AID.Cloudsplitter2), 6);

class TachiGekko(BossModule module) : Components.CastGaze(module, ActionID.MakeSpell(AID.TachiGekko));
class TachiKasha(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.TachiKasha), new AOEShapeCircle(4));
class TachiYukikaze(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.TachiYukikaze), new AOEShapeRect(70, 2.5f, 70));
class ConcertedDissolution(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ConcertedDissolution), new AOEShapeCone(40, 15.Degrees()));
class LightsChain(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.LightsChain), new AOEShapeDonut(6, 60));
class Guillotine1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Guillotine1), new AOEShapeCone(80, 135.Degrees()));
class DominionSlash(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.DominionSlash));
class DivineDominion(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.DivineDominion), new AOEShapeCircle(6));
class CrossReaver2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.CrossReaver2), new AOEShapeCross(50, 6));
class Holy(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Holy));
class SpiralFinish2(BossModule module) : Components.KnockbackFromCastTarget(module, ActionID.MakeSpell(AID.SpiralFinish2), 16, stopAtWall: true, kind: Kind.AwayFromOrigin);

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "The Combat Reborn Team (LTS)", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 1015, NameID = 13640)]
public class A13ArkAngels(WorldState ws, Actor primary) : BossModule(ws, primary, new(865, -820), new ArenaBoundsCircle(30))
{
protected override void DrawEnemies(int pcSlot, Actor pc)
{
Arena.Actor(PrimaryActor);
Arena.Actors(Enemies(OID.ArkAngelGK));
Arena.Actors(Enemies(OID.ArkAngelHM));
Arena.Actors(Enemies(OID.ArkAngelEV));
Arena.Actors(Enemies(OID.ArkAngelTT));
Arena.Actors(Enemies(OID.ArkShield));
}
}
Loading

0 comments on commit f7ae0e2

Please sign in to comment.