Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
fix: add a distance order for priority hostiles.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Apr 28, 2023
1 parent bf0e33e commit 6419a09
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions RotationSolver.Basic/Helpers/TargetFilter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,29 +37,30 @@ internal static BattleChara DefaultFindHostile(IEnumerable<BattleChara> availabl
{
if (availableCharas == null || !availableCharas.Any()) return null;

//去掉停止标记的怪
if (Service.Config.FilterStopMark)
{
var charas = MarkingHelper.FilterStopCharaes(availableCharas);
if (charas?.Any() ?? false) availableCharas = charas;
}

var b = availableCharas.FirstOrDefault(ObjectHelper.IsTopPriorityHostile);
if (b != null) return b;

if (DataCenter.TreasureCharas.Length > 0)
{
b = availableCharas.FirstOrDefault(b => b.ObjectId == DataCenter.TreasureCharas[0]);
var b = availableCharas.FirstOrDefault(b => b.ObjectId == DataCenter.TreasureCharas[0]);
if (b != null) return b;
availableCharas = availableCharas.Where(b => !DataCenter.TreasureCharas.Contains(b.ObjectId));
}

//根据默认设置排序怪
availableCharas = DefaultTargetingType(availableCharas);
var highPriority = availableCharas.Where(ObjectHelper.IsTopPriorityHostile);
if (highPriority.Any())
{
availableCharas = highPriority;
}
else
{
availableCharas = DefaultTargetingType(availableCharas);
}

//找到体积一样小的
float radius = availableCharas.FirstOrDefault()?.HitboxRadius ?? 0.5f;

return availableCharas.Where(c => c.HitboxRadius == radius)
.OrderBy(ObjectHelper.DistanceToPlayer).FirstOrDefault();
}
Expand Down

0 comments on commit 6419a09

Please sign in to comment.