public void OnRemoveEntity(EntityEventArgs args) { var handle = args.Entity.Handle; var disposable = UsableAbilities.FirstOrDefault(x => x.Handle == handle) as IDisposable; disposable?.Dispose(); EvadableAbilities.RemoveAll(x => x.Handle == handle || x.OwnerHandle == handle); UsableAbilities.RemoveAll(x => x.Handle == handle); }
//public async void OnUpdate(EventArgs args) //{ // if (processing || sleeper.Sleeping || !Game.IsInGame) // { // return; // } // processing = true; // 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); // if (Menu.Debug.FastAbilityAdd) // { // Menu.EnemiesSettings.AddAbility(evadableAbility); // } // else // { // await Menu.EnemiesSettings.AddAbility(evadableAbility); // } // EvadableAbilities.Add(evadableAbility); // } // } // addedAbilities.Add(ability.Handle); // } // } // sleeper.Sleep(3000); // processing = false; //} private void EntityOnOnInt64PropertyChange(Entity sender, Int64PropertyChangeEventArgs args) { if (args.OldValue != 0 || args.NewValue != 1 || args.PropertyName != "m_iIsControllableByPlayer64") { return; } if (sender.Team == HeroTeam && sender is Creep) { EvadableAbilities.RemoveAll(x => x.OwnerHandle == sender.Handle); } }
private void EntityOnOnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args) { if (args.NewValue == args.OldValue || args.NewValue > 0 || args.PropertyName != "m_iHealth") { return; } var creep = sender as Creep; if (creep == null || !creep.IsValid) { return; } EvadableAbilities.RemoveAll(x => x.OwnerHandle == creep.Handle); }