Files
SoulliesOfficial b5cb6152ff MusicBeat
2026-05-26 00:21:27 -04:00

77 lines
2.8 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Collections.Generic;
using Cielonos.MainGame.Buffs.Character;
using Cielonos.MainGame.Characters;
using UnityEngine;
namespace Cielonos.MainGame
{
public partial class CombatManager
{
public partial class EnemySubmodule
{
/// <summary>
/// 从已有的敌人列表中选取评分最高的目标。
/// </summary>
public Enemy GetBestEnemy(List<Enemy> enemies)
{
if (enemies.Count == 0) return null;
if (enemies.Count == 1) return enemies[0];
List<TargetingScore> scores = GetScoredEnemies(float.MaxValue);
foreach (TargetingScore score in scores)
{
if (enemies.Contains(score.target))
{
return score.target;
}
}
return enemies[0];
}
/// <summary>
/// 从已有的敌人列表中进行评分,返回完整的评分列表(按分数从高到低)。
/// 适合后续通过 ApplyScoreModifier 施加修正。
/// </summary>
public List<TargetingScore> GetScoredEnemies(List<Enemy> enemies,
float radius = float.MaxValue, Transform origin = null)
{
List<TargetingScore> allScores = GetScoredEnemies(radius, origin);
if (enemies == null || enemies.Count == 0) return allScores;
List<TargetingScore> filtered = new List<TargetingScore>(enemies.Count);
foreach (TargetingScore score in allScores)
{
if (enemies.Contains(score.target))
{
filtered.Add(score);
}
}
return filtered;
}
/// <summary>
/// 获取可被扰乱的敌人列表:
/// <para>目前获取的是当前可以受到Disruption打断且有对应Buff黄光红光等的敌人</para>
/// </summary>
public List<Enemy> GetDisruptableEnemies(List<Enemy> enemies,
Breakthrough.Type breakthroughType = Breakthrough.Type.Disruption)
{
List<Enemy> disruptableEnemies = new List<Enemy>();
foreach (Enemy enemy in enemies)
{
bool hasBuff = enemy.buffSm.HasBuff<BreakthroughResistanceModification>();
if (!enemy.reactionSc.breakthroughResistances[breakthroughType].Value && hasBuff)
{
disruptableEnemies.Add(enemy);
}
}
return disruptableEnemies;
}
}
}
}