Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Various improvements to Dun Scaith #67

Merged
merged 1 commit into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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