コード例 #1
0
ファイル: Activator.cs プロジェクト: spofa/LeagueRepo

        
コード例 #2
0
ファイル: Activator.cs プロジェクト: yunsun9611/LeagueRepo
        private void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsEnemy || !sender.IsValidTarget(1500))
            {
                return;
            }

            foreach (var ally in Program.Allies.Where(ally => ally.IsValid && !ally.IsDead))
            {
                double dmg = 0;
                if (args.Target != null && args.Target.NetworkId == ally.NetworkId)
                {
                    dmg = dmg + sender.GetSpellDamage(ally, args.SData.Name);
                }
                else if (Player.Distance(args.End) <= 300f)
                {
                    if (!OktwCommon.CanMove(ally) || ally.Distance(sender.Position) < 300f)
                    {
                        dmg = dmg + sender.GetSpellDamage(ally, args.SData.Name);
                    }
                    else if (Player.Distance(args.End) < 100f)
                    {
                        dmg = dmg + sender.GetSpellDamage(ally, args.SData.Name);
                    }
                }

                if (Config.Item("FaceOfTheMountain").GetValue <bool>() && Player.Distance(ally.ServerPosition) < FaceOfTheMountain.Range)
                {
                    if (FaceOfTheMountain.IsReady())
                    {
                        if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 10)
                        {
                            FaceOfTheMountain.Cast(ally);
                        }
                        else if (ally.Health - dmg < ally.Level * 10)
                        {
                            FaceOfTheMountain.Cast(ally);
                        }
                    }
                }

                if (Config.Item("Seraph").GetValue <bool>())
                {
                    if (Seraph.IsReady() && ally.IsMe)
                    {
                        var value = Player.Level * 20;
                        if (dmg > value && Player.Health < Player.MaxHealth * 0.5)
                        {
                            Seraph.Cast();
                        }
                        else if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 10)
                        {
                            Seraph.Cast();
                        }
                        else if (ally.Health - dmg < ally.Level * 10)
                        {
                            Seraph.Cast();
                        }
                    }
                }

                if (Config.Item("Zhonya").GetValue <bool>())
                {
                    if (Zhonya.IsReady() && ally.IsMe)
                    {
                        var value = 95 + Player.Level * 20;
                        if (dmg > value && Player.Health < Player.MaxHealth * 0.5)
                        {
                            Zhonya.Cast();
                        }
                        else if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 10)
                        {
                            Zhonya.Cast();
                        }
                        else if (ally.Health - dmg < ally.Level * 10)
                        {
                            Zhonya.Cast();
                        }
                    }
                }
            }
        }
コード例 #3
0
 private void NormalCombo(string Mode)
 {
     if (GetValue <bool>(Mode, "Q") && Q.CastOnBestTarget(0, PacketCast).IsCasted())
     {
         return;
     }
     if (GetValue <bool>(Mode, "W") && W.IsReady() && ObjectManager.Get <Obj_AI_Hero>().Any(i => i.IsValidTarget(W.Range) && i.HasBuff("KennenMarkOfStorm")) && (Mode == "Combo" || (Mode == "Harass" && Player.ManaPercentage() >= GetValue <Slider>(Mode, "WMpA").Value)))
     {
         if (Player.HasBuff("KennenShurikenStorm"))
         {
             var Target = ObjectManager.Get <Obj_AI_Hero>().FindAll(i => i.IsValidTarget(W.Range) && i.HasBuff("KennenMarkOfStorm"));
             if ((Target.Count(i => CanKill(i, W, 1)) > 0 || Target.Count(i => HaveWStun(i)) > 1 || Target.Count > 2 || (Target.Count(i => HaveWStun(i)) == 1 && Target.Count(i => !HaveWStun(i)) > 0)) && W.Cast(PacketCast))
             {
                 return;
             }
         }
         else if (W.Cast(PacketCast))
         {
             return;
         }
     }
     if (Mode == "Combo" && GetValue <bool>(Mode, "R"))
     {
         if (R.IsReady())
         {
             var Target = ObjectManager.Get <Obj_AI_Hero>().FindAll(i => i.IsValidTarget(R.Range));
             if (((Target.Count > 1 && Target.Count(i => CanKill(i, R, GetRDmg(i))) > 0) || Target.Count >= GetValue <Slider>(Mode, "RCountA").Value || (Target.Count > 1 && Target.Count(i => i.HealthPercentage() < GetValue <Slider>(Mode, "RHpU").Value) > 0)) && R.Cast(PacketCast))
             {
                 return;
             }
         }
         else if (Player.HasBuff("KennenShurikenStorm") && GetValue <bool>(Mode, "RItem") && Player.HealthPercentage() < GetValue <Slider>(Mode, "RItemHpU").Value&& R.GetTarget() != null && Zhonya.IsReady() && Zhonya.Cast())
         {
             return;
         }
     }
 }
