Skip to content

Commit

Permalink
Merge pull request #64 from FFXIV-CombatReborn/EW-dungeon-blitz
Browse files Browse the repository at this point in the history
Preliminary EW Dungeon support
  • Loading branch information
LTS-FFXIV authored Apr 29, 2024
2 parents ad6fae1 + acdeede commit a48bd16
Show file tree
Hide file tree
Showing 36 changed files with 2,130 additions and 92 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ public enum AID : uint
ManusyaBioIII1 = 25236, // Boss->self, 4,0s cast, single-target
ManusyaBioIII2 = 25240, // Helper->self, 4,0s cast, range 40+R 180-degree cone
TransmuteFireIII = 25242, // Boss->self, 2,7s cast, single-target
Unknown = 25243, // Helper->Boss, 3,6s cast, single-target
Unknown = 25243, // Helper->Boss, 3,6s cast, single-target// Indicator, splatoon uses this for some reason to show aoes way sooner
ManusyaFire2 = 25699, // Boss->player, 2,0s cast, single-target
Dhrupad = 25244, // Boss->self, 4,0s cast, single-target, after this each of the non-tank players get hit once by a single-target spell (ManusyaBlizzard, ManusyaFire1, ManusyaThunder)
ManusyaFire1 = 25245, // Boss->player, no cast, single-target
ManusyaBlizzard = 25246, // Boss->player, no cast, single-target
ManusyaThunder = 25247, // Boss->player, no cast, single-target
TransmuteBlizzardIII = 25371, // Boss->self, 2,7s cast, single-target
TransmuteThunderIII = 25372, // Boss->self, 2,7s cast, single-target
TransmuteBioIII = 25373, // Boss->self, 2.7s cast, single-target
}

public enum SID : uint
Expand All @@ -42,6 +43,12 @@ public enum SID : uint
FireAlchemy = 2751, // Boss->Boss, extra=0x0
}

public enum IconID : uint
{
Icon_198 = 198, // player
}


class ManusyaBio(BossModule module) : Components.SingleTargetCast(module, ActionID.MakeSpell(AID.ManusyaBio), "Tankbuster + cleansable poison");

class Poison(BossModule module) : BossComponent(module)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ public enum SID : uint
WhoIsShe2 = 2654, // none->BerserkerSphere, extra=0x1A8
}

public enum IconID : uint
{
Icon_198 = 198, // player
}


class IsitvaSiddhi(BossModule module) : Components.SingleTargetCast(module, ActionID.MakeSpell(AID.IsitvaSiddhi));

class SphereShatter(BossModule module) : Components.GenericAOEs(module)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,14 @@ public enum SID : uint
Electrocution = 2086, // Minduruva->player, extra=0x0
}

public enum IconID : uint
{
Icon_198 = 198, // player
Icon_139 = 139, // player
Icon_62 = 62, // player
}


class Dhrupad(BossModule module) : BossComponent(module)
{
private int NumCasts;
Expand Down
82 changes: 82 additions & 0 deletions BossMod/Modules/Endwalker/Dungeon/D02TowerOfBabil/D021Barnabas.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
namespace BossMod.Endwalker.Dungeon.D02TowerOfBabil.D021Barnabas;

public enum OID : uint
{
Boss = 0x33F7,
Helper = 0x233C,
Thunderball = 0x33F8, // R1.000, x0 (spawn during fight)
}

public enum AID : uint
{
AutoAttack = 872, // Boss->player, no cast, single-target
DynamicPound = 25157, // Boss->self, 7.0s cast, range 40 width 6 rect
DynamicScrapline = 25158, // Boss->self, 7.0s cast, range 8 circle
ElectromagneticRelease1 = 25327, // Helper->self, 9.5s cast, range 40 width 6 rect
ElectromagneticRelease2 = 25329, // Helper->self, 9.5s cast, range 8 circle
GroundAndPound1 = 25159, // Boss->self, 3.5s cast, range 40 width 6 rect
GroundAndPound2 = 25322, // Boss->self, 3.5s cast, range 40 width 6 rect
RollingScrapline = 25323, // Boss->self, 3.0s cast, range 8 circle
Shock = 25330, // Thunderball->self, 3.0s cast, range 8 circle
ShockingForce = 25324, // Boss->players, 5.0s cast, range 6 circle
Thundercall = 25325, // Boss->self, 3.0s cast, single-target
Unknown1 = 24693, // Helper->self, no cast, range 50 width 50 rect
Unknown2 = 24694, // Helper->self, no cast, range 50 width 50 rect
Unknown3 = 25053, // Helper->self, no cast, range 50 circle
Unknown4 = 25054, // Helper->self, no cast, range 50 circle
}

public enum SID : uint
{
Eukrasia = 2606, // none->player, extra=0x0
VulnerabilityUp = 1789, // Boss->33F9/player, extra=0x1
Stun = 149, // Boss->33F9, extra=0x0
Stun2 = 2953, // none->player, extra=0x0
Electrocution = 2086, // none->player, extra=0x0

}

public enum IconID : uint
{
Icon_163 = 163, // player
Icon_162 = 162, // player
Icon_290 = 290, // Boss
Icon_62 = 62, // player
}

public enum TetherID : uint
{
Tether_28 = 28, // player->Boss
}
class ElectromagneticRelease1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ElectromagneticRelease1), new AOEShapeRect(40, 3));
class ElectromagneticRelease2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ElectromagneticRelease2), new AOEShapeCircle(8));

