Beispiel #1
0
        private void Combo()
        {
            if (actionQueue.ExecuteNextAction(comboQueue))
            {
                return;
            }

            if (q.UseOnCombo && q.IsReady())
            {
                if (CastQ(true))
                {
                    return;
                }
            }

            if (w.UseOnCombo && w.IsReady() &&
                TargetSelector.GetTarget(player.AttackRange + 30F, TargetSelector.DamageType.Physical) != null)
            {
                AIHeroClient target = TargetSelector.GetTarget(player.AttackRange + 30F, TargetSelector.DamageType.Physical);

                if (target != null)
                {
                    actionQueue.EnqueueAction(comboQueue, () => true, () => w.Cast(), () => !w.IsReady());
                    actionQueue.EnqueueAction(comboQueue, () => true, () => olafItems.UseItems(target), () => true);
                    actionQueue.EnqueueAction(
                        comboQueue,
                        () => true,
                        () => EloBuddy.Player.IssueOrder(GameObjectOrder.AttackUnit, target),
                        () =>
                        autoAttackCheck.Status || player.Distance(target) > Orbwalking.GetRealAutoAttackRange(target));
                    return;
                }
            }

            if (e.UseOnCombo && e.IsReady())
            {
                AIHeroClient target = TargetSelector.GetTarget(e.Range, e.DamageType);

                if (target != null)
                {
                    actionQueue.EnqueueAction(
                        comboQueue,
                        () => true,
                        () => EloBuddy.Player.IssueOrder(GameObjectOrder.AttackUnit, target),
                        () => autoAttackCheck.Status);
                    actionQueue.EnqueueAction(comboQueue, () => true, () => olafItems.UseItems(target), () => true);
                    actionQueue.EnqueueAction(comboQueue, () => true, () => CastE(target), () => !e.IsReady());
                    actionQueue.EnqueueAction(
                        comboQueue,
                        () => true,
                        () => EloBuddy.Player.IssueOrder(GameObjectOrder.AttackUnit, target),
                        () =>
                        autoAttackCheck.Status || player.Distance(target) > Orbwalking.GetRealAutoAttackRange(target));
                }
            }
        }
Beispiel #2
0
 public void ForceUltimate(AIHeroClient target = null)
 {
     if (target != null && r.CanCast(target))
     {
         r.Cast(target);
     }
     else
     {
         r.Cast(TargetSelector.GetTarget(r.Range, r.DamageType));
     }
 }
Beispiel #3
0
        private bool CastQ(bool combo, IEnumerable <AIHeroClient> blackList = null)
        {
            if ((q.IsReady()) && ((combo && q.UseOnCombo) || (!combo && q.UseOnHarass)))
            {
                AIHeroClient target = TargetSelector.GetTarget(q.Range, q.DamageType, true, blackList);

                if (target != null)
                {
                    PredictionOutput predictionOutput = q.GetPrediction(target);

                    if (predictionOutput.Hitchance >= HitChance.Medium)
                    {
                        float distance1 = predictionOutput.CastPosition.Distance(player.Position);
                        float distance2 = target.Distance(player.Position);

                        float extension = -75F;
                        if (distance2 < player.AttackRange)
                        {
                            extension = 50F;
                        }
                        if (distance1 > 250F)
                        {
                            extension = -100;
                        }
                        if (distance1 > 500F)
                        {
                            extension = -130F;
                        }
                        if (distance1 > 700)
                        {
                            extension = -150F;
                        }
                        else if (distance1 > 850F)
                        {
                            extension = -175F;
                        }

                        q.Cast(predictionOutput.CastPosition.Extend(player.Position, extension));
                        return(true);
                    }
                }
            }
            return(false);
        }
Beispiel #4
0
 private void CastE(Obj_AI_Base target)
 {
     e.Cast(target);
     Orbwalking.ResetAutoAttackTimer();
 }
Beispiel #5
0
 private void CastE(AIBaseClient target)
 {
     e.Cast(target);
     Orbwalking.ResetAutoAttackTimer();
 }