コード例 #4
0
        private void Survival()
        {
            if (Player.HealthPercent < 60 && (Seraph.IsReady() || Zhonya.IsReady() || CanUse(barrier)))
            {
                double dmg    = OktwCommon.GetIncomingDamage(Player, 1);
                var    enemys = Player.CountEnemiesInRange(800);
                if (dmg > 0 || enemys > 0)
                {
                    if (CanUse(barrier) && Config.Item("Barrier").GetValue <bool>())
                    {
                        var value = 95 + Player.Level * 20;
                        if (dmg > value && Player.HealthPercent < 50)
                        {
                            Player.Spellbook.CastSpell(barrier, Player);
                        }
                        else if (Player.Health - dmg < enemys * Player.Level * 20)
                        {
                            Player.Spellbook.CastSpell(barrier, Player);
                        }
                        else if (Player.Health - dmg < Player.Level * 10)
                        {
                            Seraph.Cast();
                        }
                    }

                    if (Seraph.IsReady() && Config.Item("Seraph").GetValue <bool>())
                    {
                        var value = Player.Mana * 0.2 + 150;
                        if (dmg > value && Player.HealthPercent < 50)
                        {
                            Seraph.Cast();
                        }
                        else if (Player.Health - dmg < enemys * Player.Level * 20)
                        {
                            Seraph.Cast();
                        }
                        else if (Player.Health - dmg < Player.Level * 10)
                        {
                            Seraph.Cast();
                        }
                    }

                    if (Zhonya.IsReady() && Config.Item("Zhonya").GetValue <bool>())
                    {
                        if (dmg > Player.Level * 35)
                        {
                            Zhonya.Cast();
                        }
                        else if (Player.Health - dmg < enemys * Player.Level * 20)
                        {
                            Zhonya.Cast();
                        }
                        else if (Player.Health - dmg < Player.Level * 10)
                        {
                            Zhonya.Cast();
                        }
                    }
                }
            }


            if (!Solari.IsReady() && !FaceOfTheMountain.IsReady() && !CanUse(heal))
            {
                return;
            }

            foreach (var ally in Program.Allies.Where(ally => ally.IsValid && !ally.IsDead && ally.HealthPercent < 50 && Player.Distance(ally.ServerPosition) < 700))
            {
                double dmg    = OktwCommon.GetIncomingDamage(ally, 1);
                var    enemys = ally.CountEnemiesInRange(700);
                if (dmg == 0 && enemys == 0)
                {
                    continue;
                }

                if (CanUse(heal) && Config.Item("Heal").GetValue <bool>())
                {
                    if (!Config.Item("AllyHeal").GetValue <bool>() && !ally.IsMe)
                    {
                        return;
                    }

                    if (ally.Health - dmg < enemys * ally.Level * 15)
                    {
                        Player.Spellbook.CastSpell(heal, ally);
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        Player.Spellbook.CastSpell(heal, ally);
                    }
                }

                if (Config.Item("Solari").GetValue <bool>() && Solari.IsReady() && Player.Distance(ally.ServerPosition) < Solari.Range)
                {
                    var value = 75 + (15 * Player.Level);
                    if (dmg > value && Player.HealthPercent < 50)
                    {
                        Solari.Cast();
                    }
                    else if (ally.Health - dmg < enemys * ally.Level * 15)
                    {
                        Solari.Cast();
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        Solari.Cast();
                    }
                }

                if (Config.Item("FaceOfTheMountain").GetValue <bool>() && FaceOfTheMountain.IsReady() && Player.Distance(ally.ServerPosition) < FaceOfTheMountain.Range)
                {
                    var value = 0.1 * Player.MaxHealth;
                    if (dmg > value && Player.HealthPercent < 50)
                    {
                        FaceOfTheMountain.Cast(ally);
                    }
                    else if (ally.Health - dmg < enemys * ally.Level * 15)
                    {
                        FaceOfTheMountain.Cast(ally);
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        FaceOfTheMountain.Cast(ally);
                    }
                }
            }
        }
