コード例 #1
0
        /// <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());
                    }
                }
            }
        }