Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge vbm #622

Merged
merged 67 commits into from
Feb 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
3832210
Angle-relative dashes
Akechi-kun Feb 4, 2025
811f20c
Merge branch 'awgil:master' into lab
Akechi-kun Feb 4, 2025
c6170ad
Regress minLevel
Akechi-kun Feb 4, 2025
2a7e1dd
Merge branch 'lab' of https://github.com/Akechi-kun/ffxiv_bossmod int…
Akechi-kun Feb 4, 2025
4dc4e50
nothing to see here
Akechi-kun Feb 4, 2025
073dc76
oh
Akechi-kun Feb 4, 2025
cac919d
Regress breaks ar without this condition lmfao
Akechi-kun Feb 4, 2025
35662f8
WAR fixes, AST cleanup
Akechi-kun Feb 4, 2025
cbc864a
NIN cleanup
Akechi-kun Feb 4, 2025
200e9a0
SCH cleanup, remove summons and replace with Seraph only
Akechi-kun Feb 4, 2025
181eb12
hm
Akechi-kun Feb 4, 2025
baf0901
Merge branch 'awgil:master' into lab
Akechi-kun Feb 5, 2025
2c316fb
we're gaming
Akechi-kun Feb 5, 2025
147d50b
.
Akechi-kun Feb 5, 2025
3fc7b5c
`Player.Pos.Y`
Akechi-kun Feb 5, 2025
7e23381
Merge branch 'awgil:master' into lab
Akechi-kun Feb 6, 2025
37877d2
Passage of Arms (I forgot about this)
Akechi-kun Feb 7, 2025
a9f9d34
Merge branch 'master' into lab
Akechi-kun Feb 8, 2025
0b2aae2
small improvements
Akechi-kun Feb 9, 2025
e08c1ba
`Tank` goal zones fix
Akechi-kun Feb 9, 2025
3b35c52
forgot these
Akechi-kun Feb 9, 2025
b0896b1
even more GNB options & optis
Akechi-kun Feb 9, 2025
509b1b6
small tools cleanup, prep for `AkechiGNBPvP` fixes
Akechi-kun Feb 10, 2025
cc10f69
kinda fix `AkechiGNBPvP` (LB & `RoughDivide`)
Akechi-kun Feb 10, 2025
9961094
Fix up this shit, this module was omega broken kek
Akechi-kun Feb 11, 2025
92a58c1
xdd
Akechi-kun Feb 11, 2025
07c30fb
Okay, last fixes to PvP stuff
Akechi-kun Feb 11, 2025
56124f8
fix error
Akechi-kun Feb 11, 2025
1099ac0
Merge branch 'awgil:master' into lab
Akechi-kun Feb 11, 2025
caa2b41
fix autopull UI categorization
xanunderscore Feb 11, 2025
5a1fd8d
initial commit for hydatos wip stuff
xanunderscore Feb 11, 2025
50cbb72
fix auto-targeting oops
Akechi-kun Feb 11, 2025
015b23d
Merge branch 'lab' of https://github.com/Akechi-kun/ffxiv_bossmod int…
Akechi-kun Feb 11, 2025
fcb6934
opt-in cleansability
xanunderscore Feb 11, 2025
876c259
add "mount => do nothing" strategy to auto target preset
xanunderscore Feb 12, 2025
d7b54fc
only navigate when positional is imminent
xanunderscore Feb 12, 2025
3d507b8
fix dup name issue
xanunderscore Feb 12, 2025
ebae1f5
tanking goalzone
xanunderscore Feb 12, 2025
bb3bda7
add foray info and max MP to actorstate
xanunderscore Feb 12, 2025
aeb82f1
whoops hpmp
xanunderscore Feb 13, 2025
fc6f423
improve positionals
xanunderscore Feb 13, 2025
2213f03
max pull logic for dd
xanunderscore Feb 13, 2025
50a958b
include obstacles in boss modules
xanunderscore Feb 13, 2025
acbb91e
improve module viewer categorization for NM
xanunderscore Feb 13, 2025
5a6795a
should check if this works at 90
xanunderscore Feb 13, 2025
34b2c14
hydatos: add golde
xanunderscore Feb 13, 2025
7f7ff75
improve autofarm logic for party members
xanunderscore Feb 13, 2025
4233919
shorten `AkechiTools` by removing redundant XMLs
Akechi-kun Feb 13, 2025
02ec692
last little cleanup
Akechi-kun Feb 14, 2025
8fd7107
fix aoe target range bug
xanunderscore Feb 15, 2025
ccbd83a
delete bad prio stuff
xanunderscore Feb 17, 2025
d7c0231
set adds pointless in ceto
xanunderscore Feb 17, 2025
3d31d6e
add global fate event
xanunderscore Feb 19, 2025
06da3c0
move fate spawns to clientstate
xanunderscore Feb 19, 2025
1e6a46f
improve targeting behavior
xanunderscore Feb 19, 2025
00206e4
support prio override for pot
xanunderscore Feb 20, 2025
9ce7a07
make hydatos dropdown work more gooder
xanunderscore Feb 20, 2025
74d52b8
use tank mits when attacked
xanunderscore Feb 20, 2025
f1e9118
stuff
Akechi-kun Feb 20, 2025
b577ebf
add shared data consumer code for navmesh interop
xanunderscore Feb 20, 2025
bb9fd42
Merge branch 'awgil:master' into lab
Akechi-kun Feb 20, 2025
ea4a267
ok then
xanunderscore Feb 20, 2025
0284898
Merge branch 'awgil:master' into lab
Akechi-kun Feb 20, 2025
5e154b1
Requested Changes
Akechi-kun Feb 20, 2025
5c7f662
Merge pull request #585 from Akechi-kun/lab
xanunderscore Feb 20, 2025
2eee8d2
Merge branch 'merge' into mergeWIP
CarnifexOptimus Feb 22, 2025
8d4346b
merge fixes
CarnifexOptimus Feb 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions BossMod/ActionQueue/Tanks/GNB.cs
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ public enum SID : uint
HeartOfCorundumPvP = 4295, // applied by Heart of Corundum to self
CatharsisOfCorundumPvP = 4296, // applied by Heart of Corundum to self
RelentlessRushPvP = 3052,
RelentlessShrapnelPvP = 3053,

