Example #1
0
        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]);
                }
            }
        }