コード例 #5
0
        private void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsEnemy || sender.Type != GameObjectType.obj_AI_Hero)
            {
                return;
            }


            if (sender.Distance(Player.Position) > 1600)
            {
                return;
            }

            if (Zhonya.IsReady() && Config.Item("Zhonya").GetValue <bool>())
            {
                if (Config.Item("spellZ" + args.SData.Name) != null && Config.Item("spellZ" + args.SData.Name).GetValue <bool>())
                {
                    if (args.Target != null && args.Target.NetworkId == Player.NetworkId)
                    {
                        Zhonya.Cast();
                    }
                    else
                    {
                        var castArea = Player.Distance(args.End) * (args.End - Player.ServerPosition).Normalized() + Player.ServerPosition;
                        if (castArea.Distance(Player.ServerPosition) < Player.BoundingRadius / 2)
                        {
                            Zhonya.Cast();
                        }
                    }
                }
            }

            if (CanUse(exhaust) && Config.Item("Exhaust").GetValue <bool>())
            {
                foreach (var ally in Program.Allies.Where(ally => ally.IsValid && !ally.IsDead && ally.HealthPercent < 51 && Player.Distance(ally.ServerPosition) < 700))
                {
                    double dmg = 0;
                    if (args.Target != null && args.Target.NetworkId == ally.NetworkId)
                    {
                        dmg = dmg + sender.GetSpellDamage(ally, args.SData.Name);
                    }
                    else
                    {
                        var castArea = ally.Distance(args.End) * (args.End - ally.ServerPosition).Normalized() + ally.ServerPosition;
                        if (castArea.Distance(ally.ServerPosition) < ally.BoundingRadius / 2)
                        {
                            dmg = dmg + sender.GetSpellDamage(ally, args.SData.Name);
                        }
                        else
                        {
                            continue;
                        }
                    }

                    if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 40)
                    {
                        Player.Spellbook.CastSpell(exhaust, sender);
                    }
                }
            }
        }