class GroundAndPound1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.GroundAndPound1), new AOEShapeRect(40, 6));
class GroundAndPound2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.GroundAndPound2), new AOEShapeRect(40, 6));

class DynamicPound(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.DynamicPound), new AOEShapeRect(40, 6));
class DynamicScrapline(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.DynamicScrapline), new AOEShapeCircle(8));
class RollingScrapline(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.RollingScrapline), new AOEShapeCircle(6));
class Shock(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Shock), new AOEShapeCircle(8));
class ShockingForce(BossModule module) : Components.StackWithCastTargets(module, ActionID.MakeSpell(AID.ShockingForce), 6, 8);


class D021BarnabasStates : StateMachineBuilder
{
public D021BarnabasStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<ElectromagneticRelease1>()
.ActivateOnEnter<ElectromagneticRelease2>()
.ActivateOnEnter<GroundAndPound1>()
.ActivateOnEnter<GroundAndPound2>()
.ActivateOnEnter<DynamicPound>()
.ActivateOnEnter<DynamicScrapline>()
.ActivateOnEnter<RollingScrapline>()
.ActivateOnEnter<Shock>()
.ActivateOnEnter<ShockingForce>();
}
}

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 785, NameID = 10279)]
public class D021Barnabas(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsCircle(new(-300, 71), 20));
53 changes: 53 additions & 0 deletions BossMod/Modules/Endwalker/Dungeon/D02TowerOfBabil/D022Lugae.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
namespace BossMod.Endwalker.Dungeon.D02TowerOfBabil.D022Lugae;

public enum OID : uint
{
Boss = 0x33FA,
Helper = 0x233C,
MagitekChakram = 0x33FB, // R3.000, x0 (spawn during fight)
MagitekExplosive = 0x33FC, // R2.000, x0 (spawn during fight)
}

public enum AID : uint
{
AutoAttack = 872, // Boss->player, no cast, single-target
Downpour = 25333, // Boss->self, 5.0s cast, single-target
Explosion = 25337, // MagitekExplosive->self, 7.0s cast, range 40 width 8 cross
MagitekChakram = 25331, // Boss->self, 5.0s cast, single-target
MagitekExplosive = 25336, // Boss->self, 5.0s cast, single-target
MagitekMissile = 25334, // Boss->self, 3.0s cast, single-target
MagitekRay = 25340, // Boss->self, 3.0s cast, range 50 width 6 rect
MightyBlow = 25332, // MagitekChakram->self, 7.0s cast, range 40 width 8 rect
SurfaceMissile = 25335, // Helper->location, 3.5s cast, range 6 circle
ThermalSuppression = 25338, // Boss->self, 5.0s cast, range 60 circle
}

public enum SID : uint
{
Minimum = 2504, // none->player, extra=0x14
Breathless = 2672, // none->player, extra=0x1/0x2/0x3/0x4/0x5/0x6
Heavy = 2391, // none->player, extra=0x32
Toad = 2671, // none->player, extra=0x1B1
}

class ThermalSuppression(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.ThermalSuppression));
class MagitekMissile(BossModule module) : Components.SpreadFromCastTargets(module, ActionID.MakeSpell(AID.MagitekMissile), 6);
class Explosion(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Explosion), new AOEShapeCross(40, 4));
class SurfaceMissile(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.SurfaceMissile), 6);
class MightyBlow(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.MightyBlow), new AOEShapeRect(40, 4));

class D022LugaeStates : StateMachineBuilder
{
public D022LugaeStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<ThermalSuppression>()
//.ActivateOnEnter<MightyBlow>()
.ActivateOnEnter<MagitekMissile>()
.ActivateOnEnter<Explosion>()
.ActivateOnEnter<SurfaceMissile>();
}
}

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 785, NameID = 10281)] // 10282
public class D022Lugae(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsSquare(new(220, 306), 20));
103 changes: 103 additions & 0 deletions BossMod/Modules/Endwalker/Dungeon/D02TowerOfBabil/D023Anima.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
namespace BossMod.Endwalker.Dungeon.D02TowerOfBabil.D023Anima;

public enum OID : uint
{
Boss = 0x33FD,
LowerAnima = 0x3400,
Helper = 0x233C,
MagitekCrane = 0x3320, // R0.600, x3
IronNail = 0x3401, // R1.000, x0 (spawn during fight)
LunarNail = 0x33FE, // R1.000, x0 (spawn during fight)
MegaGraviton = 0x33FF, // R1.000, x0 (spawn during fight)
Actor1eb239 = 0x1EB239, // R0.500, x0 (spawn during fight), EventObj type
}

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
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
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
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
}

