예제 #1
0
        /// <summary>
        ///     Called while processing spellcast operations.
        /// </summary>

        /// <param name="args">The <see cref="AIBaseClientMissileClientDataEventArgs" /> instance containing the event data.</param>
        public void OnProcessSpellCast(AIBaseClient sender, AIBaseClientMissileClientDataEventArgs args)
        {
            /// <summary>
            ///     The Automatic E Logic.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Spells["e"]["logical"].As <MenuSliderBool>().Enabled)
            {
                Shield(sender, args);
            }
        }
예제 #2
0
        /// <summary>
        ///     Called while processing Spellcasting operations.
        /// </summary>

        /// <param name="args">The <see cref="AIBaseClientMissileClientDataEventArgs" /> instance containing the event data.</param>
        public void Shield(AIBaseClient sender, AIBaseClientMissileClientDataEventArgs args)
        {
            if (sender == null || !sender.IsEnemy())
            {
                return;
            }

            switch (sender.Type)
            {
            case GameObjectType.AIHeroClient:
                if (Invulnerable.Check(UtilityClass.Player, DamageType.Magical, false))
                {
                    return;
                }

                var hero = sender as AIHeroClient;
                if (hero != null)
                {
                    /// <summary>
                    ///     Block Gangplank's Barrels.
                    /// </summary>
                    if (hero.CharName.Equals("Gangplank"))
                    {
                        if (!(args.Target is AIMinionClient))
                        {
                            return;
                        }

                        if (Bools.IsAutoAttack(args.SpellData.Name) || args.SpellData.Name.Equals("GangplankQProceed"))
                        {
                            var target = (AIMinionClient)args.Target;
                            if ((int)target.GetRealHealth() <= 2 &&
                                target.DistanceToPlayer() <= 450 &&
                                target.CharName.Equals("gangplankbarrel"))
                            {
                                SpellClass.E.Cast();
                                return;
                            }
                        }
                    }

                    var spellMenu = MenuClass.Spells["e"]["whitelist"][$"{hero.CharName.ToLower()}.{args.SpellData.Name.ToLower()}"];
                    if (args.Target != null &&
                        args.Target.IsMe())
                    {
                        /// <summary>
                        ///     Check for Special On-Hit CC AutoAttacks.
                        /// </summary>
                        if (Bools.IsAutoAttack(args.SpellData.Name))
                        {
                            switch (args.SpellData.Name)
                            {
                            case "UdyrBearAttack":
                            case "GoldCardPreAttack":
                            case "RedCardPreAttack":
                            case "BlueCardPreAttack":
                            case "NautilusRavageStrikeAttack":
                                if (spellMenu != null &&
                                    spellMenu.As <MenuBool>().Value&&
                                    (!hero.CharName.Equals("Udyr") || !UtilityClass.Player.HasBuff("udyrbearstuncheck")))
                                {
                                    SpellClass.E.Cast();
                                }
                                break;
                            }

                            /// <summary>
                            ///     Check for Melee AutoAttack Resets.
                            /// </summary>
                            var getReset  = hero.GetActiveBuffs().FirstOrDefault(b => Orbwalker.IsReset(b.Name));
                            var resetMenu = getReset != null
                                                    ? MenuClass.Spells["e"]["whitelist"][$"{hero.CharName.ToLower()}.{getReset.Name.ToLower()}"]
                                                    : null;
                            if (resetMenu != null &&
                                resetMenu.As <MenuBool>().Value)
                            {
                                SpellClass.E.Cast();
                                return;
                            }

                            /// <summary>
                            ///     Check for Braum Passive.
                            /// </summary>
                            var braumMenu = MenuClass.Spells["e"]["whitelist"]["braum.passive"];
                            if (braumMenu != null &&
                                braumMenu.As <MenuBool>().Value&&
                                UtilityClass.Player.GetBuffCount("BraumMark") == 3)
                            {
                                SpellClass.E.Cast();
                                return;
                            }
                        }
                    }

                    /// <summary>
                    ///     Shield all the Targetted Spells.
                    /// </summary>
                    var getSpellName = SpellDatabase.GetByName(args.SpellData.Name);
                    if (spellMenu != null &&
                        getSpellName != null &&
                        spellMenu.As <MenuBool>().Value)
                    {
                        switch (getSpellName.SpellType)
                        {
                        /// <summary>
                        ///     Check for Targetted Spells.
                        /// </summary>
                        case SpellType.Targeted:
                        case SpellType.TargetedMissile:
                            if (args.Target != null && args.Target.IsMe())
                            {
                                var delay = MenuClass.Spells["e"]["logical"].As <MenuSliderBool>().Value;
                                switch (hero.CharName)
                                {
                                case "Caitlyn":
                                    delay = 1050;
                                    break;

                                case "Nocturne":
                                    delay = 350;
                                    break;

                                case "Zed":
                                    delay = 200;
                                    break;

                                case "Nautilus":
                                    delay = (int)UtilityClass.Player.Distance(hero);
                                    break;
                                }

                                DelayAction.Queue(delay, () =>
                                {
                                    SpellClass.E.Cast();
                                });
                            }
                            break;

                        /// <summary>
                        ///     Check for AoE Spells.
                        /// </summary>
                        case SpellType.SkillshotCircle:
                            switch (hero.CharName)
                            {
                            case "Alistar":
                                if (hero.DistanceToPlayer() <= 300 + UtilityClass.Player.BoundingRadius)
                                {
                                    SpellClass.E.Cast();
                                }
                                break;
                            }
                            break;
                        }
                    }
                }
                break;

            case GameObjectType.AIMinionClient:
                /// <summary>
                ///     Block Dragon/Baron/RiftHerald's AutoAttacks.
                /// </summary>
                if (args.Target != null &&
                    args.Target.IsMe() &&
                    sender.CharName.Contains("SRU_Dragon") &&
                    MenuClass.Spells["e"]["whitelist"]["minions"].As <MenuBool>().Value)
                {
                    SpellClass.E.Cast();
                }
                break;
            }
        }