From f621f76a9d3dfebc83e8d253f1264710f0dd8212 Mon Sep 17 00:00:00 2001 From: LTS-FFXIV <127939494+LTS-FFXIV@users.noreply.github.com> Date: Sat, 27 Apr 2024 18:49:18 -0500 Subject: [PATCH] first pass at rightside routes for Sildihn Sub --- .../Variant/V01SS/V011Geryon/V011Geryon.cs | 12 ++++ .../V01SS/V011Geryon/V011GeryonEnums.cs | 37 +++++++++++ .../V01SS/V011Geryon/V011GeryonStates.cs | 34 +++++++++++ .../V01SS/V014ZelessGah/V014ZelessGah.cs | 4 ++ .../V01SS/V014ZelessGah/V014ZelessGahEnums.cs | 53 ++++++++++++++++ .../V014ZelessGah/V014ZelessGahStates.cs | 29 +++++++++ .../V015ThroneKnight/V015ThorneKnight.cs | 4 ++ .../V015ThroneKnight/V015ThorneKnightEnums.cs | 61 +++++++++++++++++++ .../V015ThorneKnightStates.cs | 38 ++++++++++++ 9 files changed, 272 insertions(+) create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011Geryon.cs create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011GeryonEnums.cs create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011GeryonStates.cs create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGah.cs create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGahEnums.cs create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGahStates.cs create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnight.cs create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnightEnums.cs create mode 100644 BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnightStates.cs diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011Geryon.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011Geryon.cs new file mode 100644 index 0000000000..230035dbbb --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011Geryon.cs @@ -0,0 +1,12 @@ +namespace BossMod.Endwalker.Variant.V01SS.V011Geryon; + +[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", PrimaryActorOID = (uint)OID.Boss, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 868, NameID = 11442)] +public class V011Geryon(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsSquare(new(183, 176.99f), 19.5f)) +{ + protected override void DrawEnemies(int pcSlot, Actor pc) + { + Arena.Actor(PrimaryActor, ArenaColor.Enemy); + Arena.Actors(Enemies(OID.PowderKegRed), ArenaColor.Enemy); + Arena.Actors(Enemies(OID.PowderKegBlue), ArenaColor.Enemy); + } +} \ No newline at end of file diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011GeryonEnums.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011GeryonEnums.cs new file mode 100644 index 0000000000..80e4a4d602 --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011GeryonEnums.cs @@ -0,0 +1,37 @@ +namespace BossMod.Endwalker.Variant.V01SS.V011Geryon; + +public enum OID : uint +{ + Helper = 0x233C, // R0.500, x10, 523 type + Boss = 0x398B, // R9.600, x1 + RustyWinch = 0x1EB7CD, // R0.500, x1, EventObj type + CisternSwitch = 0x1EB7D2, // R2.000, x0 (spawn during fight), EventObj type + PowderKegRed = 0x39C9, // R1.000, x0 (spawn during fight) + PowderKegBlue = 0x398C, // R1.000, x0 (spawn during fight) +} + +public enum AID : uint +{ + AutoAttack = 6499, // Boss->player, no cast, single-target + ColossalCharge1 = 29900, // Boss->location, 8.0s cast, width 14 rect charge + ColossalCharge2 = 29901, // Boss->location, 8.0s cast, width 14 rect charge + ColossalLaunch = 29896, // Boss->self, 5.0s cast, range 40 width 40 rect + ColossalSlam = 29904, // Boss->self, 6.0s cast, range 60 60-degree cone + ColossalStrike = 29903, // Boss->player, 5.0s cast, single-target + ColossalSwing = 29905, // Boss->self, 5.0s cast, range 60 180-degree cone + ExplodingCatapult = 29895, // Boss->self, 5.0s cast, range 60 circle + ExplosionAOE = 29908, // PowderKegBlue/PowderKegRed->self, 2.5s cast, range 15 circle + ExplosionDonut = 29909, // PowderKegRed/PowderKegBlue->self, 2.5s cast, range 5-17 donut + GigantomillFirst = 29897, // Boss->self, 8.0s cast, range 72 width 10 cross + GigantomillRest = 29899, // Boss->self, no cast, range 72 width 10 cross + SubterraneanShudder = 29906, // Boss->self, 5.0s cast, range 60 circle raidwide + Unknown1 = 29894, // Boss->location, no cast, single-target + Unknown2 = 31260, // PowderKegRed->self, no cast, single-target + Unknown3 = 29907, // PowderKegBlue->self, no cast, single-target +} + +public enum IconID : uint +{ + Icon_218 = 218, // player + Icon_157 = 157, // Boss +} diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011GeryonStates.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011GeryonStates.cs new file mode 100644 index 0000000000..44b0c30d01 --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V011Geryon/V011GeryonStates.cs @@ -0,0 +1,34 @@ +namespace BossMod.Endwalker.Variant.V01SS.V011Geryon; + +class ColossalStrike(BossModule module) : Components.SingleTargetCast(module, ActionID.MakeSpell(AID.ColossalStrike)); + +class ColossalCharge1(BossModule module) : Components.ChargeAOEs(module, ActionID.MakeSpell(AID.ColossalCharge1), 7); +class ColossalCharge2(BossModule module) : Components.ChargeAOEs(module, ActionID.MakeSpell(AID.ColossalCharge2), 7); + +class ColossalLaunch(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ColossalLaunch), new AOEShapeRect(20, 20)); +class ExplosionAOE(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ExplosionAOE), new AOEShapeCircle(15)); +class ExplosionDonut(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ExplosionDonut), new AOEShapeDonut(5, 17)); + +class ColossalSlam(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ColossalSlam), new AOEShapeCone(60, 60.Degrees())); +class ColossalSwing(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ColossalSwing), new AOEShapeCone(60, 180.Degrees())); + +class SubterraneanShudder(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.SubterraneanShudder)); + + +class V011GeryonStates : StateMachineBuilder +{ + public V011GeryonStates(BossModule module) : base(module) + { + TrivialPhase() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter(); + } +} \ No newline at end of file diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGah.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGah.cs new file mode 100644 index 0000000000..c20b86cc6e --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGah.cs @@ -0,0 +1,4 @@ +namespace BossMod.Endwalker.Variant.V01SS.V014ZelessGah; + +[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", PrimaryActorOID = (uint)OID.Boss, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 868, NameID = 11394)] +public class V014ZelessGah(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsRect(new(289, -105), 15, 20)); diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGahEnums.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGahEnums.cs new file mode 100644 index 0000000000..60d7a294f1 --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGahEnums.cs @@ -0,0 +1,53 @@ +namespace BossMod.Endwalker.Variant.V01SS.V014ZelessGah; +public enum OID : uint +{ + Boss = 0x39A9, // R9.000, x1 + Helper = 0x233C, // R0.500, x32, 523 type + + InfernBrand1 = 0x39AD, // R2.000, x4 + InfernBrand2 = 0x39AB, // R2.000, x6 + MyrrhIncenseBurner = 0x1EB7CF, // R2.000, x1, EventObj type + ForebodingDoor = 0x1EB7CE, // R0.500, x1, EventObj type + BallOfFire = 0x39AF, // R1.000, x0 (spawn during fight) +} + +public enum AID : uint +{ + AutoAttack = 6499, // Boss->player, no cast, single-target + Burn = 29839, // BallOfFire->self, 1.5s cast, range 12 circle + + CastShadow1 = 29850, // Boss->self, 4.8s cast, single-target + CastShadowFirst = 29851, // Helper->self, 5.5s cast, range 65 ?-degree cone + CastShadowNext = 29853, // Helper->self, 7.5s cast, range 65 ?-degree cone + + CrypticPortal1 = 29842, // Boss->self, 5.0s cast, single-target + CrypticPortal2 = 29843, // Boss->self, 8.0s cast, single-target + + FiresteelFracture = 29868, // Boss->self/player, 5.0s cast, range 40 ?-degree cone + InfernBrand = 29841, // Boss->self, 4.0s cast, single-target + + InfernGale1 = 29858, // Boss->self, 4.0s cast, single-target + InfernGale2 = 29859, // Helper->player, no cast, single-target + + InfernWard = 29846, // Boss->self, 4.0s cast, single-target + PureFire1 = 29855, // Boss->self, 3.0s cast, single-target + PureFire2 = 29856, // Helper->location, 3.0s cast, range 6 circle + ShowOfStrength = 29870, // Boss->self, 5.0s cast, range 65 circle + + Unknown1 = 29845, // Helper->InfernBrand1/InfernBrand2, no cast, single-target + Unknown2 = 29847, // Helper->self, no cast, single-target + Unknown3 = 29886, // Boss->location, no cast, single-target +} + +public enum SID : uint +{ + UnknownStatus = 2397, // none->InfernBrand1/InfernBrand2, extra=0x1CA/0x1C1/0x1F3 + ForbiddenPassage = 3278, // none->player, extra=0x0 + VulnerabilityUp = 1789, // BallOfFire->player, extra=0x1 + +} + +public enum IconID : uint +{ + Icon_230 = 230, // player +} diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGahStates.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGahStates.cs new file mode 100644 index 0000000000..42b2400fe7 --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V014ZelessGah/V014ZelessGahStates.cs @@ -0,0 +1,29 @@ +namespace BossMod.Endwalker.Variant.V01SS.V014ZelessGah; + +class Burn(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Burn), new AOEShapeCircle(12)); +class PureFire2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.PureFire2), new AOEShapeCircle(6)); + + +class CastShadowFirst(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.CastShadowFirst), new AOEShapeCone(50, 45.Degrees())); +class CastShadowNext(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.CastShadowNext), new AOEShapeCone(50, 45.Degrees())); + +class FiresteelFracture(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.FiresteelFracture), new AOEShapeCone(50, 45.Degrees())); + +class InfernGaleKnockback(BossModule module) : Components.KnockbackFromCastTarget(module, ActionID.MakeSpell(AID.Unknown2), 20, shape: new AOEShapeCircle(80)); + +class ShowOfStrength(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.ShowOfStrength)); + +class V014ZelessGahStates : StateMachineBuilder +{ + public V014ZelessGahStates(BossModule module) : base(module) + { + TrivialPhase() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter(); + } +} \ No newline at end of file diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnight.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnight.cs new file mode 100644 index 0000000000..9d0943502f --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnight.cs @@ -0,0 +1,4 @@ +namespace BossMod.Endwalker.Variant.V01SS.V015ThorneKnight; + +[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "CombatReborn Team", PrimaryActorOID = (uint)OID.Boss, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 868, NameID = 11419)] +public class V015ThorneKnight(WorldState ws, Actor primary) : BossModule(ws, primary, new ArenaBoundsRect(new(289, -230), 20, 20, 45.Degrees())); \ No newline at end of file diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnightEnums.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnightEnums.cs new file mode 100644 index 0000000000..44cc3f8755 --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnightEnums.cs @@ -0,0 +1,61 @@ +namespace BossMod.Endwalker.Variant.V01SS.V015ThorneKnight; + +public enum OID : uint +{ + Boss = 0x3917, // R7.200, x1 + Helper = 0x233C, // R0.500, x23, 523 type + + AmaljaaArtilleryCarriage = 0x394A, // R0.500, x12 + BallOfFire = 0x3989, // R1.500, x0 (spawn during fight) + MagickedPuppet = 0x3949, // R0.500, x12 +} + +public enum AID : uint +{ + AutoAttack = 6497, // Boss->player, no cast, single-target + + BlazingBeacon1 = 28921, // Helper->self, 8.5s cast, range 50 width 16 rect + BlazingBeacon2 = 28926, // Helper->self, 6.5s cast, range 50 width 16 rect + BlazingBeacon3 = 28928, // Helper->self, 8.5s cast, range 50 width 16 rect + + BlisteringBlow = 28906, // Boss->player, 5.0s cast, single-target + Cogwheel = 28907, // Boss->self, 5.0s cast, range 50 circle + Explosion = 28925, // BallOfFire->self, 7.0s cast, range 50 width 6 cross + ForeHonor = 28908, // Boss->self, 6.0s cast, range 50 180-degree cone + + MagicCannon = 28919, // MagickedPuppet->self, no cast, range 45 width 6 rect + AmaljaaArtillery = 28920, // AmaljaaArtilleryCarriage->self, no cast, range 45 width 6 rect + + SacredFlay1 = 28922, // Helper->self, 8.5s cast, range 50 ?-degree cone + SacredFlay2 = 28927, // Helper->self, 6.5s cast, range 50 ?-degree cone + SacredFlay3 = 28929, // Helper->self, 8.5s cast, range 50 ?-degree cone + + + BlazeOfGlory = 28916, // Boss->self, 3.0s cast, single-target + SignalFlare1 = 28917, // Boss->self, 5.5s cast, single-target + SignalFlareAOE = 28923, // Helper->self, 7.0s cast, range 10 circle + + Slashburn1 = 28911, // Boss->self, 8.5s cast, single-target + Slashburn2 = 28912, // Boss->self, 8.5s cast, single-target + Slashburn3 = 28913, // Boss->self, 8.5s cast, single-target + Slashburn4 = 28930, // Boss->self, 8.5s cast, single-target + + SpringToLife1 = 28909, // Boss->self, 7.5s cast, single-target + SpringToLife2 = 28910, // Boss->self, 7.5s cast, single-target + + UnknownAbility1 = 28966, // MagickedPuppet->self, no cast, single-target + UnknownAbility2 = 28967, // MagickedPuppet->self, no cast, single-target +} + +public enum SID : uint +{ + UnknownStatus = 2397, // none->Boss, extra=0x1BF/0x1C0 + VulnerabilityUp = 1789, // BallOfFire/AmaljaaArtilleryCarriage->player, extra=0x2/0x4 + +} + +public enum IconID : uint +{ + Icon_218 = 218, // player + Icon_363 = 363, // Boss +} diff --git a/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnightStates.cs b/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnightStates.cs new file mode 100644 index 0000000000..040e9bc314 --- /dev/null +++ b/BossMod/Modules/Endwalker/Variant/V01SS/V015ThroneKnight/V015ThorneKnightStates.cs @@ -0,0 +1,38 @@ +namespace BossMod.Endwalker.Variant.V01SS.V015ThorneKnight; + +class BlisteringBlow(BossModule module) : Components.SingleTargetCast(module, ActionID.MakeSpell(AID.BlisteringBlow)); + +class BlazingBeacon1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BlazingBeacon1), new AOEShapeRect(50, 16)); +class BlazingBeacon2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BlazingBeacon2), new AOEShapeRect(50, 16)); +class BlazingBeacon3(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BlazingBeacon3), new AOEShapeRect(50, 16)); + +class SignalFlareAOE(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.SignalFlareAOE), new AOEShapeCircle(10)); + +class Explosion(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Explosion), new AOEShapeCross(50, 6)); + +class SacredFlay1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.SacredFlay1), new AOEShapeCone(50, 50.Degrees())); +class SacredFlay2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.SacredFlay2), new AOEShapeCone(50, 50.Degrees())); +class SacredFlay3(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.SacredFlay3), new AOEShapeCone(50, 50.Degrees())); + +class ForeHonor(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.ForeHonor), new AOEShapeCone(50, 180.Degrees())); + +class Cogwheel(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Cogwheel)); + +class V015ThorneKnightStates : StateMachineBuilder +{ + public V015ThorneKnightStates(BossModule module) : base(module) + { + TrivialPhase() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter(); + } +} \ No newline at end of file