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); } } } }