Beispiel #1
0
 public static void OnProcessSpellCast(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args)
 {
     string[] summoners = { "Dot", "Flash", "Exhaust" };
     if (hero.IsEnemy && hero.IsValid)
     {
         foreach (var spell in summoners)
         {
             if (menu.Item("EnemySummoners").GetValue<bool>())
             {
                 if (args.SData.Name.Contains(spell))
                 {
                     if (spell.Contains("Dot"))
                     {
                         float spellUpIn = Game.ClockTime + 3.5f;
                         string message = hero.BaseSkinName.ToLower() + "ignite" + spellUpIn;
                         Game.PrintChat(message);
                     }
                     if (spell.Contains("Flash"))
                     {
                         float spellUpIn = Game.ClockTime + 5.0f;
                         string message = hero.BaseSkinName.ToLower() + "flash" + spellUpIn;
                         Game.PrintChat(message);
                     }
                     if (spell.Contains("Exhaust"))
                     {
                         float spellUpIn = Game.ClockTime + 3.5f;
                         string message = hero.BaseSkinName.ToLower() + "exhaust" + spellUpIn;
                         Game.PrintChat(message);
                     }
                 }
             }
         }
     }
 }
Beispiel #2
0
        private static void ProcessSpell_SionE(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData,
            SpecialSpellEventArgs specialSpellArgs)
        {
            if (spellData.SpellName == "SionE")
            {
                var objList = new List<Obj_AI_Minion>();
                foreach (var obj in ObjectManager.Get<Obj_AI_Minion>())
                {
                    if (obj != null && obj.IsValid && !obj.IsDead && obj.IsAlly)
                    {
                        objList.Add(obj);
                    }
                }

                objList.OrderBy(o => o.Distance(hero.ServerPosition));

                var spellStart = args.Start.To2D();
                var dir = (args.End.To2D() - spellStart).Normalized();
                var spellEnd = spellStart + dir * spellData.Range;

                foreach (var obj in objList)
                {
                    var objProjection = obj.ServerPosition.To2D().ProjectOn(spellStart, spellEnd);

                    if (objProjection.IsOnSegment && objProjection.SegmentPoint.Distance(obj.ServerPosition.To2D()) < obj.BoundingRadius + spellData.Radius)
                    {
                        //sth happens
                    }
                }

                //specialSpellArgs.noProcess = true;
            }
        }
Beispiel #3
0
        public static bool Contains(Obj_AI_Base unit, GameObjectProcessSpellCastEventArgs args)
        {
            var name = unit.CharData.BaseSkinName;
            var slot = unit.GetSpellSlot(args);

            if (!List.ContainsKey(name) || !Program.Menu.Item(name).IsActive())
            {
                return false;
            }

            var correctSlot = List[name].Equals(slot);

            if (args.SData.IsAutoAttack())
            {
                if (name.Equals("Blitzcrank")) {}
            }

            if (name.Equals("Jayce"))
            {
                correctSlot = correctSlot && unit.CharData.BaseSkinName.Equals("JayceHammerForm");
            }

            if (name.Equals("LeBlanc"))
            {
                correctSlot = args.SData.Name.Equals("LeblancChaosOrbM");
            }

            if (name.Equals("Lissandra"))
            {
                //correctSlot = spellslot 48
            }

            //Game.PrintChat("{0} {1} {2}", name, slot, active);
            return correctSlot;
        }
        public static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe) return;

            var target = (Obj_AI_Base)args.Target;

            if (args.Slot == SpellSlot.W && args.Target != null && target.Name != Player.Instance.Name)
            {
                if (target.IsAlly || target.IsMinion)
                {
                    WExpire = Environment.TickCount + WSpellDelay[BenchTheKench.WSpellSwallow.Level - 1];
                    WTarget = target;
                    return;
                }
                if (target.IsEnemy && target is AIHeroClient)
                {
                    WExpire = Environment.TickCount + (WSpellDelay[BenchTheKench.WSpellSwallow.Level - 1] / 2);
                    WTarget = target;
                    return;
                }
            }

            if (args.Slot == SpellSlot.W && IsSwallowed())
            {
                WExpire = Environment.TickCount - 1;
                WTarget = null;
            }
        }
Beispiel #5
0
        /// <summary>
        ///     Called on do-cast.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The args.</param>
        public static void Weaving(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!(args.Target is AIHeroClient) ||
                Invulnerable.Check(args.Target as AIHeroClient, DamageType.Magical))
            {
                return;
            }

            /// <summary>
            ///     The Q Combo Weaving Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                (args.Target as AIHeroClient).LSIsValidTarget(Vars.Q.Range) &&
                Vars.getCheckBoxItem(Vars.QMenu, "combo"))
            {
                Vars.Q.Cast(Vars.Q.GetPrediction(args.Target as AIHeroClient).CastPosition);
                return;
            }

            /// <summary>
            ///     The R Combo Weaving Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                (args.Target as AIHeroClient).HasBuff("dianamoonlight") &&
                (args.Target as AIHeroClient).LSIsValidTarget(Vars.R.Range) &&
                Vars.getCheckBoxItem(Vars.RMenu, "combo"))
            {
                Vars.R.CastOnUnit(args.Target as AIHeroClient);
            }
        }
Beispiel #6
0
        private void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender.IsEnemy && sender is Obj_AI_Hero && sender.Distance(Player.Position) < 800)
            {

                switch (args.SData.Name)
                {
                    case "akalismokebomb":
                        CastVisionWards(sender.ServerPosition);
                        break;
                    case "deceive":
                        CastVisionWards(sender.ServerPosition);
                        break;
                    case "khazixr":
                        CastVisionWards(sender.ServerPosition);
                        break;
                    case "khazixrlong":
                        CastVisionWards(sender.ServerPosition);
                        break;
                    case "talonshadowassault":
                        CastVisionWards(sender.ServerPosition);
                        break;
                    case "monkeykingdecoy":
                        CastVisionWards(sender.ServerPosition);
                        break;
                    case "RengarR":
                        CastVisionWards(sender.ServerPosition);
                        break;
                    case "TwitchHideInShadows":
                        CastVisionWards(sender.ServerPosition);
                        break;
                }
            }
        }