コード例 #6
0
        //-------------------------------------------Game_OnTick----------------------------------------------

        static void Game_OnTick(EventArgs args)
        {
            if (Player.IsDead)
            {
                return;
            }

            if (Zhonya.IsReady() && Menu["UseZhonya?"].Cast <CheckBox>().CurrentValue&& Player.HealthPercent <= Menu["ZhonyaHealth"].Cast <Slider>().CurrentValue&& EntityManager.Heroes.Enemies.Any(it => it.Distance(Player) <= it.GetAutoAttackRange() && it.IsValidTarget()))
            {
                Zhonya.Cast();
            }

            if (Player.CountEnemiesInRange(1000) > 0)
            {
                Modes.SaveAlly();
            }

            Target   = TargetSelector.GetTarget(1300, DamageType.Magical);
            Player2D = Player.ServerPosition.To2D();

            //---------------------------------------------Smite Usage---------------------------------------------

            if (Smite != null)
            {
                if (Smite.IsReady() && Menu["Use Smite?"].Cast <CheckBox>().CurrentValue)
                {
                    Obj_AI_Minion Mob = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Position, Smite.Range).FirstOrDefault();

                    if (Mob != default(Obj_AI_Minion))
                    {
                        bool kill = GetSmiteDamage() >= Mob.Health;

                        if (kill)
                        {
                            if ((Mob.Name.Contains("SRU_Dragon") || Mob.Name.Contains("SRU_Baron")))
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Red") && Menu["Red?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Blue") && Menu["Blue?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Murkwolf") && Menu["Wolf?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Krug") && Menu["Krug?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Gromp") && Menu["Gromp?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Razorbeak") && Menu["Raptor?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                        }
                    }
                }
            }

            //--------------------------------------------Stack Stun-------------------------------------------

            if (Menu["StackStun"].Cast <CheckBox>().CurrentValue&& !Player.HasBuff("recall") && !Player.HasBuff("pyromania_particle"))
            {
                if (!(Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit)) && E.IsReady())
                {
                    E.Cast();
                }
                if (Player.IsInShopRange() && W.IsReady())
                {
                    W.Cast(Player.Position);
                }
            }

            //-----------------------------------------------Auto Ignite----------------------------------------

            if (Menu["Auto Ignite"].Cast <CheckBox>().CurrentValue&& Ignite != null)
            {
                if (Ignite.IsReady())
                {
                    var IgniteEnemy = EntityManager.Heroes.Enemies.FirstOrDefault(it => DamageLibrary.GetSummonerSpellDamage(Player, it, DamageLibrary.SummonerSpells.Ignite) >= it.Health - 30);

                    if (IgniteEnemy != null)
                    {
                        if ((IgniteEnemy.Distance(Player) >= 300 || Player.HealthPercent <= 40))
                        {
                            Ignite.Cast(IgniteEnemy);
                        }
                    }
                }
            }

            //----------------------------------------------------KS----------------------------------------------

            if (Menu["KS"].Cast <CheckBox>().CurrentValue&& Player.CountEnemiesInRange(Q.Range) > 0)
            {
                Modes.KS();
            }

            //--------------------------------------------Orbwalker Modes-------------------------------------------

            if (Target != null)
            {
                if (Target.IsValidTarget())
                {
                    Modes.UpdateVariables();

                    if (Player.HasBuff("infernalguardiantime"))
                    {
                        EloBuddy.Player.IssueOrder(GameObjectOrder.MovePet, Target); EloBuddy.Player.IssueOrder(GameObjectOrder.AutoAttackPet, Target);
                    }

                    //---------------------------------------------Flee Key-----------------------------------------------

                    if (R.IsReady())
                    {
                        if (Menu["Ult on Target"].Cast <KeyBind>().CurrentValue&& Target.IsValidTarget(R.Range - 50))
                        {
                            R.Cast(R.GetPrediction(Target).CastPosition);
                        }

                        else if (Menu["Flash+R"].Cast <KeyBind>().CurrentValue&& Target.IsValidTarget(R.Range + Flash.Range - 80) && Flash.IsReady())
                        {
                            var RPos = GetBestRPos(Target.ServerPosition.To2D());
                            if (RPos.First().Value > 0)
                            {
                                var FlashPos = Player.Position.Extend(RPos.First().Key, Flash.Range).To3D();
                                Flash.Cast(FlashPos);
                                Core.DelayAction(() => R.Cast(RPos.First().Key.To3D()), Game.Ping + 20);
                            }
                        }
                    }

                    //---------------------------------------------------Combo--------------------------------------------

                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                    {
                        Modes.Combo();
                    }

                    //---------------------------------------------------Mixed--------------------------------------------

                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) && Player.ManaPercent >= Menu["Harass, Mana %"].Cast <Slider>().CurrentValue)
                    {
                        Modes.Harass();
                    }
                }

                else
                {
                    Target = null;
                }
            }

            //---------------------------------------------------LaneClear--------------------------------------------

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear))
            {
                Modes.LaneClear();
            }

            //---------------------------------------------------LastHit--------------------------------------------

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) && Q.IsReady())
            {
                Modes.LastHit();
            }

            return;
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: lolscripts/wu
        //-------------------------------------------Game_OnTick----------------------------------------------

        static void Game_OnTick(EventArgs args)
        {
            if (Player.IsDead)
            {
                return;
            }

            if (EBuff())
            {
                Orbwalker.DisableAttacking = true;
            }
            else
            {
                Orbwalker.DisableAttacking = false;
            }

            if (Zhonya.IsReady() && Menu["UseZhonya?"].Cast <CheckBox>().CurrentValue&& Player.HealthPercent <= Menu["ZhonyaHealth"].Cast <Slider>().CurrentValue&& EntityManager.Heroes.Enemies.Any(it => it.Distance(Player) <= it.GetAutoAttackRange() && it.IsValidTarget()))
            {
                Zhonya.Cast();
            }

            if (Player.CountEnemiesInRange(1000) > 0)
            {
                Modes.SaveAlly();
            }

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

            //---------------------------------------------Smite Usage---------------------------------------------

            if (Smite != null)
            {
                if (Smite.IsReady() && Menu["Use Smite?"].Cast <CheckBox>().CurrentValue)
                {
                    Obj_AI_Minion Mob = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Position, Smite.Range).FirstOrDefault();

                    if (Mob != default(Obj_AI_Minion))
                    {
                        bool kill = GetSmiteDamage() >= Mob.Health;

                        if (kill)
                        {
                            if ((Mob.Name.Contains("SRU_Dragon") || Mob.Name.Contains("SRU_Baron")))
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Red") && Menu["Red?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Blue") && Menu["Blue?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Murkwolf") && Menu["Wolf?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Krug") && Menu["Krug?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Gromp") && Menu["Gromp?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                            else if (Mob.Name.StartsWith("SRU_Razorbeak") && Menu["Raptor?"].Cast <CheckBox>().CurrentValue)
                            {
                                Smite.Cast(Mob);
                            }
                        }
                    }
                }
            }

            //-----------------------------------------------Auto Ignite----------------------------------------

            if (Menu["Auto Ignite"].Cast <CheckBox>().CurrentValue&& Ignite != null)
            {
                if (Ignite.IsReady())
                {
                    var IgniteEnemy = EntityManager.Heroes.Enemies.FirstOrDefault(it => DamageLibrary.GetSummonerSpellDamage(Player, it, DamageLibrary.SummonerSpells.Ignite) >= it.Health - 30);

                    if (IgniteEnemy != null)
                    {
                        if ((IgniteEnemy.Distance(Player) >= 300 || Player.HealthPercent <= 40))
                        {
                            Ignite.Cast(IgniteEnemy);
                        }
                    }
                }
            }

            //----------------------------------------------------KS----------------------------------------------

            if (Menu["KS"].Cast <CheckBox>().CurrentValue&& Player.CountEnemiesInRange(Q.Range) > 0)
            {
                Modes.KS();
            }

            //---------------------------------------------Flee Key-----------------------------------------------

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Flee))
            {
                Modes.Flee();
            }

            //--------------------------------------------Orbwalker Modes-------------------------------------------

            if (Target != null)
            {
                if (Target.IsValidTarget())
                {
                    Modes.UpdateVariables();

                    //---------------------------------------------------Combo--------------------------------------------

                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                    {
                        Modes.Combo();
                    }

                    //---------------------------------------------------Mixed--------------------------------------------

                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) && Player.ManaPercent >= Menu["Harass, Mana %"].Cast <Slider>().CurrentValue)
                    {
                        Modes.Harass();
                    }
                }

                else
                {
                    Target = null;
                }
            }

            //---------------------------------------------------JungleClear--------------------------------------------

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear) && Player.ManaPercent >= Menu["JungleClear, Mana %"].Cast <Slider>().CurrentValue)
            {
                Modes.JungleClear();
            }

            //---------------------------------------------------LaneClear--------------------------------------------

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && Player.ManaPercent >= Menu["LaneClear, Mana %"].Cast <Slider>().CurrentValue)
            {
                Modes.LaneClear();
            }

            //---------------------------------------------------LastHit--------------------------------------------

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) && Player.ManaPercent >= Menu["LastHit, Mana %"].Cast <Slider>().CurrentValue)
            {
                Modes.LastHit();
            }

            return;
        }
