Esempio n. 1
0
        public async void OnUpdate()
        {
            while (processing)
            {
                await Task.Delay(2000);

                foreach (var unit in ObjectManager.GetEntities <Unit>()
                         .Where(
                             x => !(x is Building) && x.IsValid && x.IsAlive && x.IsSpawned &&
                             (!x.IsIllusion || x.HasModifiers(
                                  new[]
                {
                    "modifier_arc_warden_tempest_double",
                    "modifier_vengefulspirit_hybrid_special",
                    "modifier_morph_hybrid_special"
                },
                                  false))))
                {
                    var abilities = new List <Ability>();

                    try
                    {
                        abilities.AddRange(unit.Spellbook.Spells.ToList());

                        if (unit.HasInventory)
                        {
                            abilities.AddRange(
                                unit.Inventory.Items.Where(x => x.Purchaser.Hero?.Handle == unit.Handle));
                        }
                    }
                    catch
                    {
                        continue;
                    }

                    foreach (var ability in abilities.Where(
                                 x => x.IsValid && !addedAbilities.Contains(x.Handle) && x.Level > 0))
                    {
                        if (unit.Equals(Hero))
                        {
                            var abilityName = ability.Name;

                            Func <Ability, UsableAbility> func;
                            if (allyAbilitiesData.CounterAbilities.TryGetValue(abilityName, out func))
                            {
                                Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Counter);
                                UsableAbilities.Add(func.Invoke(ability));
                            }
                            if (allyAbilitiesData.DisableAbilities.TryGetValue(abilityName, out func))
                            {
                                Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Disable);
                                UsableAbilities.Add(func.Invoke(ability));
                            }
                            if (allyAbilitiesData.BlinkAbilities.TryGetValue(abilityName, out func))
                            {
                                Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Blink);
                                UsableAbilities.Add(func.Invoke(ability));
                            }
                        }
                        else if (unit.Team != HeroTeam ||
                                 ability.Id == AbilityId.faceless_void_chronosphere)
                        {
                            Func <Ability, EvadableAbility> func;
                            if (enemyAbilitiesData.EvadableAbilities.TryGetValue(ability.Name, out func))
                            {
                                var evadableAbility = func.Invoke(ability);

                                if (Menu.Debug.FastAbilityAdd)
                                {
                                    Menu.EnemiesSettings.AddAbility(evadableAbility);
                                }
                                else
                                {
                                    await Menu.EnemiesSettings.AddAbility(evadableAbility);
                                }

                                EvadableAbilities.Add(evadableAbility);
                            }
                        }

                        addedAbilities.Add(ability.Handle);
                    }
                }
            }
        }
Esempio n. 2
0
        public void OnUpdate(EventArgs args)
        {
            if (sleeper.Sleeping)
            {
                return;
            }

            foreach (var unit in ObjectManager.GetEntitiesParallel <Unit>()
                     .Where(
                         x => !(x is Building) && x.IsValid && x.IsAlive && x.IsSpawned &&
                         (!x.IsIllusion || x.HasModifiers(
                              new[]
            {
                "modifier_arc_warden_tempest_double",
                "modifier_vengefulspirit_hybrid_special",
                "modifier_morph_hybrid_special"
            },
                              false))))
            {
                var abilities = new List <Ability>();

                try
                {
                    abilities.AddRange(unit.Spellbook.Spells.ToList());

                    if (unit.HasInventory)
                    {
                        abilities.AddRange(unit.Inventory.Items);
                    }
                }
                catch
                {
                    continue;
                }

                foreach (var ability in abilities.Where(
                             x => x.IsValid && !addedAbilities.Contains(x.Handle) && x.Level > 0))
                {
                    if (unit.Equals(Hero))
                    {
                        var abilityName = ability.Name;

                        Func <Ability, UsableAbility> func;
                        if (allyAbilitiesData.CounterAbilities.TryGetValue(abilityName, out func))
                        {
                            Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Counter);
                            UsableAbilities.Add(func.Invoke(ability));
                        }
                        if (allyAbilitiesData.DisableAbilities.TryGetValue(abilityName, out func))
                        {
                            Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Disable);
                            UsableAbilities.Add(func.Invoke(ability));
                        }
                        if (allyAbilitiesData.BlinkAbilities.TryGetValue(abilityName, out func))
                        {
                            Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Blink);
                            UsableAbilities.Add(func.Invoke(ability));
                        }
                    }
                    else if (unit.Team != HeroTeam || ability.ClassId
                             == ClassId.CDOTA_Ability_FacelessVoid_Chronosphere)
                    {
                        Func <Ability, EvadableAbility> func;
                        if (enemyAbilitiesData.EvadableAbilities.TryGetValue(ability.Name, out func))
                        {
                            var evadableAbility = func.Invoke(ability);

                            Menu.EnemiesSettings.AddAbility(evadableAbility);
                            EvadableAbilities.Add(evadableAbility);
                        }
                    }

                    addedAbilities.Add(ability.Handle);
                }
            }

            sleeper.Sleep(3000);
        }