//Shared
Elixir = ClassShared.AID.Elixir,
Expand Down
27 changes: 19 additions & 8 deletions BossMod/Autorotation/MiscAI/AutoFarm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

public sealed class AutoFarm(RotationModuleManager manager, Actor player) : RotationModule(manager, player)
{
public enum Track { General, Fate, Specific }
public enum Track { General, Fate, Specific, Mount }
public enum GeneralStrategy { FightBack, AllowPull, Aggressive, Passive }
public enum PriorityStrategy { None, Prioritize }
public enum MountedStrategy { None, DisableFightBack, DisableAll }

public static RotationModuleDefinition Definition()
{
Expand All @@ -24,6 +25,11 @@ public static RotationModuleDefinition Definition()
.AddOption(PriorityStrategy.None, "None", "Do not do anything special")
.AddOption(PriorityStrategy.Prioritize, "Prioritize", "Prioritize specific mobs by targeting criterion");

res.Define(Track.Mount).As<MountedStrategy>("Mount")
.AddOption(MountedStrategy.None, "None", "Do not do anything special")
.AddOption(MountedStrategy.DisableFightBack, "NoFightBack", "Do not engage previously uninteresting mobs if they aggro on player")
.AddOption(MountedStrategy.DisableAll, "NoAll", "Do not engage anything while mounted");

return res;
}

Expand All @@ -34,6 +40,11 @@ public override void Execute(StrategyValues strategy, Actor? primaryTarget, floa
if (generalStrategy == GeneralStrategy.Passive)
return;

var mountStrategy = strategy.Option(Track.Mount).As<MountedStrategy>();
var mounted = Player.MountId > 0;
if (mounted && mountStrategy == MountedStrategy.DisableAll)
return;

var allowPulling = generalStrategy switch
{
GeneralStrategy.AllowPull => !Player.InCombat,
Expand All @@ -58,14 +69,12 @@ void prioritize(AIHints.Enemy e, int prio)
// first deal with pulling new enemies
if (allowPulling)
{
if (Utils.IsPlayerSyncedToFate(World) && strategy.Option(Track.Fate).As<PriorityStrategy>() == PriorityStrategy.Prioritize)
var allowFate = Utils.IsPlayerSyncedToFate(World) && strategy.Option(Track.Fate).As<PriorityStrategy>() == PriorityStrategy.Prioritize;
foreach (var e in Hints.PotentialTargets)
{
foreach (var e in Hints.PotentialTargets)
if (allowFate && e.Actor.FateID == World.Client.ActiveFate.ID && e.Priority == AIHints.Enemy.PriorityUndesirable)
{
if (e.Actor.FateID == World.Client.ActiveFate.ID && e.Priority == AIHints.Enemy.PriorityUndesirable)
{
prioritize(e, 1);
}
prioritize(e, 1);
}
}

Expand All @@ -85,7 +94,9 @@ void prioritize(AIHints.Enemy e, int prio)
}

// if we did not select an enemy to pull, see if we can target something higher-priority than what we have now
if (switchTarget == null && Player.InCombat)
// if mounted, check if the "fight back" strategy is undesired
var mountNoFightBack = mounted && mountStrategy == MountedStrategy.DisableFightBack;
if (switchTarget == null && Player.InCombat && !mountNoFightBack)
{
var curTargetPrio = Hints.FindEnemy(primaryTarget)?.Priority ?? int.MinValue;
switchTarget = ResolveTargetOverride(generalOpt.Value) ?? (curTargetPrio < Hints.HighestPotentialTargetPriority ? Hints.PriorityTargets.MinBy(e => (e.Actor.Position - Player.Position).LengthSq())?.Actor : null);
Expand Down
2 changes: 1 addition & 1 deletion BossMod/Autorotation/MiscAI/AutoPull.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public enum Track { QuestBattle, DeepDungeon, EpicEcho, Hunt }

public static RotationModuleDefinition Definition()
{
var def = new RotationModuleDefinition("Misc AI: Auto-pull", "Automatically attack passive mobs in certain circumstances", "Misc", "xan", RotationModuleQuality.Basic, new(~0ul), 1000, Order: RotationModuleOrder.HighLevel, CanUseWhileRoleplaying: true);
var def = new RotationModuleDefinition("Auto-pull", "Automatically attack passive mobs in certain circumstances", "AI", "xan", RotationModuleQuality.Basic, new(~0ul), 1000, Order: RotationModuleOrder.HighLevel, CanUseWhileRoleplaying: true);

def.AbilityTrack(Track.QuestBattle, "Automatically attack solo duty bosses");
def.AbilityTrack(Track.DeepDungeon, "Automatically attack deep dungeon bosses when solo");
Expand Down
7 changes: 6 additions & 1 deletion BossMod/Autorotation/RotationModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,14 @@ public int FindDutyActionSlot(ActionID action, ActionID other)

protected (Actor? Target, P Priority) FindBetterTargetBy<P>(Actor? initial, float maxDistanceFromPlayer, Func<Actor, P> prioFunc, Func<AIHints.Enemy, bool>? filterFunc = null) where P : struct, IComparable
{
bool inRange(Actor tar) => tar.Position.InCircle(Player.Position, maxDistanceFromPlayer + tar.HitboxRadius + 0.5f);

if (initial != null && !inRange(initial))
initial = null;

var bestTarget = initial;
var bestPrio = initial != null ? prioFunc(initial) : default;
foreach (var enemy in Hints.PriorityTargets.Where(x => x.Actor != initial && x.Actor.Position.InCircle(Player.Position, maxDistanceFromPlayer + x.Actor.HitboxRadius) && (filterFunc?.Invoke(x) ?? true)))
foreach (var enemy in Hints.PriorityTargets.Where(x => x.Actor != initial && inRange(x.Actor) && (filterFunc?.Invoke(x) ?? true)))
{
var newPrio = prioFunc(enemy.Actor);
if (newPrio.CompareTo(bestPrio) > 0)
Expand Down
Loading