Skip to content

Commit

Permalink
POTD 110-140 + Lower POTD Updates
Browse files Browse the repository at this point in the history
-> Created modules for the following: 110, 120, 130, and 140
-> Went through and made the folllowing changes:
  -> Added a global hint for floor 100, gave a tip for using a resolution there for the Adds
-> Floor 110 forgot to add the Contributor field (woops)
->  Floor 20 -> I forgot to add the Palace Hornets to show up in the minimap, also gave them a priority of targeting if using AI mode
-> Floor 30 -> Made the formatting the same as floor 130 (personal preference of naming scheme) + made it show a different hint to tell players to move to the center of the arena after x4 cast are made.
-> Floor 40 -> Added priority targeting for the NightmareBhoots if using VBM's targeting system (they need to die first)
-> ARF module -> 3rd boss -> formatting error? surprised that slipped through the cracks
  • Loading branch information
LeontopodiumNivale14 committed Sep 26, 2024
1 parent e26bd81 commit 7b0cb3b
Show file tree
Hide file tree
Showing 9 changed files with 240 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,15 @@ class Catapult(BossModule module) : Components.LocationTargetedAOEs(module, Acti
class CorseAdds(BossModule module) : Components.AddsMulti(module, [(uint)OID.BicephalicCorse, (uint)OID.GiantCorse, (uint)OID.IronCorse]);
class Doom(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Doom), new AOEShapeCone(47.4f, 60.Degrees()));
class Shackle(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.Shackle), new AOEShapeRect(52.4f, 4, 0));
class SummonDarkness(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.SummonDarkness), "Summoning the corses, use Resolution if you want them permanently dead");
class SummonDarkness(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.SummonDarkness), "Summoning the corses, incoming Adds!");

class EncounterHints(BossModule module) : BossComponent(module)
{
public override void AddGlobalHints(GlobalHints hints)
{
hints.Add($"There is 3 sets of adds that spawn at HP %'s -> (90%, 65%, 40%) \nA resolution can make the adds permanently dissapear once they are at 0% HP/the corpse are just laying on the floor.\nResolution is also does high damage to the adds + 0.3% to the Boss\nSolo tip: Either pop a resolution on all add packs, or pop lust -> resolution on 2nd ad pack. Make sure to keep regen up!");
}
}

class D100NybethObdilordStates : StateMachineBuilder
{
Expand All @@ -39,7 +47,8 @@ public D100NybethObdilordStates(BossModule module) : base(module)
.ActivateOnEnter<CorseAdds>()
.ActivateOnEnter<Doom>()
.ActivateOnEnter<Shackle>()
.ActivateOnEnter<SummonDarkness>();
.ActivateOnEnter<SummonDarkness>()
.ActivateOnEnter<EncounterHints>();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@ public D110AlicantoStates(BossModule module) : base(module)
}
}

[ModuleInfo(BossModuleInfo.Maturity.Contributed, GroupType = BossModuleInfo.GroupType.CFC, GroupID = 209, NameID = 5371)]
[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 209, NameID = 5371)]
public class D110Alicanto(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -235), new ArenaBoundsCircle(25));
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D120Kirtimukha;

public enum OID : uint
{
Boss = 0x1819, // R3.600, x1
DeepPalaceHornet = 0x1905, // R0.400, x0 (spawn during fight)
}

public enum AID : uint
{
AutoAttack = 6499, // Boss->player, no cast, single-target
AutoAttackAdds = 6498, // DeepPalaceHornet->player, no cast, single-target
AcidMist = 7134, // Boss->self, 3.0s cast, range 6+R circle
BloodyCaress = 7133, // Boss->self, no cast, range 8+R 120-degree cone
FinalSting = 919, // DeepPalaceHornet->player, 3.0s cast, single-target
GoldDust = 7135, // Boss->location, 3.0s cast, range 8 circle
Leafstorm = 7136, // Boss->self, 3.0s cast, range 50 circle
RottenStench = 7137, // Boss->self, 3.0s cast, range 45+R width 12 rect
}