コード例 #8
0
ファイル: Activator.cs プロジェクト: Bloodimir/Projects
        protected override void Volatile_ProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsEnemy)
            {
                return;
            }

            if (!Solari.IsReady() && !FaceOfTheMountain.IsReady() && !Seraph.IsReady() && !Zhonya.IsReady() &&
                !CanUse(_barrier) && !CanUse(_heal) && !CanUse(_exhaust))
            {
                return;
            }

            if (sender.Distance(Player.Position) > 1600)
            {
                return;
            }

            foreach (
                var ally in
                EntityManager.Heroes.Allies.Where(
                    ally =>
                    ally.IsValid && !ally.IsDead && ally.HealthPercent < 51 &&
                    Player.Distance(ally.ServerPosition) < 700))
            {
                double dmg = 0;
                if (args.Target != null && args.Target.NetworkId == ally.NetworkId)
                {
                    dmg = dmg + ((AIHeroClient)sender).GetSpellDamage(ally, args.Slot);
                }
                else
                {
                    var castArea = ally.Distance(args.End) * (args.End - ally.ServerPosition).Normalized() +
                                   ally.ServerPosition;
                    if (castArea.Distance(ally.ServerPosition) < ally.BoundingRadius / 2)
                    {
                        dmg = dmg + ((AIHeroClient)sender).GetSpellDamage(ally, args.Slot);
                    }
                    else
                    {
                        continue;
                    }
                }

                if (CanUse(_exhaust) && SummonersMenu["exhaust"].Cast <CheckBox>().CurrentValue)
                {
                    if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 40)
                    {
                        TryCast(() => Player.Spellbook.CastSpell(_exhaust, sender));
                    }
                }

                if (CanUse(_heal) && SummonersMenu["heal"].Cast <CheckBox>().CurrentValue)
                {
                    if (SummonersMenu["healteam"].Cast <CheckBox>().CurrentValue&& !ally.IsMe)
                    {
                        return;
                    }

                    if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 10)
                    {
                        TryCast(() => Player.Spellbook.CastSpell(_heal, ally));
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        TryCast(() => Player.Spellbook.CastSpell(_heal, ally));
                    }
                }

                if (DefensivesMenu["lotis"].Cast <CheckBox>().CurrentValue&& Solari.IsReady() &&
                    Player.Distance(ally.ServerPosition) < Solari.Range)
                {
                    var value = 75 + (15 * Player.Level);
                    if (dmg > value && Player.HealthPercent < 50)
                    {
                        Solari.Cast();
                    }
                    else if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 15)
                    {
                        Solari.Cast();
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        Solari.Cast();
                    }
                }

                if (DefensivesMenu["fotm"].Cast <CheckBox>().CurrentValue&& FaceOfTheMountain.IsReady() &&
                    Player.Distance(ally.ServerPosition) < FaceOfTheMountain.Range)
                {
                    var value = 0.1 * Player.MaxHealth;
                    if (dmg > value && Player.HealthPercent < 50)
                    {
                        TryCast(() => FaceOfTheMountain.Cast(ally));
                    }
                    else if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 15)
                    {
                        TryCast(() => FaceOfTheMountain.Cast(ally));
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        TryCast(() => FaceOfTheMountain.Cast(ally));
                    }
                }

                if (!ally.IsMe)
                {
                    continue;
                }

                if (CanUse(_barrier) && SummonersMenu["barrier"].Cast <CheckBox>().CurrentValue)
                {
                    var value = 95 + Player.Level * 20;
                    if (dmg > value && Player.HealthPercent < 50)
                    {
                        TryCast(() => Player.Spellbook.CastSpell(_barrier, Player));
                    }
                    else if (Player.Health - dmg < Player.CountEnemiesInRange(700) * Player.Level * 15)
                    {
                        TryCast(() => Player.Spellbook.CastSpell(_barrier, Player));
                    }
                    else if (ally.Health - dmg < ally.Level * 15)
                    {
                        TryCast(() => Seraph.Cast());
                    }
                }

                if (Seraph.IsReady() && DefensivesMenu["se"].Cast <CheckBox>().CurrentValue)
                {
                    var value = Player.Mana * 0.2 + 150;
                    if (dmg > value && Player.HealthPercent < 50)
                    {
                        TryCast(() => Seraph.Cast());
                    }
                    else if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 15)
                    {
                        TryCast(() => Seraph.Cast());
                    }
                    else if (ally.Health - dmg < ally.Level * 15)
                    {
                        TryCast(() => Seraph.Cast());
                    }
                }

                if (Zhonya.IsReady() && DefensivesMenu["zh"].Cast <CheckBox>().CurrentValue)
                {
                    if (dmg > Player.Level * 30)
                    {
                        TryCast(() => Zhonya.Cast());
                    }
                    else if (ally.Health - dmg < ally.CountEnemiesInRange(700) * ally.Level * 15)
                    {
                        TryCast(() => Zhonya.Cast());
                    }
                    else if (ally.Health - dmg < ally.Level * 15)
                    {
                        TryCast(() => Zhonya.Cast());
                    }
                }
            }
        }