Skip to content

Commit 9e92b48

Browse files
Merge pull request #946 from FFXIV-CombatReborn/mergeWIP
improve Kirin sligthly, fix voidzone problems
2 parents 051fa87 + b7cc3a7 commit 9e92b48

File tree

13 files changed

+319
-311
lines changed

13 files changed

+319
-311
lines changed

BossMod/BossModule/ArenaBounds.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ private Pathfinding.Map BuildMap()
189189
var halfWidth = HalfWidth;
190190
var halfHeight = HalfHeight;
191191
var rotation = Rotation;
192-
var map = new Pathfinding.Map(MapResolution, default, halfWidth, halfHeight, rotation);
192+
var map = new Pathfinding.Map(MapResolution, default, halfWidth + 0.5f, halfHeight + 0.5f, rotation);
193193
map.BlockPixelsInside2(ShapeDistance.InvertedRect(default, rotation, halfHeight, halfHeight, halfWidth), -1f);
194194
return map;
195195
}

BossMod/Modules/Dawntrail/Alliance/A21FaithboundKirin/A21FaithboundKirin.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ sealed class QuakeSmall(BossModule module) : Components.SimpleAOEs(module, (uint
99
sealed class QuakeBig(BossModule module) : Components.SimpleAOEs(module, (uint)AID.QuakeBig, 10f);
1010
sealed class VermilionFlight(BossModule module) : Components.SimpleAOEs(module, (uint)AID.VermilionFlight, new AOEShapeRect(60f, 10f));
1111
sealed class ArmOfPurgatory(BossModule module) : Components.SimpleAOEs(module, (uint)AID.ArmOfPurgatory, 15f); // 3 + 12 from status effect
12+
sealed class WallArenaChange(BossModule module) : Components.SimpleAOEs(module, (uint)AID.WallArenaChange, new AOEShapeRect(5f, 8f));
13+
sealed class GloamingGleam(BossModule module) : Components.SimpleAOEs(module, (uint)AID.GloamingGleam, new AOEShapeRect(50f, 6f));
14+
sealed class RazorFang(BossModule module) : Components.SimpleAOEs(module, (uint)AID.RazorFang, 20f);
1215

1316
[ModuleInfo(BossModuleInfo.Maturity.Verified, Contributors = "The Combat Reborn Team (Malediktus)", PrimaryActorOID = (uint)OID.FaithboundKirin, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 1058u, NameID = 14053u, Category = BossModuleInfo.Category.Alliance, Expansion = BossModuleInfo.Expansion.Dawntrail, SortOrder = 1)]
1417
public sealed class A21FaithboundKirin(WorldState ws, Actor primary) : BossModule(ws, primary, DefaultCenter, DefaultArena)

BossMod/Modules/Dawntrail/Alliance/A21FaithboundKirin/A21FaithboundKirinStates.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ sealed class A21FaithboundKirinStates : StateMachineBuilder
55
public A21FaithboundKirinStates(BossModule module) : base(module)
66
{
77
TrivialPhase()
8+
.ActivateOnEnter<ArenaChanges>()
89
.ActivateOnEnter<Punishment>()
910
.ActivateOnEnter<CrimsonRiddle>()
1011
.ActivateOnEnter<StonegaIII1>()
@@ -16,12 +17,10 @@ public A21FaithboundKirinStates(BossModule module) : base(module)
1617
.ActivateOnEnter<SynchronizedStrikeSmite>()
1718
.ActivateOnEnter<Wringer>()
1819
.ActivateOnEnter<StrikingSmiting>()
19-
.ActivateOnEnter<MightyGripArenaChange>()
2020
.ActivateOnEnter<DeadlyHold>()
2121
.ActivateOnEnter<Bury>()
2222
.ActivateOnEnter<Shockwave>()
2323
.ActivateOnEnter<KirinCaptivator>()
24-
.ActivateOnEnter<ByakkoArenaChange>()
2524
.ActivateOnEnter<WallArenaChange>()
2625
.ActivateOnEnter<GloamingGleam>()
2726
.ActivateOnEnter<RazorFang>()
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
namespace BossMod.Dawntrail.Alliance.A21FaithboundKirin;
2+
3+
sealed class ArenaChanges(BossModule module) : Components.GenericAOEs(module)
4+
{
5+
private AOEInstance[] _aoe = [];
6+
7+
public override ReadOnlySpan<AOEInstance> ActiveAOEs(int slot, Actor actor) => _aoe;
8+
9+
public override void OnEventEnvControl(byte index, uint state)
10+
{
11+
switch (index)
12+
{
13+
case 0x3E: // byakko
14+
switch (state)
15+
{
16+
case 0x00020001u:
17+
Arena.Bounds = A21FaithboundKirin.ByakkoArena;
18+
Arena.Center = A21FaithboundKirin.ByakkoArena.Center;
19+
break;
20+
case 0x00080004u:
21+
Arena.Bounds = A21FaithboundKirin.DefaultArena;
22+
Arena.Center = A21FaithboundKirin.DefaultCenter;
23+
break;
24+
}
25+
break;
26+
case 0x46: // mighty grip
27+
switch (state)
28+
{
29+
case 0x00200010u:
30+
_aoe = [new(A21FaithboundKirin.RectArenaAOE, Arena.Center, default, WorldState.FutureTime(11.1d))];
31+
break;
32+
case 0x00020001u:
33+
Arena.Bounds = new ArenaBoundsRect(12.5f, 15f);
34+
Arena.Center = A21FaithboundKirin.RectCenter;
35+
_aoe = [];
36+
break;
37+
case 0x00080004u:
38+
Arena.Bounds = A21FaithboundKirin.DefaultArena;
39+
Arena.Center = A21FaithboundKirin.DefaultCenter;
40+
break;
41+
}
42+
break;
43+
case 0x4B: // suzaku
44+
switch (state)
45+
{
46+
case 0x00020001u:
47+
Arena.Bounds = new ArenaBoundsSquare(25f);
48+
break;
49+
case 0x00080004u:
50+
Arena.Bounds = A21FaithboundKirin.DefaultArena;
51+
break;
52+
}
53+
break;
54+
}
55+
}
56+
}

BossMod/Modules/Dawntrail/Alliance/A21FaithboundKirin/Byakko.cs

Lines changed: 0 additions & 26 deletions
This file was deleted.

BossMod/Modules/Dawntrail/Alliance/A21FaithboundKirin/MightyGrip.cs

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,5 @@
11
namespace BossMod.Dawntrail.Alliance.A21FaithboundKirin;
22

3-
sealed class MightyGripArenaChange(BossModule module) : Components.GenericAOEs(module)
4-
{
5-
private AOEInstance[] _aoe = [];
6-
7-
public override ReadOnlySpan<AOEInstance> ActiveAOEs(int slot, Actor actor) => _aoe;
8-
9-
public override void OnEventEnvControl(byte index, uint state)
10-
{
11-
if (index == 0x46)
12-
{
13-
switch (state)
14-
{
15-
case 0x00200010u:
16-
_aoe = [new(A21FaithboundKirin.RectArenaAOE, Arena.Center, default, WorldState.FutureTime(11.1d))];
17-
break;
18-
case 0x00020001u:
19-
Arena.Bounds = new ArenaBoundsRect(12.5f, 15f);
20-
Arena.Center = A21FaithboundKirin.RectCenter;
21-
_aoe = [];
22-
break;
23-
case 0x00080004u:
24-
Arena.Bounds = A21FaithboundKirin.DefaultArena;
25-
Arena.Center = A21FaithboundKirin.DefaultCenter;
26-
break;
27-
}
28-
}
29-
}
30-
}
31-
323
sealed class DeadlyHold(BossModule module) : Components.GenericTowers(module, damageType: AIHints.PredictedDamageType.Tankbuster)
334
{
345
public override void OnEventEnvControl(byte index, uint state)

BossMod/Modules/Dawntrail/Alliance/A21FaithboundKirin/StrikingSmiting.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ public override void OnActorCreated(Actor actor)
2424

2525
public override void OnCastStarted(Actor caster, ActorCastInfo spell)
2626
{
27+
if (_aoes.Count == 2)
28+
{
29+
return;
30+
}
2731
switch (spell.Action.ID)
2832
{
2933
case (uint)AID.StrikingLeft1:

BossMod/Modules/Endwalker/Dungeon/D11LapisManalis/D110AlbusGriffin.cs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ namespace BossMod.Endwalker.Dungeon.D11LapisManalis.D110AlbusGriffin;
22

33
public enum OID : uint
44
{
5-
Boss = 0x3D56, //R=3.96
5+
CaladriusMaturus = 0x3D56, //R=3.96
66
Caladrius = 0x3CE2, //R=1.8
77
AlbusGriffin = 0x3E9F, //R=4.6
88
}
99

1010
public enum AID : uint
1111
{
12-
AutoAttack1 = 872, // Caladrius/Boss->player, no cast, single-target
12+
AutoAttack1 = 872, // Caladrius/CaladriusMaturus->player, no cast, single-target
1313
AutoAttack2 = 870, // AlbusGriffin->player, no cast, single-target
1414

1515
TransonicBlast = 32535, // Caladrius->self, 4.0s cast, range 9 90-degree cone
@@ -18,13 +18,13 @@ public enum AID : uint
1818
GoldenTalons = 32787, // AlbusGriffin->self, 4.5s cast, range 8 90-degree cone
1919
}
2020

21-
class TransonicBlast(BossModule module) : Components.SimpleAOEs(module, (uint)AID.TransonicBlast, new AOEShapeCone(9f, 45f.Degrees()));
22-
class WindsOfWinter(BossModule module) : Components.RaidwideCast(module, (uint)AID.WindsOfWinter);
23-
class WindsOfWinterStunHint(BossModule module) : Components.CastInterruptHint(module, (uint)AID.WindsOfWinter, false, true);
24-
class GoldenTalons(BossModule module) : Components.SimpleAOEs(module, (uint)AID.GoldenTalons, new AOEShapeCone(8f, 45f.Degrees()));
25-
class Freefall(BossModule module) : Components.SimpleAOEs(module, (uint)AID.Freefall, 8f);
21+
sealed class TransonicBlast(BossModule module) : Components.SimpleAOEs(module, (uint)AID.TransonicBlast, new AOEShapeCone(9f, 45f.Degrees()));
22+
sealed class WindsOfWinter(BossModule module) : Components.RaidwideCast(module, (uint)AID.WindsOfWinter);
23+
sealed class WindsOfWinterStunHint(BossModule module) : Components.CastInterruptHint(module, (uint)AID.WindsOfWinter, false, true);
24+
sealed class GoldenTalons(BossModule module) : Components.SimpleAOEs(module, (uint)AID.GoldenTalons, new AOEShapeCone(8f, 45f.Degrees()));
25+
sealed class Freefall(BossModule module) : Components.SimpleAOEs(module, (uint)AID.Freefall, 8f);
2626

27-
class D110AlbusGriffinStates : StateMachineBuilder
27+
sealed class D110AlbusGriffinStates : StateMachineBuilder
2828
{
2929
public D110AlbusGriffinStates(D110AlbusGriffin module) : base(module)
3030
{
@@ -38,11 +38,13 @@ public D110AlbusGriffinStates(D110AlbusGriffin module) : base(module)
3838
{
3939
var enemy = enemies[i];
4040
if (!enemy.IsDeadOrDestroyed)
41+
{
4142
return false;
43+
}
4244
}
4345
return true;
4446
};
45-
TrivialPhase(1)
47+
TrivialPhase(1u)
4648
.ActivateOnEnter<Freefall>()
4749
.ActivateOnEnter<WindsOfWinter>()
4850
.ActivateOnEnter<WindsOfWinterStunHint>()
@@ -51,23 +53,25 @@ public D110AlbusGriffinStates(D110AlbusGriffin module) : base(module)
5153
{
5254
var enemies = module.Enemies(D110AlbusGriffin.TrashP1);
5355
var count = enemies.Count;
54-
var allDestroyed = true;
56+
var trashP1Destroyed = true;
5557
for (var i = 0; i < count; ++i)
5658
{
5759
var enemy = enemies[i];
5860
if (!enemy.IsDestroyed)
59-
allDestroyed = false;
61+
{
62+
trashP1Destroyed = false;
63+
}
6064
}
6165
var albus = module.Enemies((uint)OID.AlbusGriffin);
62-
return allDestroyed || albus.Count != 0 && albus[0].IsDeadOrDestroyed;
66+
return trashP1Destroyed && albus.Count != 0 && albus[0].IsDeadOrDestroyed;
6367
};
6468
}
6569
}
6670

67-
[ModuleInfo(BossModuleInfo.Maturity.Verified, Contributors = "Malediktus", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 896, NameID = 12245)]
68-
public class D110AlbusGriffin(WorldState ws, Actor primary) : BossModule(ws, primary, new(47f, -570.5f), new ArenaBoundsRect(8.5f, 11.5f))
71+
[ModuleInfo(BossModuleInfo.Maturity.Verified, PrimaryActorOID = (uint)OID.CaladriusMaturus, Contributors = "Malediktus", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 896u, NameID = 12245u, Category = BossModuleInfo.Category.Dungeon, Expansion = BossModuleInfo.Expansion.Endwalker, SortOrder = 1)]
72+
public sealed class D110AlbusGriffin(WorldState ws, Actor primary) : BossModule(ws, primary, new(47f, -570.5f), new ArenaBoundsRect(8.5f, 11.5f))
6973
{
70-
public static readonly uint[] TrashP1 = [(uint)OID.Boss, (uint)OID.Caladrius];
74+
public static readonly uint[] TrashP1 = [(uint)OID.CaladriusMaturus, (uint)OID.Caladrius];
7175
protected override void DrawEnemies(int pcSlot, Actor pc)
7276
{
7377
Arena.Actor(PrimaryActor);

0 commit comments

Comments
 (0)