Skip to content

Commit

Permalink
Added an option to forbid modules auto executing actions.
Browse files Browse the repository at this point in the history
  • Loading branch information
awgil committed Jul 26, 2024
1 parent ac8d2ef commit 7d27f44
Show file tree
Hide file tree
Showing 89 changed files with 96 additions and 179 deletions.
7 changes: 5 additions & 2 deletions BossMod/BossModule/BossModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -216,13 +216,15 @@ public BossComponent.GlobalHints CalculateGlobalHints()
return hints;
}

// TODO: should not be virtual
public virtual void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
public void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
hints.Center = Center;
hints.Bounds = Bounds;
foreach (var comp in _components)
comp.AddAIHints(slot, actor, assignment, hints);
CalculateModuleAIHints(slot, actor, assignment, hints);
if (!WindowConfig.AllowAutomaticActions)
hints.ActionsToExecute.Clear();
}

public virtual bool NeedToJump(WPos from, WDir dir) => false; // if arena has complicated shape that requires jumps to navigate, module can provide this info to AI
Expand All @@ -244,6 +246,7 @@ public void ReportError(BossComponent? comp, string message)
protected virtual void UpdateModule() { }
protected virtual void DrawArenaBackground(int pcSlot, Actor pc) { } // before modules background
protected virtual void DrawArenaForeground(int pcSlot, Actor pc) { } // after border, before modules foreground
protected virtual void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints) { }

// called at the very end to draw important enemies, default implementation draws primary actor
protected virtual void DrawEnemies(int pcSlot, Actor pc)
Expand Down
3 changes: 3 additions & 0 deletions BossMod/BossModule/BossModuleConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ public class BossModuleConfig : ConfigNode
[PropertyDisplay("Show outlines and shadows on various radar markings")]
public bool ShowOutlinesAndShadows = false;

[PropertyDisplay("Allow modules to automatically use actions (eg anti knockback, etc)")]
public bool AllowAutomaticActions = true;

[PropertyDisplay("Minimal maturity for the module to be loaded")]
public BossModuleInfo.Maturity MinMaturity = BossModuleInfo.Maturity.Contributed;
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,8 @@ public D012SanduruvaStates(BossModule module) : base(module)
[ModuleInfo(BossModuleInfo.Maturity.Contributed, Contributors = "dhoggpt, Malediktus", GroupType = BossModuleInfo.GroupType.CFC, GroupID = 783, NameID = 10257)]
public class D012Sanduruva(WorldState ws, Actor primary) : BossModule(ws, primary, new(-258, -26), new ArenaBoundsCircle(20))
{
public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,9 +217,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actors(Enemies(OID.Sanduruva), ArenaColor.Enemy);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Vulnerable);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,9 +153,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Enemy);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Enemy);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,8 @@ public class Stage09 : BossModule
ActivateComponent<Hints>();
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,9 +181,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object, false);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Enemy);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,8 @@ protected override void DrawEnemies(int pcSlot, Actor pc)
Arena.Actor(s, ArenaColor.Object, false);
}

public override void CalculateAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
protected override void CalculateModuleAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints)
{
base.CalculateAIHints(slot, actor, assignment, hints);
foreach (var e in hints.PotentialTargets)
{
e.Priority = (OID)e.Actor.OID switch
Expand Down
Loading

0 comments on commit 7d27f44

Please sign in to comment.