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 { /// /// 从已有的敌人列表中选取评分最高的目标。 /// public CharacterBase GetBestEnemy(List enemies) { if (enemies.Count == 0) return null; if (enemies.Count == 1) return enemies[0]; List scores = GetScoredEnemies(float.MaxValue); foreach (TargetingScore score in scores) { if (enemies.Contains(score.target)) { return score.target; } } return enemies[0]; } /// /// 从已有的敌人列表中进行评分,返回完整的评分列表(按分数从高到低)。 /// 适合后续通过 ApplyScoreModifier 施加修正。 /// public List GetScoredEnemies(List enemies, float radius = float.MaxValue, Transform origin = null) { List allScores = GetScoredEnemies(radius, origin); if (enemies == null || enemies.Count == 0) return allScores; List filtered = new List(enemies.Count); foreach (TargetingScore score in allScores) { if (enemies.Contains(score.target)) { filtered.Add(score); } } return filtered; } /// /// 获取可被扰乱的敌人列表: /// 目前获取的是当前可以受到Disruption打断,且有对应Buff(黄光,红光等)的敌人 /// public List GetDisruptableEnemies(List enemies, Breakthrough.Type breakthroughType = Breakthrough.Type.Disruption) { List disruptableEnemies = new List(); foreach (CharacterBase enemy in enemies) { bool hasBuff = enemy.buffSm.HasBuff(); if (!enemy.reactionSc.breakthroughResistances[breakthroughType].Value && hasBuff) { disruptableEnemies.Add(enemy); } } return disruptableEnemies; } } } }