Beispiel #1
0
 public static void CastW(Obj_AI_Base target)
 {
     if (SpellSlot.W.IsReady() && target.IsValidTarget(W.Range) && !Util.MyHero.HasBuff("dravenfurybuff"))
     {
         var pred    = E.GetPrediction(target);
         var damageI = target.GetBestCombo();
         if (pred.HitChancePercent >= 20f && ((damageI.IsKillable && Extensions.Distance(Util.MyHero, target, true) < Extensions.Distance(Util.MyHero, pred.CastPosition, true)) || Extensions.Distance(Util.MyHero, target) >= 500f))
         {
             Util.MyHero.Spellbook.CastSpell(SpellSlot.W);
         }
     }
 }
Beispiel #2
0
        public static DamageResult GetBestCombo(this Obj_AI_Base target)
        {
            var q = new[] { true };
            var w = SpellSlot.W.IsReady() ? new[] { false, true } : new[] { false };
            var e = SpellSlot.E.IsReady() ? new[] { false, true } : new[] { false };
            var r = SpellSlot.R.IsReady() ? new[] { false, true } : new[] { false };

            if (target != null)
            {
                DamageResult damageI2;
                if (PredictedDamage.ContainsKey(target.NetworkId))
                {
                    var damageI = PredictedDamage[target.NetworkId];
                    if (Game.Time - damageI.Time <= RefreshTime)
                    {
                        return(PredictedDamage[target.NetworkId]);
                    }
                    bool[] best     = { false, false, false, false };
                    var    bestdmg  = 0f;
                    var    bestmana = 0f;
                    foreach (var r1 in r)
                    {
                        foreach (var q1 in q)
                        {
                            foreach (var w1 in w)
                            {
                                foreach (var e1 in e)
                                {
                                    damageI2 = target.GetComboDamage(q1, w1, e1, r1);
                                    var d = damageI2.Damage;
                                    var m = damageI2.Mana;
                                    if (Util.MyHero.Mana >= m)
                                    {
                                        if (bestdmg >= target.TotalShieldHealth())
                                        {
                                            if (d >= target.TotalShieldHealth() && (d < bestdmg || m < bestmana))
                                            {
                                                bestdmg  = d;
                                                bestmana = m;
                                                best     = new[] { q1, w1, e1, r1 };
                                            }
                                        }
                                        else
                                        {
                                            if (d >= bestdmg)
                                            {
                                                bestdmg  = d;
                                                bestmana = m;
                                                best     = new[] { q1, w1, e1, r1 };
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    PredictedDamage[target.NetworkId] = new DamageResult(target, bestdmg, bestmana, best[0], best[1],
                                                                         best[2], best[3], Game.Time);
                    return(PredictedDamage[target.NetworkId]);
                }
                damageI2 = target.GetComboDamage(SpellSlot.Q.IsReady(), SpellSlot.W.IsReady(), SpellSlot.E.IsReady(), SpellSlot.R.IsReady());
                PredictedDamage[target.NetworkId] = new DamageResult(target, damageI2.Damage, damageI2.Mana, false,
                                                                     false, false, false, Game.Time - (Game.Ping * 2f) / 2000f);
                return(target.GetBestCombo());
            }
            return(new DamageResult(null, 0, 0, false, false, false, false, 0));
        }
Beispiel #3
0
        public static DamageResult GetBestCombo(this Obj_AI_Base target)
        {
            var q = SpellSlot.Q.IsReady() ? new bool[] { false, true } : new bool[] { false };
            var w = SpellSlot.W.IsReady() ? new bool[] { false, true } : new bool[] { false };
            var e = SpellSlot.E.IsReady() ? new bool[] { false, true } : new bool[] { false };
            var r = SpellSlot.R.IsReady() ? new bool[] { false, true } : new bool[] { false };

            if (target.IsValidTarget())
            {
                if (PredictedDamage.ContainsKey(target.NetworkId))
                {
                    var damageI = PredictedDamage[target.NetworkId];
                    if (Game.Time - damageI.Time <= RefreshTime)
                    {
                        return(PredictedDamage[target.NetworkId]);
                    }
                    else
                    {
                        bool[] best = new bool[] {
                            SpellSlot.Q.IsReady(),
                               SpellSlot.W.IsReady(),
                               SpellSlot.E.IsReady(),
                               SpellSlot.R.IsReady()
                        };
                        var bestdmg  = 0f;
                        var bestmana = 0f;
                        foreach (bool r1 in r)
                        {
                            foreach (bool q1 in q)
                            {
                                foreach (bool w1 in w)
                                {
                                    foreach (bool e1 in e)
                                    {
                                        DamageResult damageI2 = target.GetComboDamage(q1, w1, e1, r1);
                                        float        d        = damageI2.Damage;
                                        float        m        = damageI2.Mana;
                                        if (Util.MyHero.Mana >= m)
                                        {
                                            if (bestdmg >= target.Health)
                                            {
                                                if (d >= target.Health && (d < bestdmg || m < bestmana))
                                                {
                                                    bestdmg  = d;
                                                    bestmana = m;
                                                    best     = new bool[] { q1, w1, e1, r1 };
                                                }
                                            }
                                            else
                                            {
                                                if (d >= bestdmg)
                                                {
                                                    bestdmg  = d;
                                                    bestmana = m;
                                                    best     = new bool[] { q1, w1, e1, r1 };
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        PredictedDamage[target.NetworkId] = new DamageResult(target, bestdmg, bestmana, best[0], best[1], best[2], best[3], Game.Time);
                        return(PredictedDamage[target.NetworkId]);
                    }
                }
                else
                {
                    var damageI2 = target.GetComboDamage(SpellSlot.Q.IsReady(), SpellSlot.W.IsReady(), SpellSlot.R.IsReady(), SpellSlot.R.IsReady());
                    PredictedDamage[target.NetworkId] = new DamageResult(target, damageI2.Damage, damageI2.Mana, false, false, false, false, Game.Time - (Game.Ping * 2) / 2000);
                    return(target.GetBestCombo());
                }
            }
            return(new DamageResult(target, 0, 0, false, false, false, false, 0));
        }
Beispiel #4
0
 public static void CastW(Obj_AI_Base target)
 {
     if (SpellSlot.W.IsReady() && target.IsValidTarget(W.Range) && !Util.MyHero.HasBuff("dravenfurybuff"))
     {
         var pred = E.GetPrediction(target);
         var damageI = target.GetBestCombo();
         if (pred.HitChancePercent >= 20f && ((damageI.IsKillable && Util.MyHero.Distance(target, true) < Util.MyHero.Distance(pred.CastPosition, true)) || Util.MyHero.Distance(target) >= 500f))
         {
             Util.MyHero.Spellbook.CastSpell(SpellSlot.W);
         }
     }
 }