Exemplo n.º 1
0
        private static void Game_OnTick(EventArgs args)
        {
            DangerBuffsDetected.RemoveAll(b => b.Ended);
            foreach (var target in EntityManager.Heroes.AllHeroes)
            {
                var dangerbuffs = DangerBuffDataDatabase.List.FindAll(b => target.HasBuff(b.BuffName));
                if (!dangerbuffs.Any())
                {
                    return;
                }

                foreach (var data in dangerbuffs)
                {
                    var thebuff = target.GetBuff(data.BuffName);
                    var caster  = thebuff?.Caster as AIHeroClient;
                    if (caster != null && caster.IsValid)
                    {
                        var detected = new DetectedDangerBuffData
                        {
                            Caster = caster,
                            Target = target,
                            Buff   = thebuff,
                            Data   = data
                        };

                        Add(detected);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            var caster = sender as AIHeroClient;

            if (caster == null)
            {
                return;
            }

            foreach (var data in _currentBuffs.Where(b => b.Hero.Equals(caster.Hero) && b.RequireCast && !string.IsNullOrEmpty(b.BuffName) && b.Slot == args.Slot))
            {
                foreach (var obj in ObjectManager.Get <Obj_AI_Base>().Where(o => o.IsValidTarget() && o.Team != caster.Team && o.HasBuff(data.BuffName)))
                {
                    var getBuff = obj.GetBuff(data.BuffName);
                    if (getBuff != null)
                    {
                        var detected = new DetectedDangerBuffData
                        {
                            Caster = caster,
                            Target = obj,
                            Buff   = getBuff,
                            Data   = data
                        };

                        Add(detected);
                    }
                }
            }
        }
Exemplo n.º 3
0
        internal static void Invoke(DetectedDangerBuffData args)
        {
            var invocationList = OnUpdate?.GetInvocationList();

            if (invocationList != null)
            {
                foreach (var m in invocationList)
                {
                    m?.DynamicInvoke(args);
                }
            }
        }
Exemplo n.º 4
0
        public static void Add(DetectedDangerBuffData data)
        {
            if (data == null)
            {
                Console.WriteLine("Invalid DetectedDangerBuffData");
                return;
            }

            OnDangerBuffDetected.Invoke(data);

            if (!DangerBuffsDetected.Contains(data))
            {
                DangerBuffsDetected.Add(data);
            }
        }
Exemplo n.º 5
0
        private static void Obj_AI_Base_OnBuffGain(Obj_AI_Base sender, Obj_AI_BaseBuffGainEventArgs args)
        {
            var thebuff = args.Buff;
            var caster  = thebuff?.Caster as AIHeroClient;

            if (caster != null && caster.IsValid)
            {
                foreach (var data in _currentBuffs.Where(b => b.Hero.Equals(caster.Hero) && !b.RequireCast && !string.IsNullOrEmpty(b.BuffName) &&
                                                         (b.BuffName.Equals(args.Buff.Name, StringComparison.CurrentCultureIgnoreCase) ||
                                                          b.BuffName.Equals(args.Buff.DisplayName, StringComparison.CurrentCultureIgnoreCase))))
                {
                    var detected = new DetectedDangerBuffData
                    {
                        Caster = caster,
                        Target = sender,
                        Buff   = thebuff,
                        Data   = data
                    };

                    Add(detected);
                }
            }
        }
Exemplo n.º 6
0
        private static void OnDangerBuffUpdate_OnUpdate(DetectedDangerBuffData args)
        {
            if (args.Caster == null || !Spells.E.IsReady() || !args.Caster.IsEnemy || !args.WillHit(Player.Instance))
            {
                return;
            }

            var spellname = args.Data.MenuItemName;
            var spell     = EnabledSpells.FirstOrDefault(s => s.SpellName.Equals(spellname));

            if (spell == null)
            {
                Logger.Warn($"{spellname} Not valid Spell");
                return;
            }

            if (!spell.Enabled && (!Meniu.BlockExecute || Player.Instance.PredictHealth(args.TicksLeft) > args.GetSpellDamage(Player.Instance)))
            {
                Logger.Warn($"{spellname} Not Enabled from Menu");
                return;
            }

            Block(args, spell);
        }