From 01733b3befaee85e2c6aad61b989ec1055b65205 Mon Sep 17 00:00:00 2001 From: CarnifexOptimus <156172553+CarnifexOptimus@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:29:53 +0200 Subject: [PATCH 1/3] M3 module updated --- BossMod/Components/Towers.cs | 16 ++-- .../Dungeon/D06Alexandria/D063Eliminator.cs | 2 +- .../Raid/M3NBruteBomber/BarbarousBarrage.cs | 2 +- .../Dawntrail/Raid/M3NBruteBomber/Firespin.cs | 27 +++++++ .../Raid/M3NBruteBomber/LariatCombo.cs | 8 +- .../Dawntrail/Raid/M3NBruteBomber/LitFuse.cs | 81 +++++++++++++++++++ .../Raid/M3NBruteBomber/M3NBruteBomber.cs | 36 --------- .../M3NBruteBomber/M3NBruteBomberEnums.cs | 64 ++++++--------- .../M3NBruteBomber/M3NBruteBomberStates.cs | 9 +-- 9 files changed, 148 insertions(+), 97 deletions(-) create mode 100644 BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/Firespin.cs create mode 100644 BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/LitFuse.cs diff --git a/BossMod/Components/Towers.cs b/BossMod/Components/Towers.cs index 32780aa091..a2c10de99d 100644 --- a/BossMod/Components/Towers.cs +++ b/BossMod/Components/Towers.cs @@ -40,8 +40,10 @@ public override void AddHints(int slot, Actor actor, TextHints hints) hints.Add("Too few soakers in the tower!"); else if (count > Towers[soakedIndex].MaxSoakers) hints.Add("Too many soakers in the tower!"); + else + hints.Add("Soak the tower!", false); } - else if (Towers.Any(t => !t.ForbiddenSoakers[slot] && !t.CorrectAmountInside(Module))) + else if (Towers.Any(t => !t.ForbiddenSoakers[slot] && t.NumInside(Module) < t.MaxSoakers)) { hints.Add("Soak the tower!"); } @@ -61,14 +63,16 @@ public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignme var forbidden = new List>(); if (!Towers.Any(x => x.ForbiddenSoakers[slot])) { - foreach (var t in Towers.Where(x => x.NumInside(Module) < x.MinSoakers || actor.Position.InCircle(x.Position, x.Radius) && x.CorrectAmountInside(Module))) + var inTower = Towers.Any(x => x.IsInside(actor) && x.CorrectAmountInside(Module)); + var missingSoakers = !inTower && Towers.Any(x => x.NumInside(Module) < x.MaxSoakers); + foreach (var t in Towers.Where(x => x.NumInside(Module) < x.MinSoakers || x.IsInside(actor) && x.CorrectAmountInside(Module))) forbiddenInverted.Add(ShapeDistance.InvertedCircle(t.Position, t.Radius)); - foreach (var t in Towers.Where(x => x.NumInside(Module) > x.MaxSoakers || !actor.Position.InCircle(x.Position, x.Radius) && x.CorrectAmountInside(Module))) + foreach (var t in Towers.Where(x => x.NumInside(Module) > x.MaxSoakers || !x.IsInside(actor) && x.CorrectAmountInside(Module))) forbidden.Add(ShapeDistance.Circle(t.Position, t.Radius)); - if (forbidden.Count > 0) - hints.AddForbiddenZone(p => forbidden.Select(f => f(p)).Min(), Towers[0].Activation); - if (forbidden.Count == 0 && forbiddenInverted.Count > 0) + if (forbidden.Count == 0 || inTower || missingSoakers && forbiddenInverted.Count > 0) hints.AddForbiddenZone(p => forbiddenInverted.Select(f => f(p)).Max(), Towers[0].Activation); + else if (forbidden.Count > 0 && !inTower) + hints.AddForbiddenZone(p => forbidden.Select(f => f(p)).Min(), Towers[0].Activation); } else if (Towers.Any(x => x.ForbiddenSoakers[slot])) { diff --git a/BossMod/Modules/Dawntrail/Dungeon/D06Alexandria/D063Eliminator.cs b/BossMod/Modules/Dawntrail/Dungeon/D06Alexandria/D063Eliminator.cs index 8bf9ff0d3e..d6d20153c5 100644 --- a/BossMod/Modules/Dawntrail/Dungeon/D06Alexandria/D063Eliminator.cs +++ b/BossMod/Modules/Dawntrail/Dungeon/D06Alexandria/D063Eliminator.cs @@ -148,7 +148,7 @@ class LightOfDevotion(BossModule module) : Components.LineStack(module, ActionID public override void Update() { // as soon as limit break phase ends the line stack gets cancelled - if (CurrentBaits.Count > 0 && Module.Enemies(OID.LightningGenerator).Count == 0) + if (CurrentBaits.Count > 0 && !Module.Enemies(OID.LightningGenerator).Any(x => !x.IsDead)) CurrentBaits.Clear(); } } diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/BarbarousBarrage.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/BarbarousBarrage.cs index f842962775..ae3f1fedbd 100644 --- a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/BarbarousBarrage.cs +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/BarbarousBarrage.cs @@ -33,7 +33,7 @@ public override IEnumerable Sources(int slot, Actor actor) public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints) { var towers = Module.FindComponent()!.Towers; - var isDelayDeltaLow = (towers.First().Activation - Module.WorldState.CurrentTime).TotalSeconds < 6; + var isDelayDeltaLow = (towers.FirstOrDefault().Activation - Module.WorldState.CurrentTime).TotalSeconds < 5; var isActorInsideTower = towers.Any(x => x.IsInside(actor)); if (towers.Count > 0 && isDelayDeltaLow && isActorInsideTower) { diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/Firespin.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/Firespin.cs new file mode 100644 index 0000000000..8eab122332 --- /dev/null +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/Firespin.cs @@ -0,0 +1,27 @@ +namespace BossMod.Dawntrail.Raid.M3NBruteBomber; + +class FireSpin(BossModule module) : Components.GenericRotatingAOE(module) +{ + private static readonly AOEShapeCone cone = new(40, 30.Degrees()); + + public override void OnCastStarted(Actor caster, ActorCastInfo spell) + { + switch ((AID)spell.Action.ID) + { + case AID.FireSpinCCW: + case AID.InfernalSpinCCW: + Sequences.Add(new(cone, Module.PrimaryActor.Position, spell.Rotation, 45.Degrees(), Module.CastFinishAt(spell, 0.5f), 1, 8)); + break; + case AID.FireSpinCW: + case AID.InfernalSpinCW: + Sequences.Add(new(cone, Module.PrimaryActor.Position, spell.Rotation, -45.Degrees(), Module.CastFinishAt(spell, 0.5f), 1, 8)); + break; + } + } + + public override void OnCastFinished(Actor caster, ActorCastInfo spell) + { + if ((AID)spell.Action.ID is AID.FireSpinFirst or AID.FireSpinRest or AID.InfernalSpinFirst or AID.InfernalSpinRest) + AdvanceSequence(0, WorldState.CurrentTime); + } +} diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/LariatCombo.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/LariatCombo.cs index cb98d4ccbf..3210f3b2d9 100644 --- a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/LariatCombo.cs +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/LariatCombo.cs @@ -7,13 +7,7 @@ class LariatCombo(BossModule module) : Components.GenericAOEs(module) private static readonly AOEShapeRect rect1 = new(20, 30, 5, -90.Degrees()); private static readonly AOEShapeRect rect2 = new(20, 30, 5, 90.Degrees()); - public override IEnumerable ActiveAOEs(int slot, Actor actor) - { - if (_aoes.Count > 0) - yield return _aoes[0] with { Color = ArenaColor.Danger }; - if (_aoes.Count > 1) - yield return _aoes[1] with { Risky = false }; - } + public override IEnumerable ActiveAOEs(int slot, Actor actor) => _aoes.Take(1); public override void OnCastStarted(Actor caster, ActorCastInfo spell) { diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/LitFuse.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/LitFuse.cs new file mode 100644 index 0000000000..913db11a1f --- /dev/null +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/LitFuse.cs @@ -0,0 +1,81 @@ +namespace BossMod.Dawntrail.Raid.M3NBruteBomber; + +public class LitFuse(BossModule module) : Components.GenericAOEs(module) +{ + private List _aoes = []; + private static readonly AOEShapeCircle circle = new(8); + private bool sorted; + private bool fusesOfFury; + + public override IEnumerable ActiveAOEs(int slot, Actor actor) + { + var towers = Module.FindComponent()!.Towers; + if (_aoes.Count > 3) + for (var i = 0; i < 4; i++) + yield return _aoes[i] with { Color = ArenaColor.Danger, Risky = towers.Count == 0 }; + if (_aoes.Count > 7) + for (var i = 4; i < 8; i++) + yield return _aoes[i] with { Risky = false }; + } + + public override void OnCastStarted(Actor caster, ActorCastInfo spell) + { + if ((AID)spell.Action.ID == AID.FusesOfFury) + fusesOfFury = true; + } + + public override void Update() + { + var towers = Module.FindComponent()!.Towers; + if (towers.Count > 0 && fusesOfFury && _aoes.Count == 8) + { + var updatedAOEs = new List(); + foreach (var a in _aoes) + { + var updatedAOE = new AOEInstance(a.Shape, a.Origin, default, a.Activation.AddSeconds(3)); + updatedAOEs.Add(updatedAOE); + } + _aoes = updatedAOEs; + fusesOfFury = false; + } + } + + public override void OnStatusGain(Actor actor, ActorStatus status) + { + switch ((SID)status.ID) + { + case SID.LitFuseLong: + _aoes.Add(new(circle, actor.Position, default, Module.WorldState.FutureTime(10.4f))); + break; + case SID.LitFuseShort: + _aoes.Add(new(circle, actor.Position, default, Module.WorldState.FutureTime(7.4f))); + break; + } + if (_aoes.Count == 8 && !sorted) + { + _aoes.Sort((x, y) => x.Activation.CompareTo(y.Activation)); + sorted = true; + } + } + + public override void OnCastFinished(Actor caster, ActorCastInfo spell) + { + if (_aoes.Count > 0) + switch ((AID)spell.Action.ID) + { + case AID.SelfDestruct1: + case AID.SelfDestruct2: + _aoes.RemoveAt(0); + sorted = false; + fusesOfFury = false; + break; + } + } + + public override void AddGlobalHints(GlobalHints hints) + { + var towers = Module.FindComponent()!.Towers; + if (_aoes.Count > 0 && towers.Count > 0) + hints.Add("Don't panic! AOEs start resolving 3.8s after towers."); + } +} diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs index 2d23a7009c..fe950e85d7 100644 --- a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs @@ -4,43 +4,7 @@ class BrutalImpact(BossModule module) : Components.RaidwideCast(module, ActionID class KnuckleSandwich(BossModule module) : Components.CastSharedTankbuster(module, ActionID.MakeSpell(AID.KnuckleSandwich), 6); class BrutalLariat1(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BrutalLariat1), new AOEShapeRect(20, 30, 5, -90.Degrees())); class BrutalLariat2(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.BrutalLariat2), new AOEShapeRect(20, 30, 5, 90.Degrees())); - class MurderousMist(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.MurderousMist), new AOEShapeCone(40, 135.Degrees())); - -class SelfDestruct(BossModule module) : Components.GenericAOEs(module) -{ - private readonly List _aoes = []; - - private static readonly AOEShapeCircle circle = new(8); - - public override IEnumerable ActiveAOEs(int slot, Actor actor) - { - if (_aoes.Count > 0) - yield return _aoes[0] with { Color = ArenaColor.Danger }; - if (_aoes.Count > 1) - yield return _aoes[1] with { Risky = false }; - } - - public override void OnCastStarted(Actor caster, ActorCastInfo spell) - { - if ((AID)spell.Action.ID is AID.SelfDestruct1 or AID.SelfDestruct2) - { - _aoes.Add(new(circle, caster.Position, spell.Rotation, Module.CastFinishAt(spell))); - _aoes.Sort((x, y) => x.Activation.CompareTo(y.Activation)); - } - } - - public override void OnCastFinished(Actor caster, ActorCastInfo spell) - { - if (_aoes.Count > 0 && (AID)spell.Action.ID is AID.SelfDestruct1 or AID.SelfDestruct2) - _aoes.RemoveAt(0); - } -} - -class FireSpin4(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.FireSpin4), new AOEShapeCone(40, 30.Degrees())); -class FireSpin5(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.FireSpin5), new AOEShapeCone(40, 30.Degrees())); -class InfernalSpin4(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.InfernalSpin4), new AOEShapeCone(40, 30.Degrees())); -class InfernalSpin5(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.InfernalSpin5), new AOEShapeCone(40, 30.Degrees())); class BrutalBurn(BossModule module) : Components.StackWithCastTargets(module, ActionID.MakeSpell(AID.BrutalBurn), 6, 8); [ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "The Combat Reborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 989, NameID = 13356)] diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberEnums.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberEnums.cs index 008ea68d98..f36893da10 100644 --- a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberEnums.cs +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberEnums.cs @@ -2,11 +2,10 @@ public enum OID : uint { - Boss = 0x42C2, // R5.016, x1 - - LitFuse = 0x42C3, // R1.200, x8 - Refbot = 0x42C4, // R3.360, x0 (spawn during fight) - UnknownActor = 0x42C5, // R1.000, x4 + Boss = 0x42C2, // R5.016 + LitFuse = 0x42C3, // R1.2 + Refbot = 0x42C4, // R3.36 + LariatHelper = 0x42C5, // R1.0 Helper = 0x233C } @@ -21,12 +20,12 @@ public enum AID : uint BrutalImpactFirst = 37846, // Boss->self, 5.0s cast, range 60 circle BrutalImpactRest = 37847, // Boss->self, no cast, range 60 circle - BrutalLariatVisual1 = 39670, // UnknownActor->self, 4.9s cast, single-target + BrutalLariatVisual1 = 39670, // LariatHelper->self, 4.9s cast, single-target BrutalLariatVisual2 = 39636, // Boss->location, 4.9+1.2s cast, single-target BrutalLariatVisual3 = 39637, // Boss->location, 4.9+1.2s cast, single-target - BrutalLariatVisual4 = 39808, // UnknownActor->self, 4.9s cast, single-target - BrutalLariatVisual5 = 39670, // UnknownActor->self, 4.9s cast, single-target - BrutalLariatVisual6 = 39671, // UnknownActor->self, no cast, single-target + BrutalLariatVisual4 = 39808, // LariatHelper->self, 4.9s cast, single-target + BrutalLariatVisual5 = 39670, // LariatHelper->self, 4.9s cast, single-target + BrutalLariatVisual6 = 39671, // LariatHelper->self, no cast, single-target BrutalLariat1 = 39638, // Helper->self, 6.1s cast, range 50 width 34 rect BrutalLariat2 = 39639, // Helper->self, 6.1s cast, range 50 width 34 rect @@ -47,54 +46,39 @@ public enum AID : uint BarbarousBarrage = 37810, // Boss->self, 4.0s cast, single-target, spawns towers Explosion = 37811, // Helper->self, no cast, range 4 circle, knockback 22, away from source + UnmitigatedExplosion = 37812, // Helper->self, no cast, range 60 circle, tower fail ExplosiveRain1 = 37837, // Helper->self, 5.0s cast, range 8 circle ExplosiveRain2 = 37838, // Helper->self, 7.0s cast, range 8-16 donut ExplosiveRain3 = 37839, // Helper->self, 9.0s cast, range 16-24 donut ExplosiveRain4 = 38541, // Helper->self, 3.0s cast, range 6 circle - FireSpin1 = 37840, // Boss->self, 4.5+0.5s cast, single-target - FireSpin2 = 37841, // Boss->self, 4.5+0.5s cast, single-target - FireSpin3 = 37842, // Boss->self, no cast, single-target - FireSpin4 = 39768, // Helper->self, 5.0s cast, range 40 60-degree cone, 8 casts - FireSpin5 = 39769, // Helper->self, 0.5s cast, range 40 60-degree cone + FireSpinCW = 37840, // Boss->self, 4.5+0.5s cast, single-target + FireSpinCCW = 37841, // Boss->self, 4.5+0.5s cast, single-target + FireSpinVisual = 37842, // Boss->self, no cast, single-target + FireSpinFirst = 39768, // Helper->self, 5.0s cast, range 40 60-degree cone, 8 casts + FireSpinRest = 39769, // Helper->self, 0.5s cast, range 40 60-degree cone FusesOfFury = 37814, // Boss->self, 4.0s cast, single-target - InfernalSpin1 = 39746, // Boss->self, 4.5+0.5s cast, single-target - InfernalSpin2 = 39747, // Boss->self, 4.5+0.5s cast, single-target - InfernalSpin3 = 39748, // Boss->self, no cast, single-target - InfernalSpin4 = 39770, // Helper->self, 5.0s cast, range 40 60-degree cone - InfernalSpin5 = 39771, // Helper->self, 0.5s cast, range 40 60-degree cone + InfernalSpinCW = 39746, // Boss->self, 4.5+0.5s cast, single-target + InfernalSpinCCW = 39747, // Boss->self, 4.5+0.5s cast, single-target + InfernalSpinVisual = 39748, // Boss->self, no cast, single-target + InfernalSpinFirst = 39770, // Helper->self, 5.0s cast, range 40 60-degree cone + InfernalSpinRest = 39771, // Helper->self, 0.5s cast, range 40 60-degree cone KnuckleSandwich = 37845, // Boss->players, 5.0s cast, range 6 circle MurderousMist = 37813, // Boss->self, 5.0s cast, range 40 270-degree cone SelfDestruct1 = 37816, // LitFuse->self, 5.0s cast, range 8 circle - SelfDestruct2 = 37817, // LitFuse->self, 8.0s cast, range 8 circle + SelfDestruct2 = 37817 // LitFuse->self, 8.0s cast, range 8 circle } public enum SID : uint { - Burns1 = 3065, // none->player, extra=0x0 - Burns2 = 3066, // none->player, extra=0x0 - Concussion = 997, // Helper->player, extra=0xF43 - Doped = 4021, // Boss->Boss, extra=0x0 - Poison = 2104, // Boss->player, extra=0x0 - SustainedDamage = 2935, // Helper->player, extra=0x0 - Trauma = 3796, // Helper->player, extra=0x1 - Unknown1 = 4015, // none->LitFuse, extra=0x2DF - Unknown2 = 4016, // none->LitFuse, extra=0x2E0 - Unknown3 = 4017, // none->LitFuse, extra=0x2E1 - Unknown4 = 4018, // none->LitFuse, extra=0x2E2 - VulnerabilityUp = 1789, // Boss/LitFuse/Helper->player, extra=0x1/0x2 -} - -public enum IconID : uint -{ - Icon161 = 161, // player - Icon167 = 167, // Boss - Icon168 = 168, // Boss - Icon259 = 259, // player + LitFuseShort = 4015, // none->LitFuse, extra=0x2DF + LitFuseLong = 4016, // none->LitFuse, extra=0x2E0 + LitFuseShortBurning = 4017, // none->LitFuse, extra=0x2E1 + LitFuseLongBurning = 4018, // none->LitFuse, extra=0x2E2 } diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberStates.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberStates.cs index 722c59cf11..6ce5be4349 100644 --- a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberStates.cs +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberStates.cs @@ -13,13 +13,10 @@ public M3NBruteBomberStates(BossModule module) : base(module) .ActivateOnEnter() .ActivateOnEnter() .ActivateOnEnter() - .ActivateOnEnter() - .ActivateOnEnter() - .ActivateOnEnter() - .ActivateOnEnter() - .ActivateOnEnter() - .ActivateOnEnter() + .ActivateOnEnter() + .ActivateOnEnter() .ActivateOnEnter() + .ActivateOnEnter() .ActivateOnEnter(); } } From 771a87f53f7033b7613d87a5b74fe63282cf5695 Mon Sep 17 00:00:00 2001 From: CarnifexOptimus <156172553+CarnifexOptimus@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:30:48 +0200 Subject: [PATCH 2/3] M3 maturity level changed --- BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs index fe950e85d7..1aec9a87b2 100644 --- a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomber.cs @@ -7,5 +7,5 @@ class KnuckleSandwich(BossModule module) : Components.CastSharedTankbuster(modul class MurderousMist(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.MurderousMist), new AOEShapeCone(40, 135.Degrees())); class BrutalBurn(BossModule module) : Components.StackWithCastTargets(module, ActionID.MakeSpell(AID.BrutalBurn), 6, 8); -[ModuleInfo(BossModuleInfo.Maturity.WIP, Contributors = "The Combat Reborn Team", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 989, NameID = 13356)] +[ModuleInfo(BossModuleInfo.Maturity.Verified, Contributors = "The Combat Reborn Team (Malediktus, LTS)", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 989, NameID = 13356)] public class M3NBruteBomber(WorldState ws, Actor primary) : BossModule(ws, primary, new(100, 100), new ArenaBoundsSquare(15)); From 293eac4e50e73dc96c9145000e13e9564be9a5af Mon Sep 17 00:00:00 2001 From: CarnifexOptimus <156172553+CarnifexOptimus@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:34:36 +0200 Subject: [PATCH 3/3] added comment to Mouser --- BossMod/Modules/Dawntrail/Raid/M1NBIackCat/Mouser.cs | 11 ++++++++--- .../Raid/M3NBruteBomber/M3NBruteBomberEnums.cs | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/BossMod/Modules/Dawntrail/Raid/M1NBIackCat/Mouser.cs b/BossMod/Modules/Dawntrail/Raid/M1NBIackCat/Mouser.cs index 2ac607417d..c1d1e02f01 100644 --- a/BossMod/Modules/Dawntrail/Raid/M1NBIackCat/Mouser.cs +++ b/BossMod/Modules/Dawntrail/Raid/M1NBIackCat/Mouser.cs @@ -20,11 +20,16 @@ class ArenaChanges(BossModule module) : BossComponent(module) public override void OnEventEnvControl(byte index, uint state) { - if (state == 0x00020001) + // index per tile, starting north + // 0x00, 0x01, 0x02, 0x03 + // 0x04, 0x05, 0x06, 0x07 + // 0x08, 0x09, 0x0A, 0x0B + // 0x0C, 0x0D, 0x0E, 0x0F + if (state == 0x00020001) // tile gets damaged AddTileToList(DamagedTiles, index); - else if (state == 0x00200010) + else if (state == 0x00200010) // tile gets broken MoveTileBetweenLists(DamagedTiles, brokenTiles, index); - else if (state is 0x01000004 or 0x00800004) + else if (state is 0x01000004 or 0x00800004) // tile gets repaired RemoveTileFromLists(index); } diff --git a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberEnums.cs b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberEnums.cs index f36893da10..c42aa6909b 100644 --- a/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberEnums.cs +++ b/BossMod/Modules/Dawntrail/Raid/M3NBruteBomber/M3NBruteBomberEnums.cs @@ -67,7 +67,7 @@ public enum AID : uint InfernalSpinFirst = 39770, // Helper->self, 5.0s cast, range 40 60-degree cone InfernalSpinRest = 39771, // Helper->self, 0.5s cast, range 40 60-degree cone - KnuckleSandwich = 37845, // Boss->players, 5.0s cast, range 6 circle + KnuckleSandwich = 37845, // Boss->players, 5.0s cast, range 6 circle, shared tankbuster MurderousMist = 37813, // Boss->self, 5.0s cast, range 40 270-degree cone