Beispiel #7
0
        public static void SpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe) return;
            if ((Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) &&
                 Manager.MenuManager.UseQLC && Variables._Player.ManaPercent >= Manager.MenuManager.UseQLCMana) &&
                Manager.SpellManager.Q.IsReady())
            {
                if (Orbwalker.CanAutoAttack)
                {
                    return;
                }
                foreach (var minion in EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy,
                    Variables._Player.ServerPosition, Variables._Player.GetAutoAttackRange()))
                {
                    if (minion == null) return;
                    var dmg = Variables._Player.GetSpellDamage(minion, SpellSlot.Q) +
                              Variables._Player.GetAutoAttackDamage(minion);
                    if (Prediction.Health.GetPrediction(minion, (int)(Variables._Player.AttackDelay * 1000)) <= dmg / 2 &&
                        (Orbwalker.LastTarget == null || Orbwalker.LastTarget.NetworkId != minion.NetworkId))
                    {
                            Player.CastSpell(SpellSlot.Q, Game.CursorPos);

                    }
                }
            }
        }
Beispiel #8
0
 private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     /*if (args.Target.Equals(Player))
     {
         args.SData.
     }*/
 }
        private static void OnCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsEnemy) return;
            if (SoulBoundHero == null) return;
            // Calculate Damage
            if ((!(sender is Obj_AI_Hero) || args.SData.IsAutoAttack()) && args.Target != null && args.Target.NetworkId == SoulBoundHero.NetworkId)
            {
                // Calculate arrival time and damage
                _incomingDamage.Add(SoulBoundHero.ServerPosition.Distance(sender.ServerPosition) / args.SData.MissileSpeed + Game.Time, (float)sender.GetAutoAttackDamage(SoulBoundHero));
            }
            // Sender is a hero
            else if (sender is Obj_AI_Hero)
            {
                var attacker = (Obj_AI_Hero)sender;
                var slot = attacker.GetSpellSlot(args.SData.Name);

                if (slot == SpellSlot.Unknown) return;

                if (slot == attacker.GetSpellSlot("SummonerDot") && args.Target != null && args.Target.NetworkId == SoulBoundHero.NetworkId)
                    _instantDamage.Add(Game.Time + 2, (float)attacker.GetSummonerSpellDamage(SoulBoundHero, LeagueSharp.Common.Damage.SummonerSpell.Ignite));

                else if (slot.HasFlag(SpellSlot.Q | SpellSlot.W | SpellSlot.E | SpellSlot.R) &&
                         ((args.Target != null && args.Target.NetworkId == SoulBoundHero.NetworkId) ||
                          args.End.Distance(SoulBoundHero.ServerPosition) < Math.Pow(args.SData.LineWidth, 2)))
                    _instantDamage.Add(Game.Time + 2, (float)attacker.GetSpellDamage(SoulBoundHero, slot));
            }
        }
Beispiel #10
0
 protected override void OnProcessSpellCast(Obj_AI_Base unit, GameObjectProcessSpellCastEventArgs spell)
 {
     if (!unit.IsMe && unit.IsEnemy)
     {
         if (!spell.SData.IsAutoAttack() && spell.Target.IsMe && E.IsReady())
         {
             if (unit.IsChampion(unit.BaseSkinName))
             {
                 if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Combo)
                 {
                     if (config.Item("UseECombo").GetValue<bool>())
                     {
                         Utility.DelayAction.Add(myUtility.RandomDelay(0, 200), () => E.Cast());
                     }
                 }
                 if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Harass)
                 {
                     if (config.Item("UseEHarass").GetValue<bool>())
                     {
                         Utility.DelayAction.Add(myUtility.RandomDelay(0, 200), () => E.Cast());
                     }
                 }
                 if (config.Item("UseEMisc").GetValue<bool>())
                 {
                     Utility.DelayAction.Add(myUtility.RandomDelay(0, 200), () => E.Cast());
                 }
             }
         }
     }
 }
Beispiel #11
0
        private void SpellDetector_OnProcessSpecialSpell(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
        {
            if (spellData.spellName == "TaricE")
            {
                var sdata = new SpellData();
                sdata.charName = "Taric";
                sdata.name = "TaricE2";
                sdata.spellName = "TaricE";
                sdata.range = 750;
                sdata.radius = 100;
                sdata.fixedRange = true;
                sdata.spellDelay = 1000;
                sdata.projectileSpeed = int.MaxValue;
                sdata.dangerlevel = 3;

                var partner = HeroManager.Enemies.FirstOrDefault(x => x.HasBuff("taricwleashactive"));
                if (partner != null && partner.ChampionName != "Taric")
                {
                    var start = partner.ServerPosition.LSTo2D();
                    var direction = (args.End.LSTo2D() - start).LSNormalized();
                    var end = start + direction * spellData.range;

                    SpellDetector.CreateSpellData(partner, start.To3D(), end.To3D(), sdata);
                }
            }
        }
 private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (sender.IsMe)
     {
         _lastAaTick = Environment.TickCount;
     }
 }
Beispiel #13
0
 private void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (sender.IsMe && args.Slot == QWER.Slot)
     {
         MissileEndPos = args.End;
     }
 }
