-
Notifications
You must be signed in to change notification settings - Fork 120
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ace840e
commit fb899e7
Showing
19 changed files
with
2,929 additions
and
162 deletions.
There are no files selected for viewing
78 changes: 78 additions & 0 deletions
78
BossMod/Modules/Shadowbringers/Dungeon/D02DohnMheg/D021AencThon.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
namespace BossMod.Shadowbringers.Dungeon.D02DohnMheg.D021AencThon; | ||
|
||
public enum OID : uint | ||
{ | ||
Boss = 0x3F2, | ||
Helper = 0x233C, | ||
} | ||
|
||
public enum AID : uint | ||
{ | ||
_AutoAttack_Attack = 872, // Boss->player, no cast, single-target | ||
_Weaponskill_CandyCane = 8857, // Boss->player, 4.0s cast, single-target | ||
_Weaponskill_Hydrofall = 8871, // Boss->self, 3.0s cast, single-target | ||
_Weaponskill_Hydrofall1 = 8893, // Helper->location, 3.0s cast, range 6 circle | ||
_Weaponskill_LaughingLeap = 8852, // Boss->location, 4.0s cast, range 4 circle | ||
_Weaponskill_LaughingLeap1 = 8840, // Boss->players, no cast, range 4 circle | ||
_Weaponskill_Landsblood = 7822, // Boss->self, 3.0s cast, range 40 circle | ||
_Weaponskill_Landsblood1 = 7899, // Boss->self, no cast, range 40 circle | ||
_Weaponskill_Geyser = 8800, // Helper->self, no cast, range 6 circle | ||
} | ||
|
||
class CandyCane(BossModule module) : Components.SingleTargetCast(module, ActionID.MakeSpell(AID._Weaponskill_CandyCane)); | ||
class Hydrofall(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID._Weaponskill_Hydrofall1), 6); | ||
class LaughingLeap(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID._Weaponskill_LaughingLeap), 4); | ||
class LaughingLeap2(BossModule module) : Components.StackWithIcon(module, 62, ActionID.MakeSpell(AID._Weaponskill_LaughingLeap1), 4, 5.15f); | ||
class Landsblood(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID._Weaponskill_Landsblood)); | ||
|
||
class Geyser(BossModule module) : Components.GenericAOEs(module) | ||
{ | ||
private readonly List<AOEInstance> Geysers = []; | ||
|
||
private readonly List<WDir> Geysers1 = [new(0, -16), new(-9, 15)]; | ||
private readonly List<WDir> Geysers2 = [new(0, 5), new(-9, -15), new(7, -7)]; | ||
|
||
public override IEnumerable<AOEInstance> ActiveAOEs(int slot, Actor actor) => Geysers; | ||
|
||
public override void OnActorEAnim(Actor actor, uint state) | ||
{ | ||
if (state == 0x100020) | ||
{ | ||
var geysers = actor.OID switch | ||
{ | ||
0x1EAAA1 => Geysers1, | ||
0x1EAAA2 => Geysers2, | ||
_ => [] | ||
}; | ||
Geysers.AddRange(geysers.Select(d => | ||
{ | ||
var center = d.Rotate(-actor.Rotation) + actor.Position; | ||
return new AOEInstance(new AOEShapeCircle(6), center, default, WorldState.FutureTime(5.1f)); | ||
})); | ||
} | ||
} | ||
|
||
public override void OnEventCast(Actor caster, ActorCastEvent spell) | ||
{ | ||
if (spell.Action.ID == (uint)AID._Weaponskill_Geyser) | ||
Geysers.RemoveAll(g => g.Origin.AlmostEqual(caster.Position, 1)); | ||
} | ||
} | ||
|
||
class AencThonLordOfTheLingeringGazeStates : StateMachineBuilder | ||
{ | ||
public AencThonLordOfTheLingeringGazeStates(BossModule module) : base(module) | ||
{ | ||
TrivialPhase() | ||
.ActivateOnEnter<CandyCane>() | ||
.ActivateOnEnter<Hydrofall>() | ||
.ActivateOnEnter<LaughingLeap>() | ||
.ActivateOnEnter<LaughingLeap2>() | ||
.ActivateOnEnter<Landsblood>() | ||
.ActivateOnEnter<Geyser>(); | ||
} | ||
} | ||
|
||
[ModuleInfo(BossModuleInfo.Maturity.Contributed, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 649, NameID = 8141)] | ||
public class AencThonLordOfTheLingeringGaze(WorldState ws, Actor primary) : BossModule(ws, primary, new(0, 30), new ArenaBoundsCircle(19.5f)); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
108 changes: 108 additions & 0 deletions
108
BossMod/Modules/Shadowbringers/Dungeon/D06Amaurot/D061TheFirstBeast.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
namespace BossMod.Shadowbringers.Dungeon.D06Amaurot.D061FirstBeast; | ||
|
||
public enum OID : uint | ||
{ | ||
Boss = 0x27B6, // R=5.4 | ||
FallenStar = 0x29DC, // R=2.4 | ||
FallingTower = 0x18D6, // R=0.5 | ||
Helper = 0x233C | ||
} | ||
|
||
public enum AID : uint | ||
{ | ||
AutoAttack = 870, // Boss->player, no cast, single-target | ||
|
||
VenomousBreath = 15566, // Boss->self, 3.0s cast, range 9 120-degree cone | ||
MeteorRainVisual = 15556, // Boss->self, 3.0s cast, single-target | ||
MeteorRain = 15558, // Helper->location, 3.0s cast, range 6 circle | ||
|
||
TheFallingSkyVisual = 15561, // Boss->self, 3.0s cast, single-target | ||
TheFallingSky = 15562, // Helper->location, 4.5s cast, range 10 circle | ||
TheFinalSky = 15563, // Boss->self, 12.0s cast, range 70 circle, meteor if failed to LoS | ||
CosmicKiss = 17108, // FallenStar->self, 4.5s cast, range 50 circle, meteor, damage fall off AOE | ||
CosmicShrapnel = 17110, // FallenStar->self, no cast, range 8 circle, meteor explodes after final sky, can be ignored since it only does like 500 dmg | ||
|
||
Towerfall = 15564, // FallingTower->self, 8.0s cast, range 35 width 40 rect | ||
Earthquake = 15565, // Boss->self, 4.0s cast, range 10 circle | ||
TheBurningSkyVisual = 15559, // Boss->self, 5.2s cast, single-target | ||
TheBurningSky1 = 13642, // FallingTower->location, 3.5s cast, range 6 circle | ||
TheBurningSky2 = 15560, // Helper->player, 5.2s cast, range 6 circle, spread | ||
} | ||
|
||
public enum IconID : uint | ||
{ | ||
Meteor = 57, // player | ||
Spreadmarker = 139, // player | ||
} | ||
|
||
class VenomousBreath(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.VenomousBreath), new AOEShapeCone(9, 60.Degrees())); | ||
class MeteorRain(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.MeteorRain), 6); | ||
class TheFallingSky(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.TheFallingSky), 10); | ||
class CosmicKiss(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.CosmicKiss), new AOEShapeCircle(10)); | ||
class Towerfall(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Towerfall), new AOEShapeRect(35, 20)); | ||
class Earthquake(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Earthquake), new AOEShapeCircle(10)); | ||
class TheBurningSky1(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.TheBurningSky1), 6); | ||
class TheBurningSky2(BossModule module) : Components.SpreadFromCastTargets(module, ActionID.MakeSpell(AID.TheBurningSky2), 6); | ||
|
||
class Meteors(BossModule module) : Components.GenericBaitAway(module) | ||
{ | ||
public List<Actor> targets = []; | ||
|
||
public override void OnEventIcon(Actor actor, uint iconID, ulong targetID) | ||
{ | ||
if (iconID == (uint)IconID.Meteor) | ||
{ | ||
CurrentBaits.Add(new(actor, actor, new AOEShapeCircle(10))); | ||
targets.Add(actor); | ||
} | ||
} | ||
|
||
public override void OnActorCreated(Actor actor) | ||
{ | ||
if ((OID)actor.OID == OID.FallenStar) | ||
{ | ||
CurrentBaits.Clear(); | ||
targets.Clear(); | ||
} | ||
} | ||
|
||
public override void AddHints(int slot, Actor actor, TextHints hints) | ||
{ | ||
base.AddHints(slot, actor, hints); | ||
if (targets.Contains(actor)) | ||
hints.Add("Place meteor!"); | ||
} | ||
|
||
public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints) | ||
{ | ||
base.AddAIHints(slot, actor, assignment, hints); | ||
if (targets.Contains(actor)) | ||
hints.AddForbiddenZone(ShapeDistance.InvertedRect(new(-80, 97), new(-80, 67), 15)); | ||
} | ||
} | ||
|
||
class TheFinalSky(BossModule module) : Components.CastLineOfSightAOE(module, ActionID.MakeSpell(AID.TheFinalSky), 70, false) | ||
{ | ||
public override IEnumerable<Actor> BlockerActors() => Module.Enemies(OID.FallenStar); | ||
} | ||
|
||
class D061FirstBeastStates : StateMachineBuilder | ||
{ | ||
public D061FirstBeastStates(BossModule module) : base(module) | ||
{ | ||
TrivialPhase() | ||
.ActivateOnEnter<TheFinalSky>() | ||
.ActivateOnEnter<Meteors>() | ||
.ActivateOnEnter<TheBurningSky1>() | ||
.ActivateOnEnter<TheBurningSky2>() | ||
.ActivateOnEnter<Earthquake>() | ||
.ActivateOnEnter<Towerfall>() | ||
.ActivateOnEnter<CosmicKiss>() | ||
.ActivateOnEnter<TheFallingSky>() | ||
.ActivateOnEnter<MeteorRain>() | ||
.ActivateOnEnter<VenomousBreath>(); | ||
} | ||
} | ||
|
||
[ModuleInfo(BossModuleInfo.Maturity.Verified, Contributors = "The Combat Reborn Team (Malediktus)", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 652, NameID = 8201)] | ||
public class D061FirstBeast(WorldState ws, Actor primary) : BossModule(ws, primary, new(-80, 82), new ArenaBoundsSquare(19.5f)); |
59 changes: 59 additions & 0 deletions
59
BossMod/Modules/Shadowbringers/Dungeon/D06Amaurot/D062Bellwether.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
namespace BossMod.Shadowbringers.Dungeon.D06Amaurot.D062Bellwether; | ||
|
||
public enum OID : uint | ||
{ | ||
Boss = 0x27B8, // R=6.0-12.0 | ||
TerminusFlesher = 0x27B9, // R=3.3 | ||
TerminusCrier = 0x27BD, // R=1.0 | ||
TerminusSprinter = 0x2879, // R=1.96 | ||
TerminusDetonator = 0x27BA, // R=2.0 | ||
TerminusShriver = 0x27BC, // R=1.35 | ||
TerminusRoiler = 0x27BB, // R=1.2 | ||
TerminusBeholder = 0x27BE, // R=1.32 | ||
Helper = 0x233C | ||
} | ||
|
||
public enum AID : uint | ||
{ | ||
AutoAttack = 870, // Boss/TerminusSprinter/TerminusCrier->player, no cast, single-target | ||
AutoAttack2 = 6499, // TerminusFlesher/TerminusBeholder->player, no cast, single-target | ||
AutoAttack3 = 18013, // TerminusDetonator->player, no cast, single-target | ||
ShrillShriek = 15567, // Boss->self, 3.0s cast, range 50 circle | ||
Aetherspike = 15571, // TerminusSprinter->self, 4.0s cast, range 40 width 8 rect | ||
SelfDestruct = 15570, // TerminusDetonator->self, no cast, range 6 circle | ||
IllWill = 15573, // TerminusRoiler->player, no cast, single-target | ||
SicklyFlame = 15588, // TerminusShriver->player, 2.0s cast, single-target | ||
Comet = 15572, // 18D6->location, 4.0s cast, range 4 circle | ||
SicklyInferno = 16765, // TerminusShriver->location, 3.0s cast, range 5 circle | ||
Burst = 15569, // Boss->self, no cast, range 50 circle, raidwide on boss death | ||
BurstEnrage = 15568, // Boss->self, 45.0s cast, single-target, enrage cast | ||
ExplosionEnrage = 15919, // Boss->self, no cast, range 50 circle, enrage | ||
} | ||
|
||
class ShrillShriek(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.ShrillShriek)); | ||
class Aetherspike(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Aetherspike), new AOEShapeRect(40, 4)); | ||
class Comet(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.Comet), 4); | ||
class SicklyInferno(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.SicklyInferno), 5); | ||
class Burst(BossModule module) : Components.CastHint(module, ActionID.MakeSpell(AID.BurstEnrage), "Enrage!", true); | ||
|
||
class D062BellwetherStates : StateMachineBuilder | ||
{ | ||
public D062BellwetherStates(BossModule module) : base(module) | ||
{ | ||
TrivialPhase() | ||
.ActivateOnEnter<ShrillShriek>() | ||
.ActivateOnEnter<Aetherspike>() | ||
.ActivateOnEnter<Comet>() | ||
.ActivateOnEnter<SicklyInferno>() | ||
.ActivateOnEnter<Burst>(); | ||
} | ||
} | ||
|
||
[ModuleInfo(BossModuleInfo.Maturity.Verified, Contributors = "The Combat Reborn Team (Malediktus)", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 652, NameID = 8202)] | ||
public class D062Bellwether(WorldState ws, Actor primary) : BossModule(ws, primary, new(60, -361), new ArenaBoundsCircle(19.5f)) | ||
{ | ||
protected override void DrawEnemies(int pcSlot, Actor pc) | ||
{ | ||
Arena.Actors(WorldState.Actors.Where(a => !a.IsAlly), ArenaColor.Enemy); | ||
} | ||
} |
Oops, something went wrong.