class AcidMist(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.AcidMist), new AOEShapeCircle(9.6f));
class BossAdds(BossModule module) : Components.Adds(module, (uint)OID.DeepPalaceHornet)
{
public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
foreach (var e in hints.PotentialTargets)
e.Priority = (OID)e.Actor.OID switch
{
OID.DeepPalaceHornet => 2,
OID.Boss => 1,
_ => 0
};
}
}
class BloodyCaress(BossModule module) : Components.Cleave(module, ActionID.MakeSpell(AID.BloodyCaress), new AOEShapeCone(11.6f, 60.Degrees()), activeWhileCasting: false);
class FinalSting(BossModule module) : Components.SingleTargetCast(module, ActionID.MakeSpell(AID.FinalSting), "Final sting is being cast! \nKill the add or take 98% of your hp!");
class GoldDust(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.GoldDust), 8);
class Leafstorm(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Leafstorm));
class RottenStench(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.RottenStench), new AOEShapeRect(47.6f, 6));

class D120KirtimukhaStates : StateMachineBuilder
{
public D120KirtimukhaStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<AcidMist>()
.ActivateOnEnter<BossAdds>()
.ActivateOnEnter<BloodyCaress>()
.ActivateOnEnter<FinalSting>()
.ActivateOnEnter<GoldDust>()
.ActivateOnEnter<Leafstorm>()
.ActivateOnEnter<RottenStench>();
}
}

[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 210, NameID = 5384)]
public class D120Kirtimukha(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -235), new ArenaBoundsCircle(24));
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
using BossMod.Heavensward.Dungeon.D06AetherochemicalResearchFacility.D062Harmachis;

namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D130Alfard;

public enum OID : uint
{
Boss = 0x181A, // R4.800, x1
FireVoidPuddle = 0x1E8D9B, // R0.500, x0 (spawn during fight), EventObj type
IceVoidPuddle = 0x1E8D9C, // R0.500, x0 (spawn during fight), EventObj type
}

public enum AID : uint
{
AutoAttack = 6501, // Boss->players, no cast, range 6+R ?-degree cone
BallOfFire = 7139, // Boss->location, no cast, range 6 circle
BallOfIce = 7140, // Boss->location, no cast, range 6 circle
Dissever = 7138, // Boss->self, no cast, range 6+R 90-degree cone
FearItself = 7141, // Boss->self, 2.0s cast, range 54+R circle
}

class Dissever(BossModule module) : Components.Cleave(module, ActionID.MakeSpell(AID.Dissever), new AOEShapeCone(10.8f, 45.Degrees()), activeWhileCasting: false);
class BallofFire(BossModule module) : Components.PersistentVoidzone(module, 6, m => m.Enemies(OID.FireVoidPuddle).Where(z => z.EventState != 7));
class BallofIce(BossModule module) : Components.PersistentVoidzone(module, 6, m => m.Enemies(OID.IceVoidPuddle).Where(z => z.EventState != 7));
class FearItself(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.FearItself), new AOEShapeDonut(5, 50));

class Hints(BossModule module) : BossComponent(module)
{
public int NumCasts { get; private set; }

public override void OnEventCast(Actor caster, ActorCastEvent spell)
{
if ((AID)spell.Action.ID is AID.BallOfFire or AID.BallOfIce or AID.FearItself)
++NumCasts;

if (NumCasts >= 5)
{
NumCasts = 0;
}
}

public override void AddGlobalHints(GlobalHints hints)
{
if (NumCasts < 4)
hints.Add($"Bait the boss away from the middle of the arena. \n{Module.PrimaryActor.Name} will cast x2 Fire Puddles & x2 Ice Puddles. \nAfter the 4th puddle is dropped, run to the middle.");
if (NumCasts >= 4)
hints.Add($"Run to the middle of the arena! \n{Module.PrimaryActor.Name} is about to cast a donut AOE!");
}
}

class D130AlfardStates : StateMachineBuilder
{
public D130AlfardStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<Dissever>()
.ActivateOnEnter<BallofFire>()
.ActivateOnEnter<BallofIce>()
.ActivateOnEnter<FearItself>()
.ActivateOnEnter<Hints>();
}
}