Beispiel #14
0
        /// <summary>
        /// Called when the sender is done doing the windup time for a spell/AA
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs"/> instance containing the event data.</param>
        private void OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            try
            {
                if (sender.IsMe && args.Slot == SpellSlot.R)
                {
                    var QPosition = Provider.GetSOLOVayneQPosition();
                    if (QPosition != Vector3.Zero)
                    {
                        Variables.spells[SpellSlot.Q].Cast(QPosition);
                        return;
                    }

                    var secondaryQPosition = ObjectManager.Player.ServerPosition.Extend(Game.CursorPos, 300f);

                    if (!secondaryQPosition.UnderTurret(true))
                    {
                        Variables.spells[SpellSlot.Q].Cast(secondaryQPosition);
                    }
                }
            }
            catch (Exception e)
            {
                LogHelper.AddToLog(new LogItem("AutoQifR", e, LogSeverity.Error));
            }
            
        }
Beispiel #15
0
        /// <summary>
        ///     Called on do-cast.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The args.</param>
        public static void Specials(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!Vars.TypesMenu["defensives"].Cast<CheckBox>().CurrentValue)
            {
                return;
            }

            if (sender != null &&
                args.Target != null)
            {
                /// <summary>
                ///     The Ohmwrecker logic.
                /// </summary>
                if (Items.CanUseItem(3056) &&
                    sender.LSIsValidTarget(750f))
                {
                    if (args.Target.IsAlly &&
                        sender is Obj_AI_Turret &&
                        args.Target is AIHeroClient)
                    {
                        Items.UseItem(3056, sender);
                    }
                }
            }
        }
Beispiel #16
0
 private static void OnProcessSCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (sender.IsMe && !args.SData.IsAutoAttack())
     {
         IsRunning = false;
     }
 }
Beispiel #17
0
        /// <summary>
        /// Called when a cast has been executed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The args.</param>
        public static void OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            /// <summary>
            /// Load the Ohmwrecker logic.
            /// </summary>
            if (sender != null &&
                args.Target != null &&
                args.Target.IsAlly &&
                sender.IsValid<Obj_AI_Turret>() &&
                args.Target.IsValid<Obj_AI_Hero>() &&
                Variables.Menu.Item($"{Variables.MainMenuName}.defensives").GetValue<bool>())
            {
                Ohmwrecker.Execute(sender, args);
            }

            /// <summary>
            /// Load the Offensive items.
            /// </summary>
            if (sender.IsMe &&
                Orbwalking.IsAutoAttack(args.SData.Name) &&
                Variables.Menu.Item($"{Variables.MainMenuName}.resetters").GetValue<bool>() &&
                (Variables.Menu.Item($"{Variables.MainMenuName}.combo_button").GetValue<KeyBind>().Active ||
                    Variables.Menu.Item($"{Variables.MainMenuName}.laneclear_button").GetValue<KeyBind>().Active))
            {
                Resetters.Execute(sender, args);
            }
        }
Beispiel #18
0
 private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (sender.IsMe)
     {
         Console.WriteLine("kek: {0}", args.SData.OverrideCastTime);
     }
 }
Beispiel #19
0
 private void ProcessSpell_TwitchSprayandPrayAttack(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
 {
     if (spellData.spellName == "TwitchSprayandPrayAttack")
     {
         spellData.spellDelay = hero.AttackCastDelay * 1000;
     }
 }
Beispiel #20
0
 internal static void SpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (!Helper.GetBool("Evade.WTS", YasuoMenu.EvadeM) || sender.IsAlly || !SpellSlot.W.IsReady() || (!Helper.GetBool("Evade.FOW", YasuoMenu.EvadeM) && !sender.IsVisible))
     {
         return;
     }
     if (args.SData.Name.Equals("MissFortuneBulletTime"))
     {
         var ssdata = GetSpell(args.SData.Name);
         if (ssdata.IsEnabled)
         {
             var end = args.Start.LSTo2D().LSExtend(args.End.LSTo2D(), 1400);
             EvadeA.Geometry.Rectangle rect = new EvadeA.Geometry.Rectangle(args.Start.LSTo2D(), end, args.SData.LineWidth);
             var topoly = rect.ToPolygon();
             var newls = new LittleStruct { poly = topoly, argss = args, RealEndPos = end, StartTick = YasuoEvade.TickCount, data = ssdata };
             DetectedPolygons.Add(newls);
             LeagueSharp.Common.Utility.DelayAction.Add(3000, () => DetectedPolygons.Clear());
         }
     }
     if (!args.Target.IsMe)
     {
         return;
     }
     //Console.WriteLine(args.SData.Name + " " + sender.BaseSkinName);
     var sdata = GetSpell(args.SData.Name);
     if (sdata != null && sdata.IsEnabled)
     {
         var castpos = Helper.Yasuo.ServerPosition.LSExtend(args.Start, 50);
         LeagueSharp.Common.Utility.DelayAction.Add((int)sdata.delay, () => Helper.Spells[Helper.W].Cast(castpos));
     }
 }
Beispiel #21
0
        /// <summary>
        ///     On Process Spell Cast subscribed event function
        /// </summary>
        /// <param name="sender"><see cref="Obj_AI_Base" /> sender</param>
        /// <param name="args">Process Spell Cast Data</param>
        private static void EventGapcloser(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (SpellsList.All(spell => spell.Value.SpellName != args.SData.Name.ToLower()))
            {
                return;
            }

            var hero = sender as Obj_AI_Hero;
            var player = GameObjects.Player;
            if (hero != null)
            {
                ActiveSpellsList.Add(
                    new GapCloserEventArgs
                        {
                            Start = args.Start, End = args.End, Sender = hero, TickCount = Variables.TickCount,
                            SkillType =
                                (args.Target != null && args.Target.IsValid)
                                    ? GapcloserType.Targeted
                                    : GapcloserType.Skillshot,
                            Slot = args.Slot,
                            IsDirectedToPlayer =
                                (args.Target != null && args.Target.IsValid && args.Target.IsMe)
                                || player.Distance(args.End) < player.Distance(args.Start) || sender.IsFacing(player),
                            SpellName = args.SData.Name
                        });
            }
        }
