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