[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 211, NameID = 5397)]
public class D130Alfard(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -235), new ArenaBoundsCircle(25));
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
namespace BossMod.Modules.Heavensward.DeepDungeon.PalaceOfTheDead.D140AhPuch;

public enum OID : uint
{
Boss = 0x181B, // R3.800, x1
DeepPalaceFollower = 0x1906, // R1.800, x0 (spawn during fight)
AccursedPoxVoidZone = 0x1E8EA9, // R0.500, x0 (spawn during fight), EventObj type
}

public enum AID : uint
{
AutoAttack = 6498, // Boss->player, no cast, single-target
AccursedPox = 7146, // Boss->location, 3.0s cast, range 8 circle
AncientEruption = 7142, // Boss->location, 2.5s cast, range 4 circle
Blizzard = 967, // DeepPalaceFollower->player, 1.0s cast, single-target
EntropicFlame = 7143, // Boss->self, 3.0s cast, range 50+R width 8 rect
Scream = 7145, // Boss->self, 3.0s cast, range 30 circle
ShadowFlare = 7144, // Boss->self, 3.0s cast, range 25+R circle
}

class Adds(BossModule module) : Components.Adds(module, (uint)OID.DeepPalaceFollower)
{
public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
foreach (var e in hints.PotentialTargets)
e.Priority = (OID)e.Actor.OID switch
{
OID.DeepPalaceFollower => 2,
OID.Boss => 1,
_ => 0
};
}
}
class AccursedPox(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.AccursedPox), 8);
class AncientEruption(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.AncientEruption), 4);
class AncientEruptionZone(BossModule module) : Components.PersistentInvertibleVoidzone(module, 4, m => m.Enemies(OID.AccursedPoxVoidZone).Where(z => z.EventState != 7));
class EntropicFlame(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.EntropicFlame), new AOEShapeRect(53.8f, 4));
class Scream(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.Scream), "Raidwide + Fear, Adds need to be dead by now");
class ShadowFlare(BossModule module) : Components.RaidwideCast(module, ActionID.MakeSpell(AID.ShadowFlare));



class D140AhPuchStates : StateMachineBuilder
{
public D140AhPuchStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<Adds>()
.ActivateOnEnter<AccursedPox>()
.ActivateOnEnter<AncientEruption>()
.ActivateOnEnter<AncientEruptionZone>()
.ActivateOnEnter<EntropicFlame>()
.ActivateOnEnter<Scream>()
.ActivateOnEnter<ShadowFlare>();
}
}

[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "LegendofIceman", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 212, NameID = 5410)]
public class D140AhPuch(WorldState ws, Actor primary) : BossModule(ws, primary, new(-300, -237), new ArenaBoundsCircle(25));
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,19 @@ public enum AID : uint
RottenStench = 6425, // Boss->self, 3.0s cast, range 45+R width 12 rect
}

class BossAdds(BossModule module) : Components.Adds(module, (uint)OID.PalaceHornet)
{
public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
foreach (var e in hints.PotentialTargets)
e.Priority = (OID)e.Actor.OID switch
{
OID.PalaceHornet => 2,
OID.Boss => 1,
_ => 0
};
}
}
class AcidMist(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.AcidMist), new AOEShapeCircle(9.6f));
class BloodyCaress(BossModule module) : Components.Cleave(module, ActionID.MakeSpell(AID.BloodyCaress), new AOEShapeCone(11.6f, 60.Degrees()), activeWhileCasting: false);
class GoldDust(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.GoldDust), 8);
Expand All @@ -30,6 +43,7 @@ class D20SpurgeStates : StateMachineBuilder
public D20SpurgeStates(BossModule module) : base(module)
{
TrivialPhase()
.ActivateOnEnter<BossAdds>()
.ActivateOnEnter<AcidMist>()
.ActivateOnEnter<BloodyCaress>()
.ActivateOnEnter<GoldDust>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ namespace BossMod.Heavensward.DeepDungeon.PalaceoftheDead.D30Ningishzida;
public enum OID : uint
{
Boss = 0x16AC, // R4.800, x1
BallofFirePuddle = 0x1E8D9B, // R0.500, x0 (spawn during fight), EventObj type
BallofIcePuddle = 0x1E8D9C, // R0.500, x0 (spawn during fight), EventObj type
FireVoidPuddle = 0x1E8D9B, // R0.500, x0 (spawn during fight), EventObj type
IceVoidPuddle = 0x1E8D9C, // R0.500, x0 (spawn during fight), EventObj type
}

public enum AID : uint
Expand All @@ -17,15 +17,31 @@ public enum AID : uint
}