Beispiel #22
0
        internal static void ExecuteComboLogic(GameObjectProcessSpellCastEventArgs args)
        {
            if (args.Target is Obj_AI_Hero)
            {
                var qReady = Variables.spells[SpellSlot.Q].IsEnabledAndReady();
                var wReady = Variables.spells[SpellSlot.W].IsEnabledAndReady();
                var eReady = Variables.spells[SpellSlot.E].IsEnabledAndReady();
                var target_ex = args.Target as Obj_AI_Hero;

                if (qReady)
                {
                    ExtendedQ();
                }

                if (qReady && (target_ex.Distance(ObjectManager.Player) < Variables.spells[SpellSlot.Q].Range - 65f + 0.25f * target_ex.MoveSpeed) && !LucianHooks.HasPassive)
                {
                    Variables.spells[SpellSlot.Q].CastOnUnit(target_ex);
                    LeagueSharp.Common.Utility.DelayAction.Add((int)(250 + Game.Ping / 2f + ObjectManager.Player.AttackCastDelay + 560f),
                        () =>
                        {
                            ExecuteComboLogic(args);
                        });
                    TargetSelector.SetTarget(args.Target as Obj_AI_Hero);
                }

                if (wReady 
                    && !qReady 
                    && target_ex.IsValidTarget(Variables.spells[SpellSlot.W].Range) 
                    && !LucianHooks.HasPassive)
                {
                    Variables.spells[SpellSlot.W].Cast(Variables.spells[SpellSlot.W].GetPrediction(target_ex).CastPosition);
                    LeagueSharp.Common.Utility.DelayAction.Add((int)(250 + Game.Ping / 2f + ObjectManager.Player.AttackCastDelay + 560f), () =>
                    {
                        ExecuteComboLogic(args);
                    });
                    TargetSelector.SetTarget(args.Target as Obj_AI_Hero);
                }

                if (eReady 
                    && target_ex.IsValidTarget(Variables.spells[SpellSlot.Q].Range + 300f + 65) 
                    && !LucianHooks.HasPassive 
                    && !ObjectManager.Player.IsWindingUp)
                {
                    var eProvider = new EPositionProvider();;
                    var eEndPosition = eProvider.GetEPosition();
                    if (eEndPosition != Vector3.Zero && eEndPosition.Distance(target_ex.ServerPosition) < Orbwalking.GetRealAutoAttackRange(target_ex))
                    {
                        Variables.spells[SpellSlot.E].Cast(eEndPosition);
                        LeagueSharp.Common.Utility.DelayAction.Add((int)(250 + Game.Ping / 2f + ObjectManager.Player.AttackCastDelay + 560f),
                            () =>
                            {
                                Orbwalking.ResetAutoAttackTimer();
                                ExecuteComboLogic(args);
                            });
                        TargetSelector.SetTarget(args.Target as Obj_AI_Hero);
                    }
                }
            }

        }
Beispiel #23
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            var enabled = Variable.Config["Enabled"].GetValue<MenuBool>().Value;
            if (!enabled || !Variable.Player.IsTargetable || (sender == null || sender.Team == Variable.Player.Team))
            {
                return;
            }

            foreach (var champ in Variable.ExistingChampions)
            {
                var champion = Variable.Config["CAS"][champ.CharName];
                if (champion == null || champion[champ.Slot.ToString()] == null || !champion[champ.Slot.ToString()].GetValue<MenuBool>().Value)
                {
                    continue;
                }

                if (champ.Slot != (sender as Obj_AI_Hero).GetSpellSlot(args.SData.Name) ||
                    (!(Variable.Player.Distance(sender.Position) <= champ.Range) && args.Target != Variable.Player))
                {
                    continue;
                }

                var vector =
                    new Vector3(
                        Variable.Player.Position.X +
                        ((sender.Position.X - Variable.Player.Position.X)*(Internal.MoveTo(champ.Movement))/
                         Variable.Player.Distance(sender.Position)),
                        Variable.Player.Position.Y +
                        ((sender.Position.Y - Variable.Player.Position.Y)*(Internal.MoveTo(champ.Movement))/
                         Variable.Player.Distance(sender.Position)), 0);
                Variable.Player.IssueOrder(GameObjectOrder.MoveTo, vector);
                Orbwalker.Movement = false;
                DelayAction.Add((int) (champ.CastTime + 0.1)*1000, () => Orbwalker.Movement = true);
            }
        }
Beispiel #24
0
        private void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe || args.SData.Name.ToLower().Contains("attack"))
                return;

            LastSpellTick = Environment.TickCount;
        }
Beispiel #25
0
        /// <summary>
        ///     Called on do-cast.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The args.</param>
        public static void Weaving(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!(args.Target is AIHeroClient) ||
                Invulnerable.Check(args.Target as AIHeroClient))
            {
                return;
            }

            /// <summary>
            ///     The W Weaving Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                Menus.getCheckBoxItem(Vars.WMenu, "combo"))
            {
                Vars.W.Cast();
                return;
            }

            /// <summary>
            ///     The Q Weaving Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Menus.getCheckBoxItem(Vars.QMenu, "combo"))
            {
                Vars.Q.Cast(
                    Vars.Q.GetPrediction(Targets.Target)
                        .UnitPosition.Extend((Vector2)GameObjects.Player.ServerPosition, -140));
            }
        }