public enum SID : uint
{
AreaOfInfluenceUp = 1749, // none->Helper, extra=0x1/0x2/0x3/0x4/0x5/0x6/0x7/0x8/0x9/0xA/0xB/0xC
UnknownStatus = 2849, // none->player, extra=0xEC7
}

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

public enum TetherID : uint
{
Tether_162 = 162, // Helper->Helper
Tether_57 = 57, // MegaGraviton->player
Tether_17 = 17, // MegaGraviton->player
Tether_22 = 22, // Helper->Boss
}
class CoffinScratch(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.CoffinScratch), 3);

class PhantomPain2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.PhantomPain2), new AOEShapeRect(20, 10));
class PaterPatriaeAOE(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.PaterPatriaeAOE), new AOEShapeRect(60, 4));
class CharnelClaw(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.CharnelClaw), new AOEShapeRect(40, 2.5f));

class ObliviatingClawSpawnAOE(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ObliviatingClawSpawnAOE), new AOEShapeCircle(3));
class AetherialPull(BossModule module) : Components.KnockbackFromCastTarget(module, ActionID.MakeSpell(AID.AetherialPull), 30, kind: Kind.TowardsOrigin);

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

class D023AnimaStates : StateMachineBuilder
{
public D023AnimaStates(BossModule module) : base(module)
{
TrivialPhase()
//.ActivateOnEnter<CoffinScratch>() //chasing aoe
//.ActivateOnEnter<PhantomPain2>() //bad squares, for some reason offset by 5 so displaying incorrectly
//.ActivateOnEnter<AetherialPull>()
.ActivateOnEnter<PaterPatriaeAOE>()
.ActivateOnEnter<CharnelClaw>()
.ActivateOnEnter<ObliviatingClawSpawnAOE>()
.ActivateOnEnter<MegaGraviton>();
}
}

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 785, NameID = 10285)] // 10288
public class D023Anima(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsSquare(new(0, -180), 20))
{
protected override void DrawEnemies(int pcSlot, Actor pc)
{
Arena.Actors(Enemies(OID.Boss), ArenaColor.Enemy);
Arena.Actors(Enemies(OID.LowerAnima), ArenaColor.Enemy);
}

protected override void UpdateModule()
{
if (Enemies(OID.Boss).Any(e => e.Position.AlmostEqual(new(0, -180), 50)))
Arena.Bounds = new ArenaBoundsSquare(new(0, -180), 20);
if (Enemies(OID.LowerAnima).Any(e => e.Position.AlmostEqual(new(0, -400), 50)))
Arena.Bounds = new ArenaBoundsSquare(new(0, -400), 20);
}
}
58 changes: 58 additions & 0 deletions BossMod/Modules/Endwalker/Dungeon/D03Vanaspati/D031Snatcher.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
namespace BossMod.Endwalker.Dungeon.D03Vanaspati.D031Snatcher;

public enum OID : uint
{
Boss = 0x33E8,
Helper = 0x233C,
}

public enum AID : uint
{
AutoAttack = 872, // Boss->player, no cast, single-target
LastGasp = 25141, // Boss->player, 5.0s cast, single-target
LostHope = 25143, // Boss->self, 4.0s cast, range 20 circle
MouthOff = 25137, // Boss->self, 3.0s cast, single-target
NoteOfDespair = 25144, // Boss->self, 5.0s cast, range 40 circle
Vitriol = 25138, // Helper->self, 9.0s cast, range 13 circle
Wallow = 25142, // Helper->player, 5.0s cast, range 6 circle
WhatIsLeft = 25140, // Boss->self, 8.0s cast, range 20 180-degree cone
WhatIsRight = 25139, // Boss->self, 8.0s cast, range 20 180-degree cone
}

public enum SID : uint
{
TemporaryMisdirection = 1422, // Boss->player, extra=0x2D0
}

public enum IconID : uint
{
Icon_218 = 218, // player
Icon_304 = 304, // player
}

class WhatIsLeft(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.WhatIsLeft), new AOEShapeCone(40, 90.Degrees()));
class WhatIsRight(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.WhatIsRight), new AOEShapeCone(40, 90.Degrees()));
class LostHope(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.LostHope), new AOEShapeCircle(20));
class Vitriol(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Vitriol), new AOEShapeCircle(13));
class NoteOfDespair(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.NoteOfDespair));
class Wallow(BossModule module) : Components.SpreadFromCastTargets(module, ActionID.MakeSpell(AID.Wallow), 6);
class LastGasp(BossModule module) : Components.SingleTargetCast(module, ActionID.MakeSpell(AID.LastGasp));


class D031SnatcherStates : StateMachineBuilder
{
public D031SnatcherStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<WhatIsLeft>()
.ActivateOnEnter<WhatIsRight>()
.ActivateOnEnter<LostHope>()
.ActivateOnEnter<Vitriol>()
.ActivateOnEnter<NoteOfDespair>()
.ActivateOnEnter<Wallow>()
.ActivateOnEnter<LastGasp>();
}
}

[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 789, NameID = 10717)] // 11049
public class D031Snatcher(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsCircle(new(-375, 85), 20));
Loading

0 comments on commit a48bd16

Please sign in to comment.