protected override void DoAction(BossPartStateController controller) { BossPart bossPart = controller.bossPart; Ability ability = AbilityUtils.FindAbilityByName( "Boss_MiniDebuffAoeAbility", bossPart.GetAbilityAgent().abilitiesMulti ); if (!ability || !(ability is AoeAbility)) { return; } AoeAbility aoeAbility = (AoeAbility)ability; var reachabeEnemies = WorkManager.FindReachableObjects(controller.nearbyEnemies, bossPart.transform.position, ability.range); // wait till at least 2 targets are reachable if (ability != null && ability.IsReady() && reachabeEnemies.Count > 1) { var abilityTarget = AoeUtils.GetAoeTargetPosition( ability.range, reachabeEnemies, bossPart.GetPlayer() ); bossPart.UseAbility(abilityTarget, aoeAbility); } }
protected override void ChooseAbilityToUse(UnitStateController controller) { Unit unit = controller.unit; Ability ability = AbilityUtils.FindAbilityByName("DBEnemyMiniDebuffAoeAbility", unit.GetAbilityAgent().abilitiesMulti); var reachabeEnemies = WorkManager.FindReachableObjects(controller.nearbyEnemies, unit.transform.position, ability.range); if (ability != null && ability.IsReady() && reachabeEnemies.Count > 0) { var abilityTargets = reachabeEnemies; controller.aoeAbilityTarget = AoeUtils.GetAoeTargetPosition( ability.range, abilityTargets.ToList(), unit.GetPlayer() ); controller.abilityToUse = ability; } }