Beispiel #26
0
        private static void ProcessSpell_ZedShuriken(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData,
            SpecialSpellEventArgs specialSpellArgs)
        {
            if (spellData.SpellName == "ZedQ")
            {
                foreach (KeyValuePair<int, ObjectTrackerInfo> entry in ObjectTracker.ObjTracker)
                {
                    var info = entry.Value;

                    if (info.Obj.Name == "Shadow" || info.Name == "Shadow")
                    {
                        if (info.UsePosition == false && (info.Obj == null || !info.Obj.IsValid || info.Obj.IsDead))
                        {
                            DelayAction.Add(1, () => ObjectTracker.ObjTracker.Remove(info.Obj.NetworkId));
                            continue;
                        }
                        else
                        {
                            Vector3 endPos2;
                            if (info.UsePosition == false)
                            {
                                endPos2 = info.Obj.Position.Extend(args.End, spellData.Range).To3DWorld();
                                SpellDetector.CreateSpellData(hero, info.Obj.Position, endPos2, spellData, null, 0, false);
                            }
                            else
                            {
                                endPos2 = info.Position.Extend(args.End, spellData.Range).To3DWorld();
                                SpellDetector.CreateSpellData(hero, info.Position, endPos2, spellData, null, 0, false);
                            }

                        }
                    }
                }
            }
        }
Beispiel #27
0
 /// <summary>
 /// Fired when a unit does an auto attack.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs"/> instance containing the event data.</param>
 private static void Obj_AI_Base_OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (ActiveAttacks.ContainsKey(sender.NetworkId) && sender.IsMelee)
     {
         ActiveAttacks[sender.NetworkId].Processed = true;
     }
 }
Beispiel #28
0
        private static void ProcessSpell_JarvanIVDragonStrike(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
        {
            if (args.SData.Name == "JarvanIVDragonStrike")
            {
                if (SpellDetector.onProcessSpells.TryGetValue("JarvanIVDragonStrike2", out spellData))
                {
                    foreach (KeyValuePair<int, ObjectTrackerInfo> entry in ObjectTracker.objTracker)
                    {
                        var info = entry.Value;

                        if (info.Name == "Beacon" || info.obj.Name == "Beacon")
                        {
                            if (info.usePosition == false && (info.obj == null || !info.obj.IsValid || info.obj.IsDead))
                            {
                                DelayAction.Add(1, () => ObjectTracker.objTracker.Remove(info.obj.NetworkId));
                                continue;
                            }

                            var objPosition = info.usePosition ? info.position.LSTo2D() : info.obj.Position.LSTo2D();

                            if (args.End.LSTo2D().LSDistance(objPosition) < 300)
                            {
                                var dir = (objPosition - args.Start.LSTo2D()).LSNormalized();
                                var endPosition = objPosition + dir * 110;

                                SpellDetector.CreateSpellData(hero, args.Start, endPosition.To3D(), spellData);
                                specialSpellArgs.noProcess = true;
                                return;
                            }
                        }
                    }

                }
            }
        }
Beispiel #29
0
 private static void ProcessSpell_JarvanIVDemacianStandard(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args)
 {
     if (hero.IsEnemy && args.SData.Name == "JarvanIVDemacianStandard")
     {
         ObjectTracker.AddObjTrackerPosition("Beacon", args.End, 1000);
     }
 }
        private static void OnCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (Player.InFountain()) return;

            // Sender and args checks
            if (sender.Type != GameObjectType.obj_AI_Hero)return;
            if (!sender.IsEnemy) return;
            if (args.Target != null) return;
            {

                if (!Champion.R.IsReady()) return;
                //if (!ManaHandler.UseAutoR()) return;

                    if (!SMenu.Item(_MenuItemBase + "AutoSave.Boolean.AutoSavePercent").GetValue<bool>())
                    return; // Dont save soulmate D:

                if (!Humanizer.Limiter.CheckDelay($"{Humanizer.DelayItemBase}Slider.SoulBoundDelay")) return;
                Humanizer.Limiter.UseTick($"{Humanizer.DelayItemBase}Slider.SoulBoundDelay");

                if (!GetValidSoulMate())
                    return; // Get SoulBound as you can change them and also check if there in R range

                var healthPercent = SMenu.Item(_MenuItemBase + "AutoSave.Slider.PercentHp").GetValue<Slider>().Value;

                if (SoulBoundHero.CountEnemiesInRange(800) <= 0) return; // No enimies in range

                if (!(SoulBoundHero.HealthPercent <= healthPercent) || SoulBoundHero == null) return;

                //var msg =
                //    $"<b> <font color=\"#008080\">S+ Class Kalista:-Use ULT-:-Reason-:-SoulHero HP%={SoulBoundHero.HealthPercent}, HP% to save at = {healthPercent}";
                //Game.PrintChat(msg);
                Champion.R.Cast();
            }
        }
Beispiel #31
0
 private static bool SpellIsGapcloser(GameObjectProcessSpellCastEventArgs args)
 {
     return(Spells.Any(spell => spell.SpellName == args.SData.Name.ToLower()));
 }
