private static void Obj_AI_Base_OnSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (!sender.IsMe)
     {
         return;
     }
     if (args.SData.IsAutoAttack())
     {
         Queuer.Remove("AA");
         if (Queuer.Queue.Any() && Queuer.Queue[0] == "Q")
         {
             var target = args.Target as Obj_AI_Base;
             if (target != null && (SpellManager.Spells[SpellSlot.R].IsReady() &&
                                    Player.Instance.CalculateDamageOnUnit(target, DamageType.Physical,
                                                                          (int)DamageHandler.RDamage(target)) >= target.Health && SpellEvents.HasR2 &&
                                    Program.ComboMenu["combo.useR2"].Cast <CheckBox>().CurrentValue))
             {
                 Queuer.Queue = new List <string>();
                 return;
             }
             Player.CastSpell(SpellSlot.Q, args.Target.Position);
             Queuer.Remove("Q");
             Orbwalker.ResetAutoAttack();
         }
         else if (!Queuer.Queue.Any() && Queuer.tiamat != null && Queuer.tiamat.CanUseItem() && Program.ComboMenu["combo.hydra"].Cast <CheckBox>().CurrentValue&& Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && args.Target is AIHeroClient)
         {
             Queuer.tiamat.Cast();
             Orbwalker.ResetAutoAttack();
         }
     }
     if (args.SData.Name.ToLower().Contains("itemtiamatcleave"))
     {
         Queuer.Remove("H");
         Orbwalker.ResetAutoAttack();
     }
     if (Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.None &&
         !Program.ComboMenu["combo.alwaysCancelQ"].Cast <CheckBox>().CurrentValue)
     {
         return;
     }
     if (args.SData.Name.ToLower().Contains("riventricleave"))
     {
         Orbwalker.ResetAutoAttack();
         if (QCount == 2)
         {
             Core.DelayAction(CancelAnimation, 362 + Game.Ping);
             return;
         }
         Core.DelayAction(CancelAnimation, 250 + Game.Ping);
     }
 }
