public static void UseAbilities(Memory.Memory wow, String Type) { Ability[] Bindings = BindingsList.ToArray(); Prioritets = new AbilityPrioritet[BindingsList.Count, wow.Objects.Count]; if (EndCast <= DateTime.Now) { AbilityStatus = "Ready"; } if (AbilityStatus == "Ready") { for (int i = 0; i < Bindings.Length; i++) { //Прогоняем все абилы if (Bindings[i].Try < 5) { if ((DateTime.Now - Bindings[i].LastUse).TotalSeconds >= Bindings[i].CoolDown) { if ((Bindings[i].InCombat >= 0) & (Bindings[i].InCombat <= 2)) { CheckAbilityOptions(i, wow, Type); } } } } int MaxPriority = 0; int BestAbilityIndex = -1; int BestUnit = -1; for (int Unit = 0; Unit < wow.Objects.Count; Unit++) { for (int i = 0; i < BindingsList.Count; i++) { if (MaxPriority < Prioritets[i, Unit].Prioritet) { BestUnit = Unit; MaxPriority = Prioritets[i, Unit].Prioritet; BestAbilityIndex = i; } } } if (BestAbilityIndex != -1) { Target = WowControl.GetUnitIndexByGuid(wow, Prioritets[BestAbilityIndex, BestUnit].GUID); WowControl.SelectTarget(Prioritets[BestAbilityIndex, BestUnit].GUID); if (Target != 0) { Moving(wow, Target, BestAbilityIndex); } if (Target == 0) { Button(BindingsList[BestAbilityIndex].AbilityName); } int Health = 0; if (wow.Objects[Target].MaxHealth != 0) { Health = (int)Convert.ToInt64(Convert.ToDouble(wow.Objects[Target].Health) / Convert.ToDouble(wow.Objects[Target].MaxHealth) * 100); } WowControl.UpdateCombatLog(WowControl.GetTimeStr() + " Using \"" + Bindings[BestAbilityIndex].AbilityName + "\" on \"" + wow.Objects[Target].Name + "\" Health = " + Health + "."); Bindings[BestAbilityIndex].LastUse = BindingsList[BestAbilityIndex].LastUse; } else { Target = -1; } BindingsList.Clear(); for (int i = 0; i < Bindings.Length; i++) { BindingsList.Add(Bindings[i]); } } }