Beispiel #32
0
        public static void OnCasting(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsEnemy || sender.Type != Player.Type)
            {
                return;
            }
            var epos = Player.ServerPosition + (Player.ServerPosition - sender.ServerPosition).LSNormalized() * 300;

            if (!(Player.LSDistance(sender.ServerPosition) <= args.SData.CastRange))
            {
                return;
            }
            switch (args.SData.TargettingType)
            {
            case SpellDataTargetType.Unit:

                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear) &&
                        !args.SData.Name.Contains("NasusW"))
                    {
                        if (Spells.E.IsReady())
                        {
                            Spells.E.Cast(epos);
                        }
                    }
                }
                break;

            case SpellDataTargetType.SelfAoe:

                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(epos);
                    }
                }
                break;
            }
            if (args.SData.Name.Contains("IreliaEquilibriumStrike"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.W.IsReady() && InWRange(sender))
                    {
                        Spells.W.Cast();
                    }
                    else if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(epos);
                    }
                }
            }
            if (args.SData.Name.Contains("TalonCutthroat"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.W.IsReady())
                    {
                        Spells.W.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("RenektonPreExecute"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.W.IsReady())
                    {
                        Spells.W.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("GarenRPreCast"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(epos);
                    }
                }
            }

            if (args.SData.Name.Contains("GarenQAttack"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(EloBuddy.Player.IssueOrder(GameObjectOrder.MoveTo, Player.Position.LSExtend(Game.CursorPos, Player.LSDistance(Game.CursorPos) + 10)));
                    }
                }
            }

            if (args.SData.Name.Contains("XenZhaoThrust3"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.W.IsReady())
                    {
                        Spells.W.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("RengarQ"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("RengarPassiveBuffDash"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("RengarPassiveBuffDashAADummy"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("TwitchEParticle"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("FizzPiercingStrike"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(EloBuddy.Player.IssueOrder(GameObjectOrder.MoveTo, Player.Position.LSExtend(Game.CursorPos, Player.LSDistance(Game.CursorPos) + 10)));
                    }
                }
            }
            if (args.SData.Name.Contains("HungeringStrike"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("YasuoDash"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("KatarinaRTrigger"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.W.IsReady() && InWRange(sender))
                    {
                        Spells.W.Cast();
                    }
                    else if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(EloBuddy.Player.IssueOrder(GameObjectOrder.MoveTo, Player.Position.LSExtend(Game.CursorPos, Player.LSDistance(Game.CursorPos) + 10)));
                    }
                }
            }
            if (args.SData.Name.Contains("KatarinaE"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.W.IsReady())
                    {
                        Spells.W.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("MonkeyKingQAttack"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast();
                    }
                }
            }
            if (args.SData.Name.Contains("MonkeyKingSpinToWin"))
            {
                if (args.Target.NetworkId == Player.NetworkId)
                {
                    if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(EloBuddy.Player.IssueOrder(GameObjectOrder.MoveTo, Player.Position.LSExtend(Game.CursorPos, Player.LSDistance(Game.CursorPos) + 10)));
                    }
                    else if (Spells.W.IsReady())
                    {
                        Spells.W.Cast();
                    }
                }
            }
        }
Beispiel #33
0
 private static void ProcessSpell_jayceshockblast(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
 {
     if (spellData.spellName == "jayceshockblast")
     {
     }
 }
Beispiel #34
0
 private static Gapcloser GetGapcloser(GameObjectProcessSpellCastEventArgs args)
 {
     return(Spells.SingleOrDefault(spell => spell.SpellName == args.SData.Name.ToLowerInvariant()));
 }
Beispiel #35
0
 /// <summary>
 ///     Called on do-cast.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs" /> instance containing the event data.</param>
 public static void Weaving(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
 }
Beispiel #36
0
        private static void ProcessSpell_OrianaIzunaCommand(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData,
                                                            SpecialSpellEventArgs specialSpellArgs)
        {
            if (spellData.spellName == "OrianaIzunaCommand")
            {
                foreach (KeyValuePair <int, ObjectTrackerInfo> entry in objTracker)
                {
                    var info = entry.Value;

                    if (entry.Value.Name == "TheDoomBall")
                    {
                        if (info.usePosition)
                        {
                            SpellDetector.CreateSpellData(hero, info.position, args.End, spellData, null, 0);
                        }
                        else
                        {
                            if (info.obj == null)
                            {
                                return;
                            }

                            SpellDetector.CreateSpellData(hero, info.obj.Position, args.End, spellData, null, 0);
                        }

                        info.position    = args.End;
                        info.usePosition = true;
                    }
                }

                specialSpellArgs.noProcess = true;
            }

            if (spellData.spellName == "OrianaDetonateCommand" || spellData.spellName == "OrianaDissonanceCommand")
            {
                foreach (KeyValuePair <int, ObjectTrackerInfo> entry in objTracker)
                {
                    var info = entry.Value;

                    if (entry.Value.Name == "TheDoomBall")
                    {
                        if (info.usePosition)
                        {
                            Vector3 endPos2 = info.position;
                            SpellDetector.CreateSpellData(hero, endPos2, endPos2, spellData, null, 0);
                        }
                        else
                        {
                            if (info.obj == null)
                            {
                                return;
                            }

                            Vector3 endPos2 = info.obj.Position;
                            SpellDetector.CreateSpellData(hero, endPos2, endPos2, spellData, null, 0);
                        }
                    }
                }

                specialSpellArgs.noProcess = true;
            }
        }
Beispiel #37
0
        private void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            PredictionInput input = null;

            if (sender.IsMe || sender.IsEnemy || !(sender is Obj_AI_Hero))
            {
                return;
            }
            if (!Spells.Contains(args.SData.Name) || Config.SubMenu("AutoCombo_Spells").Item(args.SData.Name).GetValue <bool>() == false)
            {
                return;
            }
            var targetable = false;
            var line       = false;
            var aoe        = false;

            drawTime = Game.Time;

            var result = SpellDatabase.GetByName(args.SData.Name);

            if (result != null)
            {
                switch (result.Type)
                {
                case SkillShotType.SkillshotLine:
                    _skillshot = new Geometry.Polygon.Rectangle(sender.Position, sender.Position.Extend(args.End, result.Range), result.Radius);
                    line       = true;
                    break;

                case SkillShotType.SkillshotMissileLine:
                    _skillshot = new Geometry.Polygon.Rectangle(sender.Position, sender.Position.Extend(args.End, result.Range), result.Radius);
                    line       = true;
                    break;

                case SkillShotType.SkillshotCircle:
                    _skillshotAoe = new Geometry.Polygon.Circle(args.End, result.Radius);
                    aoe           = true;
                    break;

                case SkillShotType.SkillshotRing:
                    _skillshotAoe = new Geometry.Polygon.Circle(args.End, result.Radius);
                    aoe           = true;
                    break;
                }
            }

            foreach (
                var enemy in
                ObjectManager.Get <Obj_AI_Hero>()
                .Where(enemy => enemy.IsEnemy && enemy.Distance(Player) <= Config.SubMenu("AutoCombo").Item("Range").GetValue <Slider>().Value))
            {
                if (!aoe && !line && args.Target.Position == enemy.Position)
                {
                    targetable = true;
                }
                if (!aoe && !line && !targetable)
                {
                    continue;
                }
                //Game.PrintChat(sender.BaseSkinName + " Ultimate Damage is : " + Allydamage.CalculatedDamage);
                //Game.PrintChat("My Ultimate Damage is : " + Mydamage.CalculatedDamage);
                //Game.PrintChat("Total damage is : " + (Allydamage.CalculatedDamage + Mydamage.CalculatedDamage));

                if (Config.Item("Killable").GetValue <bool>())
                {
                    Allydamage = sender.GetDamageSpell(enemy, args.SData.Name);
                    Mydamage   = Player.GetDamageSpell(enemy, SpellSlot.R);

                    if ((Allydamage.CalculatedDamage + Mydamage.CalculatedDamage) < enemy.Health &&
                        Allydamage.CalculatedDamage > enemy.Health)
                    {
                        return;
                    }
                }

                if (line)
                {
                    input = new PredictionInput
                    {
                        Unit      = enemy,
                        Type      = SkillshotType.SkillshotLine,
                        Speed     = result.MissileSpeed,
                        From      = sender.Position,
                        Delay     = result.Delay,
                        Aoe       = false,
                        Radius    = result.Radius,
                        Range     = result.Range,
                        Collision = false
                    };
                }
                else
                {
                    if (aoe)
                    {
                        input = new PredictionInput
                        {
                            Unit      = enemy,
                            Type      = SkillshotType.SkillshotCircle,
                            Speed     = result.MissileSpeed,
                            From      = sender.Position,
                            Delay     = result.Delay,
                            Aoe       = true,
                            Radius    = result.Radius,
                            Range     = result.Range,
                            Collision = false
                        };
                    }
                }
                if (!targetable)
                {
                    var output = Prediction.GetPrediction(input);
                    var unit   = output.CastPosition;
                    if (line)
                    {
                        if (!_skillshot.IsInside(unit) && !_skillshot.IsInside(enemy))
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (!_skillshotAoe.IsInside(unit) && !_skillshotAoe.IsInside(enemy))
                        {
                            continue;
                        }
                    }
                }

                R.Cast(enemy.Position);
                if (enemy.Distance(Player.Position) <= Config.SubMenu("AutoCombo").Item("Range").GetValue <Slider>().Value)
                {
                    R.Cast(enemy);
                    R.CastOnUnit(enemy);
                }
            }
        }
Beispiel #38
0
        private void Game_ProcessSpell(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args)
        {
            if (hero.IsMinion)
            {
                return;
            }



            if (testMenu.Item("ShowProcessSpell").GetValue <bool>())
            {
                ConsolePrinter.Print(args.SData.Name + " CastTime: " + (hero.Spellbook.CastTime - Game.Time));

                ConsolePrinter.Print("CastRadius: " + args.SData.CastRadius);

                /*foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(args.SData))
                 * {
                 *  string name = descriptor.Name;
                 *  object value = descriptor.GetValue(args.SData);
                 *  ConsolePrinter.Print("{0}={1}", name, value);
                 * }*/
            }

            if (args.SData.Name == "YasuoQW")
            {
                Draw.RenderObjects.Add(
                    new Draw.RenderCircle(args.Start.To2D(), 500));
                Draw.RenderObjects.Add(
                    new Draw.RenderCircle(args.End.To2D(), 500));
            }

            //ConsolePrinter.Print(EvadeUtils.TickCount - lastProcessPacketTime);
            //circleRenderPos = args.SData.ParticleStartOffset.To2D();

            /*Draw.RenderObjects.Add(
             *  new Draw.RenderPosition(args.Start.To2D(), Evade.GetTickCount + 500));
             * Draw.RenderObjects.Add(
             *  new Draw.RenderPosition(args.End.To2D(), Evade.GetTickCount + 500));*/

            /*float testTime;
             *
             *
             * testTime = Evade.GetTickCount;
             * for (int i = 0; i < 100000; i++)
             * {
             *  var testVar = ObjectCache.myHeroCache.boundingRadius;
             * }
             * ConsolePrinter.Print("Test time1: " + (Evade.GetTickCount - testTime));
             *
             * testTime = Evade.GetTickCount;
             * var cacheVar = ObjectCache.myHeroCache.boundingRadius;
             * for (int i = 0; i < 100000; i++)
             * {
             *  var testVar = cacheVar;
             * }
             * ConsolePrinter.Print("Test time1: " + (Evade.GetTickCount - testTime));*/

            ConsolePrinter.Print("NetworkID: " + args.MissileNetworkId);

            lastHeroSpellCastTime = EvadeUtils.TickCount;

            foreach (KeyValuePair <int, Spell> entry in SpellDetector.spells)
            {
                Spell spell = entry.Value;

                if (spell.info.spellName == args.SData.Name &&
                    spell.heroID == hero.NetworkId)
                {
                    if (spell.info.isThreeWay == false && spell.info.isSpecial == false)
                    {
                        ConsolePrinter.Print("Time diff: " + (EvadeUtils.TickCount - spell.startTime));
                    }
                }
            }

            if (hero.IsMe)
            {
                lastSpellCastTime = EvadeUtils.TickCount;
            }
        }
Beispiel #39
0
        public static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!Program.E.IsReady() || !(sender is Obj_AI_Hero))
            {
                return;
            }

            var casterName       = sender.CharData.BaseSkinName;
            var slot             = args.Slot;
            var nameToLower      = casterName.ToLower();
            var spellName        = args.SData.Name;
            var spellNameToLower = spellName.ToLower();

            if ((args.Target != null && args.Target.IsMe) || ObjectManager.Player.Distance(args.End, true) < 350 * 350)
            {
                if (spellName == "RenektonDice")
                {
                    Program.E.Cast(sender);
                }
                if ((casterName == "Leona" || casterName == "Graves") &&
                    slot == SpellSlot.E)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Alistar" && slot == SpellSlot.W)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Camille" && slot == SpellSlot.E && spellName != "CamilleE")
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Diana" && slot == SpellSlot.R)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Shyvana" && slot == SpellSlot.R)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Akali" && slot == SpellSlot.R && args.SData.Cooldown > 2.5)
                {
                    Program.E.Cast(sender);
                }
                if (spellName.ToLower().Contains("flash") && sender.IsMelee)
                {
                    Program.E.Cast(sender);
                }
                if (nameToLower.Contains("zhao") || nameToLower.Contains("zix") && slot == SpellSlot.E)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Pantheon" && slot == SpellSlot.W)
                {
                    Program.E.Cast(sender);
                }
                if ((casterName == "Aatrox" || casterName == "Fiora" ||
                     casterName == "Fizz" || casterName == "Irelia" ||
                     casterName == "Jax") && slot == SpellSlot.Q)
                {
                    Program.E.Cast(sender);
                }
                if ((casterName == "Ekko" || casterName == "Shen" ||
                     casterName == "Talon" || casterName == "Tryndamere" ||
                     casterName == "Zac") &&
                    slot == SpellSlot.E)
                {
                    Program.E.Cast(sender);
                }
                if (spellNameToLower == "elisespiderqcast" || spellNameToLower == "jaycetotheskies" ||
                    spellNameToLower == "riftwalk" || spellNameToLower == "rivenfeint" ||
                    spellNameToLower == "sejuaniarcticassault")
                {
                    Program.E.Cast(sender);
                }
                if (
                    casterName == "Yasuo" && args.Target != null && args.Target.IsMe && slot ==
                    SpellSlot.E)
                {
                    Program.E.Cast(sender);
                }
            }

            if (sender.Distance(ObjectManager.Player) < 550)
            {
                //INTERRUPTER
                if ((casterName == "Katarina" || casterName == "Caitlyn" ||
                     casterName == "Karthus" || casterName == "FiddleSticks" ||
                     casterName == "Galio" || casterName == "Jhin" ||
                     casterName == "Malzahar" || casterName == "MissFortune" ||
                     casterName == "Nunu" || casterName == "Pantheon" ||
                     casterName == "Sion" || casterName == "TwistedFate" ||
                     casterName == "TahmKench" || casterName == "Urgot" ||
                     casterName == "Velkoz" || casterName == "Warwick") &&
                    slot == SpellSlot.R)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "MasterYi" && slot == SpellSlot.W)
                {
                    for (var i = 40; i < 425; i += 125)
                    {
                        var flags = NavMesh.GetCollisionFlags(
                            sender.ServerPosition.To2D()
                            .Extend(
                                Heroes.Player.ServerPosition.To2D(),
                                -i)
                            .To3D());
                        if (flags != null && flags.HasFlag(CollisionFlags.Wall) ||
                            flags.HasFlag(CollisionFlags.Building))
                        {
                            Program.E.Cast(sender);
                            return;
                        }
                    }
                }
                if (casterName == "Vi" && slot == SpellSlot.Q)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "FiddleSticks" && slot == SpellSlot.W)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Vladimir" && slot == SpellSlot.E &&
                    sender.IsFacing(ObjectManager.Player))
                {
                    Program.E.Cast(sender);
                }
            }
        }
