/// <summary> /// Do the combo sequence /// </summary> private static void OnCombo() { Obj_AI_Hero target = GetEnemy(1500f); if (Menu.Item("useEGap").GetValue <bool>() && _spells[Spells.E].IsReady()) { Obj_AI_Base dashObject = GetBestDashObject(target); Vector3 positionAfterE = V3E(_player.ServerPosition, dashObject.ServerPosition, 475); if (_player.Distance(dashObject) <= _spells[Spells.E].Range && _player.Distance(target) > _spells[Spells.Q].Range) { if (Menu.Item("safetyCheck").GetValue <bool>() && positionAfterE.UnderTurret(true)) { return; } _spells[Spells.E].CastOnUnit(dashObject); } } if (Menu.Item("useQC").GetValue <bool>() && Menu.Item("useEC").GetValue <bool>() && _spells[Spells.Q].IsReady() && _spells[Spells.E].IsReady() && _spells[Spells.E].IsInRange(target) && V3E(_player.ServerPosition, target.ServerPosition, _spells[Spells.E].Range).To2D().Distance(target) <= 315) { if (Menu.Item("safetyCheck").GetValue <bool>() && V3E(_player.ServerPosition, target.ServerPosition, _spells[Spells.E].Range).UnderTurret(true)) { return; } _spells[Spells.E].CastOnUnit(target); Utility.DelayAction.Add(target.GetDistanceCastTime(_spells[Spells.E]), () => _spells[Spells.Q].Cast()); } //Q Casting if (Menu.Item("useQC").GetValue <bool>() && _spells[Spells.Q].IsReady() && target != null) { if (!_player.IsDashing()) { PredictionOutput prediction = _spells[Spells.Q].GetPrediction(target); if (prediction.Hitchance >= HitChance.Medium) { _spells[Spells.Q].Cast(prediction.CastPosition); } } } //Normal E cast if (Menu.Item("useEC").GetValue <bool>() && _spells[Spells.E].IsReady() && _spells[Spells.E].IsInRange(target) && _player.CanDash(target)) { if (target != null && V3E(_player.ServerPosition, target.ServerPosition, _spells[Spells.E].Range).UnderTurret(true)) { return; } _spells[Spells.E].CastOnUnit(target); } if (Menu.Item("useRC").GetValue <bool>() && _spells[Spells.R].IsReady() && _spells[Spells.R].IsInRange(target)) { var enemiesKnockedUp = ObjectManager.Get <Obj_AI_Hero>() .Where(x => x.IsValidTarget(_spells[Spells.R].Range) && x.HasBuffOfType(BuffType.Knockup)); if (enemiesKnockedUp.Count() >= Menu.Item("rCount").GetValue <Slider>().Value) { _spells[Spells.R].Cast(); } else { if (Menu.Item("delayUltimate").GetValue <bool>() && target.IsAirborne()) { Utility.DelayAction.Add( (int)(AirborneTimeLeft(target) * 1000 - 200), () => _spells[Spells.R].Cast()); } } } }