예제 #1
0
        public override void OnCombo()
        {
            var Target = TargetSelector.GetTarget(Q.Range, DamageType.Magical);

            if (Target == null || !Target.IsValidTarget())
            {
                return;
            }

            var mode = Features.First(it => it.NameFeature == "Combo");

            if (R.IsReady() && Player.CountEnemiesInRange(R.Range) >= mode.SliderValue("combo.r.minenemies"))
            {
                R.Cast();
            }

            if (Q.IsReady() && Target.IsValidTarget(Q.Range) && mode.IsChecked("combo.q"))
            {
                SpellsUtil.HitChanceCast(Q, Target, mode.SliderValue("combo.q.hitchance%"));
            }

            if (W.IsReady() && !Target.CanMove() && mode.IsChecked("combo.w"))
            {
                W.Cast(Target.ServerPosition);
            }

            return;
        }
예제 #2
0
        public bool CastSmite(Obj_AI_Base target)
        {
            if (target == null || !target.IsValidTarget() || target.IsStructure())
            {
                return(false);
            }

            var summoner = SpellsUtil.GetTargettedSpell(SpellsUtil.Summoners.Smite);

            if (summoner != null && summoner.IsReady() && summoner.IsInRange(target))
            {
                if (target.IsMinion())
                {
                    if (summoner.Cast(target))
                    {
                        return(true);
                    }
                }

                else if ((summoner.Name.Contains("gank") || summoner.Name.Contains("duel")) && summoner.Cast(target))
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #3
0
        //-----------------------------------------KS-----------------------------------------

        void KS()
        {
            if (Q.IsReady())
            {
                var bye = EntityManager.Heroes.Enemies.FirstOrDefault(enemy => enemy.IsValidTarget(Q.Range) && DamageUtil.GetSpellDamage(enemy, SpellSlot.Q) >= enemy.Health);
                if (bye != null)
                {
                    SpellsUtil.HitChanceCast(Q, bye); return;
                }
            }

            if (R.IsReady())
            {
                var bye = EntityManager.Heroes.Enemies.FirstOrDefault(enemy => enemy.IsValidTarget(R.Range) && DamageUtil.GetSpellDamage(enemy, SpellSlot.R) >= enemy.Health);
                if (bye != null)
                {
                    R.Cast(); return;
                }
            }

            if (Q.IsReady() && R.IsReady())
            {
                var bye = EntityManager.Heroes.Enemies.FirstOrDefault(enemy => enemy.IsValidTarget(R.Range - 50) && DamageUtil.GetSpellDamage(enemy, SpellSlot.R) + DamageUtil.GetSpellDamage(enemy, SpellSlot.Q) >= enemy.Health);
                if (bye != null)
                {
                    SpellsUtil.HitChanceCast(Q, bye); return;
                }
            }
        }
예제 #4
0
        public override void OnAfterAttack(AttackableUnit target, EventArgs args)
        {
            base.OnAfterAttack(target, args);

            var jungleclear = Features.First(it => it.NameFeature == "Jungle Clear");

            if (Player.ManaPercent < jungleclear.SliderValue("jungleclear.mana%"))
            {
                return;
            }

            var minion = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Position, W.Range).FirstOrDefault(it => it.Health > 2 * Player.GetAutoAttackDamage(it));

            if (minion == null)
            {
                return;
            }

            if (Q.IsReady() && jungleclear.IsChecked("jungleclear.q"))
            {
                SpellsUtil.HitChanceCast(Q, minion, 1);
            }

            if (W.IsReady() && jungleclear.IsChecked("jungleclear.w"))
            {
                SpellsUtil.HitChanceCast(W, minion);
            }
        }
예제 #5
0
        public override void PermaActive()
        {
            var misc = Features.First(it => it.NameFeature == "Misc");

            //----Auto Q/W on immobile enemies

            var immobile = EntityManager.Heroes.Enemies.FirstOrDefault(it => !it.IsDead && it.IsValidTarget(Q.Range) && !it.CanMove());

            if (immobile != null)
            {
                if (misc.IsChecked("misc.autoqonimmobile") && Q.IsReady())
                {
                    SpellsUtil.HitChanceCast(Q, immobile);
                }
                if (misc.IsChecked("misc.autowonimmobile") && W.IsReady() && W.IsInRange(immobile))
                {
                    W.Cast(immobile.ServerPosition);
                }
            }

            //----KS
            if (misc.IsChecked("misc.ks") && EntityManager.Heroes.Enemies.Any(it => Q.IsInRange(it)))
            {
                KS();
            }
        }
예제 #6
0
        public bool CastGhost()
        {
            var summoner = SpellsUtil.GetActiveSpell(SpellsUtil.Summoners.Ghost);

            if (summoner != null && summoner.IsReady() && summoner.Cast())
            {
                return(true);
            }

            return(false);
        }
예제 #7
0
        public bool CastFlash(Vector3 position)
        {
            var summoner = SpellsUtil.GetSkillshotSpell(SpellsUtil.Summoners.Flash);

            if (Player.Distance(position) > summoner.Range)
            {
                position = Player.Position.Extend(position, summoner.Range).To3D();
            }

            if (summoner != null && summoner.IsReady() && summoner.Cast(position))
            {
                return(true);
            }

            return(false);
        }
예제 #8
0
        public bool CastExhaust(Obj_AI_Base target)
        {
            if (target == null || !target.IsValidTarget() || target.IsStructure() || target.IsMinion)
            {
                return(false);
            }

            var summoner = SpellsUtil.GetTargettedSpell(SpellsUtil.Summoners.Exhaust);

            if (summoner != null && summoner.IsReady() && summoner.IsInRange(target) && summoner.Cast(target))
            {
                return(true);
            }

            return(false);
        }
예제 #9
0
        public override void OnFlee()
        {
            base.OnFlee();

            if (!Q.IsReady())
            {
                return;
            }

            var Target = TargetSelector.GetTarget(Q.Range, DamageType.Physical);

            if (Target != null && Target.IsValidTarget(Q.Range))
            {
                SpellsUtil.HitChanceCast(Q, Target);
            }
        }
예제 #10
0
        public override void OnGapCloser(AIHeroClient sender, Gapcloser.GapcloserEventArgs e)
        {
            base.OnGapCloser(sender, e);

            if (!Q.IsReady() || sender.IsMe || sender.IsAlly || !sender.IsValidTarget(Q.Range))
            {
                return;
            }

            var gapclose = Features.First(it => it.NameFeature == "Misc").IsChecked("misc.gapcloser");

            if (gapclose)
            {
                SpellsUtil.HitChanceCast(Q, sender);
            }

            return;
        }
예제 #11
0
        public override void OnHarass()
        {
            var Target = TargetSelector.GetTarget(Q.Range, DamageType.Magical);

            if (Target == null || !Target.IsValidTarget())
            {
                return;
            }

            var mode = Features.First(it => it.NameFeature == "Harass");

            if (Player.ManaPercent < mode.SliderValue("harass.mana%"))
            {
                return;
            }

            if (Q.IsReady() && Target.IsValidTarget(Q.Range) && mode.IsChecked("harass.q"))
            {
                SpellsUtil.HitChanceCast(Q, Target, mode.SliderValue("harass.q.hitchance%"));
            }

            if (W.IsReady() && mode.IsChecked("harass.w"))
            {
                if (mode.IsChecked("harass.w.jitii"))
                {
                    if (!Target.CanMove())
                    {
                        W.Cast(Target.ServerPosition);
                    }
                }
                else
                {
                    SpellsUtil.HitChanceCast(W, Target);
                }
            }

            return;
        }
예제 #12
0
        void InitVariables()
        {
            _itemUtil = new ItemUtil();

            #region Summoners

            flash = SpellsUtil.GetSkillshotSpell(SpellsUtil.Summoners.Flash);

            ignite  = SpellsUtil.GetTargettedSpell(SpellsUtil.Summoners.Ignite);
            exhaust = SpellsUtil.GetTargettedSpell(SpellsUtil.Summoners.Exhaust);
            smite   = SpellsUtil.GetTargettedSpell(SpellsUtil.Summoners.Smite);

            heal    = SpellsUtil.GetActiveSpell(SpellsUtil.Summoners.Heal);
            barrier = SpellsUtil.GetActiveSpell(SpellsUtil.Summoners.Barrier);
            ghost   = SpellsUtil.GetActiveSpell(SpellsUtil.Summoners.Ghost);
            cleanse = SpellsUtil.GetActiveSpell(SpellsUtil.Summoners.Cleanse);

            #endregion

            #region Offensives

            hextech    = _itemUtil.GetItem(ItemId.Hextech_Gunblade, 700);
            botrk      = _itemUtil.GetItem(ItemId.Blade_of_the_Ruined_King, 550);
            bilgewater = _itemUtil.GetItem(ItemId.Bilgewater_Cutlass, 550);
            tiamat     = _itemUtil.GetItem(ItemId.Tiamat_Melee_Only, 325);         //range = 400
            hydra      = _itemUtil.GetItem(ItemId.Ravenous_Hydra_Melee_Only, 325); //range = 400
            titanic    = _itemUtil.GetItem(3053, 75);                              //range = 150
            youmuus    = _itemUtil.GetItem(ItemId.Youmuus_Ghostblade);

            #endregion

            #region Defensives

            faceMountain = _itemUtil.GetItem(ItemId.Face_of_the_Mountain, 600);
            mikael       = _itemUtil.GetItem(ItemId.Mikaels_Crucible, 600);
            solari       = _itemUtil.GetItem(ItemId.Locket_of_the_Iron_Solari, 600);
            randuin      = _itemUtil.GetItem(ItemId.Randuins_Omen, 450);//range = 500
            scimitar     = _itemUtil.GetItem(ItemId.Mercurial_Scimitar);
            qss          = _itemUtil.GetItem(ItemId.Quicksilver_Sash);
            seraph       = _itemUtil.GetItem(3040);
            zhonya       = _itemUtil.GetItem(ItemId.Zhonyas_Hourglass);

            #endregion

            #region Speed

            talisma        = _itemUtil.GetItem(ItemId.Talisman_of_Ascension);
            righteousGlory = _itemUtil.GetItem(ItemId.Righteous_Glory, 600);

            #endregion

            #region Potions

            healthPotion     = _itemUtil.GetItem(ItemId.Health_Potion);
            biscuitPotion    = _itemUtil.GetItem(2010);
            corruptingPotion = _itemUtil.GetItem(2033);
            huntersPotion    = _itemUtil.GetItem(2032);
            refillablePotion = _itemUtil.GetItem(2031);

            #endregion

            _itens     = new ItemController();
            _summoners = new SummonersController();
        }
예제 #13
0
        public override void OnHarass()
        {
            var target = TargetSelector.GetTarget(spiderForm ? E2.Range : E1.Range, DamageType.Magical);

            var harass = Features.Find(f => f.NameFeature == "Harass");

            if (target == null || !target.IsValidTarget(1000) || harass.SliderValue("harass.mana") > Player.Instance.ManaPercent)
            {
                return;
            }

            if (spiderForm)
            {
                if (R.IsReady() && harass.IsChecked("harass.r"))
                {
                    if (!W2.IsReady() && !Q2.IsReady() && !Player.Instance.IsInAutoAttackRange(target))
                    {
                        R.Cast();
                    }
                }

                if (Q2.IsReady() && harass.IsChecked("harass.q2") && Q2.IsInRange(target))
                {
                    Q2.Cast(target);
                }

                if (E2.IsReady() && harass.IsChecked("harass.e2") && E2.IsInRange(target) && !Q2.IsInRange(target))
                {
                    E2.Cast(target);
                }

                if (W2.IsReady() && harass.IsChecked("harass.w2") && Player.Instance.IsInAutoAttackRange(target))
                {
                    W2.Cast();
                }
            }
            else
            {
                if (R.IsReady() && harass.IsChecked("harass.r"))
                {
                    if (!Q1.IsReady() && !E1.IsReady())
                    {
                        if (W1.IsReady() && harass.IsChecked("harass.w") && W1.IsInRange(target))
                        {
                            W1.Cast(W1.GetPrediction(target).CastPosition);
                            EloBuddy.SDK.Core.DelayAction(() => R.Cast(), 250);
                        }
                        else
                        {
                            R.Cast();
                        }
                    }
                }

                if (E1.IsReady() && harass.IsChecked("harass.e") && E1.IsInRange(target))
                {
                    SpellsUtil.HitChanceCast(E1, target);
                }

                if (Q1.IsReady() && harass.IsChecked("harass.q") && Q1.IsInRange(target))
                {
                    Q1.Cast(target);
                }

                if (W1.IsReady() && harass.IsChecked("harass.w") && W1.IsInRange(target))
                {
                    W1.Cast(W1.GetPrediction(target).CastPosition);
                }
            }
        }
예제 #14
0
        public override void OnCombo()
        {
            var target = TargetSelector.GetTarget(spiderForm ? E2.Range : E1.Range, DamageType.Magical);

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

            var combo = Features.Find(f => f.NameFeature == "Combo");

            if (spiderForm)
            {
                if (R.IsReady() && combo.IsChecked("combo.r"))
                {
                    if (W1.IsReady() && Q1.IsReady() && E1.IsReady())
                    {
                        R.Cast();
                    }
                }

                if (Q2.IsReady() && combo.IsChecked("combo.q2") && Q2.IsInRange(target))
                {
                    Q2.Cast(target);
                }

                if (E2.IsReady() && combo.IsChecked("combo.e2") && E2.IsInRange(target) && !Q2.IsInRange(target))
                {
                    E2.Cast(target);
                }

                if (W2.IsReady() && combo.IsChecked("combo.w2") && Player.Instance.IsInAutoAttackRange(target))
                {
                    W2.Cast();
                }
            }
            else
            {
                if (R.IsReady() && combo.IsChecked("combo.r"))
                {
                    if (!Q1.IsReady())
                    {
                        if (W1.IsReady() && combo.IsChecked("combo.w") && W1.IsInRange(target))
                        {
                            W1.Cast(W1.GetPrediction(target).CastPosition);
                            EloBuddy.SDK.Core.DelayAction(() => R.Cast(), 250);
                        }
                        else
                        {
                            R.Cast();
                        }
                    }
                }

                if (E1.IsReady() && combo.IsChecked("combo.e") && E1.IsInRange(target))
                {
                    SpellsUtil.HitChanceCast(E1, target);
                }

                if (Q1.IsReady() && combo.IsChecked("combo.q") && Q1.IsInRange(target))
                {
                    Q1.Cast(target);
                }
            }
        }