コード例 #1
0
ファイル: Cassiopeia.cs プロジェクト: Challangerr/scripts
 private void ELogic()
 {
     try
     {
         if (!DelayManager.Check("e-delay", _lastECast))
         {
             return;
         }
         var ts = Targets.FirstOrDefault(t => E.CanCast(t) && GetPoisonBuffEndTime(t) > E.ArrivalTime(t));
         if (ts != null)
         {
             var pred = E.GetPrediction(ts, false, -1f, new[] { CollisionableObjects.YasuoWall });
             if (pred.Hitchance != HitChance.Collision)
             {
                 _lastECast = Environment.TickCount;
                 E.Cast(ts);
             }
         }
     }
     catch (Exception ex)
     {
         Global.Logger.AddItem(new LogItem(ex));
     }
 }
コード例 #2
0
ファイル: Cassiopeia.cs プロジェクト: Challangerr/scripts
        protected override void LaneClear()
        {
            if (!ResourceManager.Check("lane-clear"))
            {
                return;
            }

            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();
            var useW = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() && W.IsReady();
            var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady() &&
                       DelayManager.Check("e-delay", _lastECast);

            if (useE)
            {
                var minion =
                    MinionManager.GetMinions(Player.ServerPosition, E.Range)
                    .FirstOrDefault(
                        e =>
                        GetPoisonBuffEndTime(e) > E.ArrivalTime(e) &&
                        (e.Health > E.GetDamage(e) * 2 || e.Health < E.GetDamage(e) - 5));
                if (minion != null)
                {
                    _lastEEndTime = Game.Time + E.ArrivalTime(minion) + 0.1f;
                    _lastECast    = Environment.TickCount;
                    Casting.TargetSkill(minion, E);
                }
            }

            if (useQ || useW)
            {
                var minions =
                    MinionManager.GetMinions(Player.ServerPosition, Q.Range + Q.Width)
                    .Where(e => GetPoisonBuffEndTime(e) < Q.Delay * 1.1)
                    .ToList();
                if (minions.Any())
                {
                    if (useQ)
                    {
                        var prediction = Q.GetCircularFarmLocation(minions, Q.Width + 30);
                        if (prediction.MinionsHit > 1 && Game.Time > _lastPoisonClearDelay ||
                            _lastPoisonClearPosition.Distance(prediction.Position) > W.Width * 1.1f)
                        {
                            var mP =
                                minions.Count(
                                    p =>
                                    p.Distance(prediction.Position) < Q.Width + 30 &&
                                    GetPoisonBuffEndTime(p) >= 0.5f);
                            if (prediction.MinionsHit - mP > 1)
                            {
                                _lastPoisonClearDelay    = Game.Time + Q.Delay + 1;
                                _lastPoisonClearPosition = prediction.Position;
                                Q.Cast(prediction.Position);
                            }
                        }
                    }
                    if (useW)
                    {
                        var prediction = W.GetCircularFarmLocation(minions, W.Width + 50);
                        if (prediction.MinionsHit > 2 &&
                            (Game.Time > _lastPoisonClearDelay ||
                             _lastPoisonClearPosition.Distance(prediction.Position) > Q.Width * 1.1f))
                        {
                            var mP =
                                minions.Count(
                                    p =>
                                    p.Distance(prediction.Position) < W.Width + 50 &&
                                    GetPoisonBuffEndTime(p) >= 0.5f);
                            if (prediction.MinionsHit - mP > 1)
                            {
                                _lastPoisonClearDelay    = Game.Time + W.Delay + 2;
                                _lastPoisonClearPosition = prediction.Position;
                                W.Cast(prediction.Position);
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
        protected override void LaneClear()
        {
            var q = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();
            var w = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() && W.IsReady();

            if (Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady() &&
                ManaManager.Check("lane-clear") && DelayManager.Check("e-delay", _lastECast))
            {
                var minion =
                    MinionManager.GetMinions(
                        Player.ServerPosition, E.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth)
                    .Where(
                        e =>
                        GetPoisonBuffEndTime(e) > E.ArrivalTime(e) &&
                        (e.Team == GameObjectTeam.Neutral ||
                         (e.Health > E.GetDamage(e) * 2 || e.Health < E.GetDamage(e) - 5)))
                    .OrderByDescending(
                        m => m.CharData.BaseSkinName.Contains("MinionSiege", StringComparison.OrdinalIgnoreCase))
                    .FirstOrDefault();
                if (minion != null)
                {
                    _lastEEndTime = Game.Time + E.ArrivalTime(minion) + 0.1f;
                    _lastECast    = Environment.TickCount;
                    Casting.TargetSkill(minion, E);
                }
            }

            if (q || w)
            {
                var minions =
                    MinionManager.GetMinions(Player.ServerPosition, Q.Range + Q.Width)
                    .Where(e => GetPoisonBuffEndTime(e) < Q.Delay * 1.1)
                    .OrderByDescending(
                        m => m.CharData.BaseSkinName.Contains("MinionSiege", StringComparison.OrdinalIgnoreCase))
                    .ToList();
                if (minions.Any())
                {
                    if (q)
                    {
                        var prediction = Q.GetCircularFarmLocation(minions, Q.Width + 30);
                        if (prediction.MinionsHit > 1 && _lastPoisonClearDelay < Game.Time)
                        {
                            _lastPoisonClearDelay = Game.Time + Q.Delay;
                            Q.Cast(prediction.Position);
                        }
                    }
                    if (w)
                    {
                        var prediction = W.GetCircularFarmLocation(minions, W.Width + 50);
                        if (prediction.MinionsHit > 2 && _lastPoisonClearDelay < Game.Time)
                        {
                            _lastPoisonClearDelay = Game.Time + W.Delay;
                            W.Cast(prediction.Position);
                        }
                    }
                }
                else
                {
                    var creep =
                        MinionManager.GetMinions(
                            Player.ServerPosition, Q.Range + Q.Width, MinionTypes.All, MinionTeam.Neutral,
                            MinionOrderTypes.MaxHealth).FirstOrDefault(e => GetPoisonBuffEndTime(e) < Q.Delay * 1.1);
                    if (creep != null)
                    {
                        if (q)
                        {
                            Q.Cast(creep);
                        }
                        if (w)
                        {
                            W.Cast(creep);
                        }
                    }
                }
            }
        }