Exemple #1
0
        private static void Obj_AI_Base_OnBasicAttack(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            var caster = sender as AIHeroClient;
            var target = args.Target as Obj_AI_Base;

            if (caster == null || target == null || !caster.IsValid || !target.IsValid)
            {
                return;
            }

            var infos = EmpowerdAttackDataDatabase.List.FindAll(s => s.Hero.Equals(caster.Hero));

            foreach (var info in infos)
            {
                var attackname        = string.IsNullOrEmpty(info.AttackName) || info.AttackName.Equals(args.SData.Name, StringComparison.CurrentCultureIgnoreCase);
                var requirebuff       = string.IsNullOrEmpty(info.RequireBuff) || caster.GetBuffCount(info.RequireBuff) >= info.RequiredBuffCount;
                var targetrequirebuff = string.IsNullOrEmpty(info.TargetRequiredBuff) || target.GetBuffCount(info.TargetRequiredBuff) >= info.TargetRequiredBuffCount;
                var donthavebuff      = string.IsNullOrEmpty(info.DontHaveBuff) || !target.HasBuff(info.DontHaveBuff);
                if (attackname && requirebuff && targetrequirebuff && donthavebuff)
                {
                    var detected = new DetectedEmpoweredAttackData
                    {
                        Caster = caster,
                        Target = target,
                        Data   = info
                    };

                    Add(detected);
                }
            }
        }
Exemple #2
0
        private static void Add(DetectedEmpoweredAttackData data)
        {
            if (data == null || DetectedEmpoweredAttacks.Contains(data))
            {
                Console.WriteLine("Invalid DetectedEmpoweredAttackData");
                return;
            }

            OnEmpoweredAttackDetected.Invoke(data);
            DetectedEmpoweredAttacks.Add(data);
        }
Exemple #3
0
        internal static void Invoke(DetectedEmpoweredAttackData args)
        {
            var invocationList = OnDetect?.GetInvocationList();

            if (invocationList != null)
            {
                foreach (var m in invocationList)
                {
                    m?.DynamicInvoke(args);
                }
            }
        }
        private static void Add(DetectedEmpoweredAttackData data)
        {
            if (data == null || DetectedEmpoweredAttacks.Contains(data))
            {
                Console.WriteLine("Invalid DetectedEmpoweredAttackData");
                return;
            }

            if (data.Missile != null)
            {
                var detect = DetectedEmpoweredAttacks.FirstOrDefault(a => a.Caster.IdEquals(data.Caster) && a.Missile == null && a.Data.Equals(data.Data));
                if (detect != null)
                {
                    DetectedEmpoweredAttacks.Remove(detect);
                }
            }

            OnEmpoweredAttackDetected.Invoke(data);
            DetectedEmpoweredAttacks.Add(data);
        }
Exemple #5
0
        private static void OnEmpoweredAttackUpdate_OnUpdate(DetectedEmpoweredAttackData 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);
        }
 private static void OnEmpoweredAttackDetected_OnDetect(DetectedEmpoweredAttackData args)
 {
     Console.WriteLine($"{args.Data.MenuItemName} {args.TicksLeft} {Core.GameTickCount} / {args.AttackCastDelay} {args.Speed}");
 }