Example #2
0
        public static void Combo()
        {
            // Queuer Stuff start\

            var target = TargetSelector2.GetTarget(500, DamageType.Physical);

            if (target == null)
            {
                Target       = null;
                Queuer.Queue = new List <string>();
                return;
            }
            if (Target == null || target.NetworkId != Target.NetworkId)
            {
                Target       = target;
                Queuer.Queue = new List <string>();
            }
            if (Queuer.Queue.Any())
            {
                Queuer.DoQueue(target);
                return;
            }

            // Queuer Stuff End

            var comboDmg = DamageHandler.ComboDamage(target, true);

            if (Program.ComboMenu["combo.useQ"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useW"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useE"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useR"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useR2"].Cast <CheckBox>().CurrentValue&&
                SpellManager.Spells[SpellSlot.Q].IsReady() &&
                SpellManager.Spells[SpellSlot.W].IsReady() &&
                SpellManager.Spells[SpellSlot.E].IsReady() &&
                SpellManager.Spells[SpellSlot.R].IsReady() &&
                SpellEvents.QCount == 0 &&
                !SpellEvents.HasR2
                &&
                (Program.IsRActive ||
                 target.IsValidTarget(SpellManager.Spells[SpellSlot.E].Range + SpellManager.Spells[SpellSlot.W].Range) &&
                 comboDmg < target.Health &&
                 comboDmg +
                 Player.Instance.CalculateDamageOnUnit(target, DamageType.Physical,
                                                       (int)DamageHandler.RDamage(target, comboDmg)) >= target.Health))
            {
                Queuer.Queue.Add("E");
                Queuer.Queue.Add("R1");
                Queuer.Queue.Add("Q");
                Queuer.Queue.Add("H");
                Queuer.Queue.Add("W");
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("Q");
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("Q");
                return;
            }

            if (SpellManager.Spells[SpellSlot.R].IsReady() &&
                Program.ComboMenu["combo.useR"].Cast <CheckBox>().CurrentValue&&
                (Program.IsRActive ||
                 comboDmg < target.Health &&
                 comboDmg + Player.Instance.CalculateDamageOnUnit(target, DamageType.Physical,
                                                                  (int)DamageHandler.RDamage(target, comboDmg)) >= target.Health) && !SpellEvents.HasR)
            {
                if (Program.ComboMenu["combo.eR1"].Cast <CheckBox>().CurrentValue&& SpellManager.Spells[SpellSlot.E].IsReady() && SpellManager.Spells[SpellSlot.R].IsReady())
                {
                    Queuer.Queue.Add("E");
                    Queuer.Queue.Add("R1");
                    return;
                }
                if (Program.ComboMenu["combo.R1"].Cast <CheckBox>().CurrentValue&& SpellManager.Spells[SpellSlot.R].IsReady())
                {
                    Queuer.Queue.Add("R1");
                    return;
                }
            }

            if (SpellManager.Spells[SpellSlot.R].IsReady() && SpellEvents.HasR2 &&
                Program.ComboMenu["combo.useR2"].Cast <CheckBox>().CurrentValue)
            {
                if (Player.Instance.CalculateDamageOnUnit(target, DamageType.Physical,
                                                          (int)DamageHandler.RDamage(target)) >= target.Health)
                {
                    if (Program.ComboMenu["combo.eR2"].Cast <CheckBox>().CurrentValue&&
                        SpellManager.Spells[SpellSlot.E].IsReady() && SpellManager.Spells[SpellSlot.R].IsReady())
                    {
                        Queuer.Queue.Add("E");
                        Queuer.Queue.Add("R2");
                        return;
                    }
                    if (Program.ComboMenu["combo.R2"].Cast <CheckBox>().CurrentValue&& SpellManager.Spells[SpellSlot.R].IsReady())
                    {
                        Queuer.Queue.Add("R2");
                        return;
                    }
                }
                if (Player.Instance.CalculateDamageOnUnit(target, DamageType.Physical,
                                                          (int)(DamageHandler.RDamage(target) + DamageHandler.QDamage())) >= target.Health)
                {
                    if (Program.ComboMenu["combo.qR2"].Cast <CheckBox>().CurrentValue&&
                        SpellManager.Spells[SpellSlot.R].IsReady() && SpellManager.Spells[SpellSlot.Q].IsReady())
                    {
                        Queuer.Queue.Add("R2");
                        Queuer.Queue.Add("Q");
                        return;
                    }
                }
            }

            if (Program.ComboMenu["combo.useQ"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useW"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useE"].Cast <CheckBox>().CurrentValue&&
                SpellManager.Spells[SpellSlot.Q].IsReady() && SpellManager.Spells[SpellSlot.E].IsReady() &&
                SpellManager.Spells[SpellSlot.W].IsReady() && Queuer.tiamat != null && Queuer.tiamat.CanUseItem()
                &&
                target.IsValidTarget(SpellManager.Spells[SpellSlot.E].Range + SpellManager.Spells[SpellSlot.W].Range +
                                     ObjectManager.Player.BoundingRadius + target.BoundingRadius))
            {
                Queuer.Queue.Add("E");
                Queuer.Queue.Add("H");
                Queuer.Queue.Add("W");
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("Q");
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("Q");
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("Q");
                return;
            }
            if (Program.ComboMenu["combo.useQ"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useW"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useE"].Cast <CheckBox>().CurrentValue&&
                SpellManager.Spells[SpellSlot.Q].IsReady() && SpellManager.Spells[SpellSlot.E].IsReady() &&
                SpellManager.Spells[SpellSlot.W].IsReady() && (Queuer.tiamat == null || !Queuer.tiamat.CanUseItem())
                &&
                target.IsValidTarget(SpellManager.Spells[SpellSlot.E].Range +
                                     ObjectManager.Player.GetAutoAttackRange(target)))
            {
                Queuer.Queue.Add("E");
                Queuer.Queue.Add("H");
                Queuer.Queue.Add("W");
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("Q");
                return;
            }
            if (Program.ComboMenu["combo.useW"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useQ"].Cast <CheckBox>().CurrentValue&&
                SpellManager.Spells[SpellSlot.Q].IsReady() && SpellEvents.QCount == 2 &&
                SpellManager.Spells[SpellSlot.W].IsReady()
                &&
                target.IsValidTarget(SpellManager.Spells[SpellSlot.Q].Range +
                                     SpellManager.Spells[SpellSlot.W].getTrueRange(target)))
            {
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("Q");
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("H");
                Queuer.Queue.Add("W");
                Queuer.Queue.Add("AA");
                return;
            }
            if (SpellManager.Spells[SpellSlot.W].IsReady() && SpellManager.Spells[SpellSlot.W].inRange(target))
            {
                if (Program.ComboMenu["combo.hydra"].Cast <CheckBox>().CurrentValue)
                {
                    Queuer.Queue.Add("H");
                }
                Queuer.Queue.Add("W");
                return;
            }

            if (Program.ComboMenu["combo.useQ"].Cast <CheckBox>().CurrentValue&&
                SpellManager.Spells[SpellSlot.Q].IsReady() && Orbwalker.CanAutoAttack)
            {
                if (SpellManager.Spells[SpellSlot.Q].IsInRange(target))
                {
                    Queuer.Queue.Add("AA");
                    Queuer.Queue.Add("Q");
                    return;
                }
            }
            if (!target.IsValidTarget(Player.Instance.GetAutoAttackRange(target)) &&
                target.IsValidTarget(Player.Instance.GetAutoAttackRange(target) + SpellManager.Spells[SpellSlot.Q].Range) && Program.ComboMenu["combo.useQGapClose"].Cast <CheckBox>().CurrentValue)
            {
                Queuer.Queue.Add("AA");
                Queuer.Queue.Add("Q");
                return;
            }
            if (Program.ComboMenu["combo.useW"].Cast <CheckBox>().CurrentValue&&
                Program.ComboMenu["combo.useE"].Cast <CheckBox>().CurrentValue&&
                SpellManager.Spells[SpellSlot.E].IsReady() && SpellManager.Spells[SpellSlot.W].IsReady() &&
                target.IsValidTarget(SpellManager.Spells[SpellSlot.W].getTrueRange(target) +
                                     SpellManager.Spells[SpellSlot.E].Range))
            {
                Queuer.Queue.Add("E");
                if (Program.ComboMenu["combo.hydra"].Cast <CheckBox>().CurrentValue)
                {
                    Queuer.Queue.Add("H");
                }
                Queuer.Queue.Add("W");
                return;
            }
            if (Program.ComboMenu["combo.useE"].Cast <CheckBox>().CurrentValue&&
                SpellManager.Spells[SpellSlot.E].IsReady() &&
                !target.IsValidTarget(Player.Instance.GetAutoAttackRange(target)))
            {
                Queuer.Queue.Add("E");
            }
            else
            {
                Queuer.Queue = new List <string>();
            }
        }