class Dissever(BossModule module) : Components.Cleave(module, ActionID.MakeSpell(AID.Dissever), new AOEShapeCone(10.8f, 45.Degrees()), activeWhileCasting: false);
class BallofFire(BossModule module) : Components.PersistentVoidzone(module, 6, m => m.Enemies(OID.BallofFirePuddle).Where(z => z.EventState != 7));
class BallofIce(BossModule module) : Components.PersistentVoidzone(module, 6, m => m.Enemies(OID.BallofIcePuddle).Where(z => z.EventState != 7));
class BallofFire(BossModule module) : Components.PersistentVoidzone(module, 6, m => m.Enemies(OID.FireVoidPuddle).Where(z => z.EventState != 7));
class BallofIce(BossModule module) : Components.PersistentVoidzone(module, 6, m => m.Enemies(OID.IceVoidPuddle).Where(z => z.EventState != 7));
class FearItself(BossModule module) : Components.SelfTargetedAOEs(module, ActionID.MakeSpell(AID.FearItself), new AOEShapeDonut(5, 50));

class Hints(BossModule module) : BossComponent(module)
{
public int NumCasts { get; private set; }

public override void OnEventCast(Actor caster, ActorCastEvent spell)
{
if ((AID)spell.Action.ID is AID.BallOfFire or AID.BallOfIce or AID.FearItself)
++NumCasts;

if (NumCasts >= 5)
{
NumCasts = 0;
}
}

public override void AddGlobalHints(GlobalHints hints)
{
hints.Add($" Bait the boss away from the middle of the arena. \n {Module.PrimaryActor.Name} will cast x2 Fire Puddles & x2 Ice Puddles, after the 4th puddle is dropped, run to the middle.");
if (NumCasts < 4)
hints.Add($"Bait the boss away from the middle of the arena. \n{Module.PrimaryActor.Name} will cast x2 Fire Puddles & x2 Ice Puddles. \nAfter the 4th puddle is dropped, run to the middle.");
if (NumCasts >= 4)
hints.Add($"Run to the middle of the arena! \n{Module.PrimaryActor.Name} is about to cast a donut AOE!");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,19 @@ public enum AID : uint
ShadowFlare = 6432, // Boss->self, 3.0s cast, range 25+R circle
}

class Adds(BossModule module) : Components.Adds(module, (uint)OID.NightmareBhoot);
class Adds(BossModule module) : Components.Adds(module, (uint)OID.NightmareBhoot)
{
public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
foreach (var e in hints.PotentialTargets)
e.Priority = (OID)e.Actor.OID switch
{
OID.NightmareBhoot => 2,
OID.Boss => 1,
_ => 0
};
}
}
class AccursedPox(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.AccursedPox), 8);
class AncientEruption(BossModule module) : Components.LocationTargetedAOEs(module, ActionID.MakeSpell(AID.AncientEruption), 4);
class AncientEruptionZone(BossModule module) : Components.PersistentInvertibleVoidzone(module, 4, m => m.Enemies(OID.AccursedPoxVoidZone).Where(z => z.EventState != 7));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ public enum AID : uint
ShadowFlare = 31885, // Igeyorhm/Boss->self, 5.0s cast, range 40 circle
}


public enum TetherID : uint
{
StarTether = 110 // BurningStar/FrozenStar->BurningStar/FrozenStar
Expand Down

0 comments on commit 7b0cb3b

Please sign in to comment.