Beispiel #40
0
        protected override void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base unit, GameObjectProcessSpellCastEventArgs args)
        {
            //Shield Ally
            if (!Menu.Item("saveEMana", true).GetValue <bool>() || Player.Mana - ESpell.SData.Mana >= QSpell.SData.Mana + WSpell.SData.Mana)
            {
                if (unit.IsEnemy && unit.Type == GameObjectType.AIHeroClient && E.IsReady())
                {
                    foreach (
                        var ally in
                        HeroManager.Allies
                        .Where(
                            x =>
                            Player.Distance(x.Position) < E.Range && Player.Distance(unit.Position) < 1500 &&
                            !x.IsDead).OrderBy(x => x.Distance(args.End)))
                    {
                        if (Menu.Item("shield" + ally.BaseSkinName, true) != null)
                        {
                            if (Menu.Item("shield" + ally.BaseSkinName, true).GetValue <bool>())
                            {
                                var hp = Menu.Item("eAllyIfHP", true).GetValue <Slider>().Value;

                                if (ally.Distance(args.End) < 500 && ally.HealthPercent <= hp)
                                {
                                    E.CastOnUnit(ally);
                                    _isBallMoving = true;
                                    return;
                                }
                            }
                        }
                    }
                }
            }

            //intiator
            if (unit.IsAlly)
            {
                if (
                    Initiator.InitatorList.Where(spell => args.SData.Name == spell.SDataName)
                    .Where(spell => Menu.Item(spell.SpellName, true).GetValue <bool>())
                    .Any(spell => E.IsReady() && Player.Distance(unit.Position) < E.Range))
                {
                    E.CastOnUnit(unit);
                    _isBallMoving = true;
                    return;
                }
            }

            if (!unit.IsMe)
            {
                return;
            }

            var castedSlot = Player.GetSpellSlot(args.SData.Name);

            if (castedSlot == SpellSlot.Q)
            {
                _isBallMoving = true;
                LeagueSharp.Common.Utility.DelayAction.Add(
                    (int)Math.Max(1, 1000 * (args.End.Distance(_currentBallPosition) - Game.Ping - 0.1) / Q.Speed), () =>
                {
                    _currentBallPosition = args.End;
                    _ballStatus          = 1;
                    _isBallMoving        = false;
                });
            }
        }