示例#1
0
            private int hitOnTar(Obj_AI_Base tar)
            {
                if (tar == null)
                {
                    return(int.MaxValue);
                }
                int addTime = 0;

                if (DeathWalker.inAutoAttackRange(source, tar))//+ check if want to move to killabel minion and range it wants to
                {
                    var realDist = DeathWalker.realDistanceTill(source, target);
                    var aaRange  = DeathWalker.getRealAutoAttackRange(source, tar);

                    addTime += (int)(((realDist - aaRange) * 1000) / source.MoveSpeed);
                }

                if (source.IsMelee || DeathWalker.azir)
                {
                    return((int)(createdTick + source.AttackCastDelay * 1000) + addTime);
                }
                else
                {
                    return(createdTick + (int)((source.Position.Distance(tar.Position) * 1000) / (source.BasicAttack.MissileSpeed)) + ((source is Obj_AI_Turret) ? towerDamageDelay : 0) + addTime);//lil delay cus dunno l8er could try to values what says delay of dmg dealing
                }
            }
示例#2
0
        public static void useQSmart(Obj_AI_Base target)
        {
            try
            {
                if (!Q.IsReady() || target.Path.Count() == 0 || !target.IsMoving)
                {
                    return;
                }
                Vector2 nextEnemPath = target.Path[0].To2D();
                var     dist         = player.Position.To2D().Distance(target.Position.To2D());
                var     distToNext   = nextEnemPath.Distance(player.Position.To2D());
                if (distToNext <= dist)
                {
                    return;
                }
                var msDif = player.MoveSpeed - target.MoveSpeed;
                if (msDif <= 0 && !DeathWalker.inAutoAttackRange(target) && DeathWalker.canAttack())
                {
                    Q.Cast(target);
                }

                var reachIn = dist / msDif;
                if (reachIn > 4)
                {
                    Q.Cast(target);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#3
0
 public static void useESmart(Obj_AI_Base target)
 {
     if (DeathWalker.inAutoAttackRange(target) && E.IsReady() && (aaToKill(target) > 2 || iAmLow()))
     {
         E.Cast(MasterSharp.Config.Item("packets").GetValue <bool>());
     }
 }
示例#4
0
 public static void useRSmart(Obj_AI_Base target)
 {
     if (DeathWalker.inAutoAttackRange(target) && R.IsReady() && aaToKill(target) > 5)
     {
         R.Cast(MasterSharp.Config.Item("packets").GetValue <bool>());
     }
 }
示例#5
0
 public static Obj_AI_Base getMinUnderTower()
 {
     foreach (var tAttack in DtsHealthPrediction.ActiveAttacksTower)
     {
         var enem = tAttack.Value.Target;
         if (enem.IsValidTarget() && enem is Obj_AI_Minion && enem.IsEnemy && DeathWalker.inAutoAttackRange(enem))
         {
             return(tAttack.Value.Target);
         }
     }
     return(null);
 }
示例#6
0
        public static void doHarass(Obj_AI_Hero target)
        {
            if (target == null || !target.IsValid || player.Mana < 200)
            {
                return;
            }


            if (!DeathWalker.inAutoAttackRange(target))
            {
                useQonTarg(target, QhitChance.medium);
            }
        }
示例#7
0
 public static Obj_AI_Base shouldWait()
 {
     EnemyMinions = MinionManager.GetMinions(player.Position, 1500);
     foreach (var enemyMinion in EnemyMinions)
     {
         if (!DeathWalker.inAutoAttackRange(enemyMinion))
         {
             continue;
         }
         var minHealthPred = DamagePrediction.getPred(enemyMinion, DamagePrediction.PredType.PRED_TWO_HITS);
         var dmgOnMinion   = player.GetAutoAttackDamage(enemyMinion, true);
         if (minHealthPred <= dmgOnMinion)
         {
             return(enemyMinion);
         }
     }
     return(null);
 }
示例#8
0
 public static Obj_AI_Base findKillable()
 {
     EnemyMinions = MinionManager.GetMinions(player.Position, 1500);
     foreach (var enemyMinion in EnemyMinions)
     {
         if (!DeathWalker.inAutoAttackRange(enemyMinion))
         {
             continue;
         }
         var minHealthPred = DamagePrediction.getPred(enemyMinion, DamagePrediction.PredType.PRED_LAST_HIT);
         var dmgOnMinion   = player.GetAutoAttackDamage(enemyMinion, true);
         if (minHealthPred <= dmgOnMinion && minHealthPred > lowerLimit)
         {
             return(enemyMinion);
         }
     }
     return(null);
 }
示例#9
0
        public static void OnGameProcessPacket(GamePacketEventArgs args)
        {
            return;

            if (Config.Item("comboWreset").GetValue <bool>() && args.PacketData[0] == 0x65 && MasterYi.W.IsReady() && DeathWalker.CurrentMode == DeathWalker.Mode.Combo)
            {
                // LogPacket(args);
                GamePacket gp = new GamePacket(args.PacketData);
                gp.Position = 1;
                Packet.S2C.Damage.Struct dmg = Packet.S2C.Damage.Decoded(args.PacketData);

                int   targetID            = gp.ReadInteger();
                int   dType               = (int)gp.ReadByte();
                int   Unknown             = gp.ReadShort();
                float DamageAmount        = gp.ReadFloat();
                int   TargetNetworkIdCopy = gp.ReadInteger();
                int   SourceNetworkId     = gp.ReadInteger();
                float dmga =
                    (float)
                    MasterYi.player.GetAutoAttackDamage(
                        ObjectManager.GetUnitByNetworkId <Obj_AI_Base>(targetID));
                if (dmga - 10 > DamageAmount || dmga + 10 < DamageAmount)
                {
                    return;
                }
                if (MasterYi.player.NetworkId != dmg.SourceNetworkId && MasterYi.player.NetworkId == targetID)
                {
                    return;
                }
                Obj_AI_Base targ = ObjectManager.GetUnitByNetworkId <Obj_AI_Base>(dmg.TargetNetworkId);
                if ((int)dmg.Type == 12 || (int)dmg.Type == 4 || (int)dmg.Type == 3)
                {
                    if (MasterYi.W.IsReady() && DeathWalker.inAutoAttackRange(targ))
                    {
                        MasterYi.W.Cast(targ.Position);
                        // DeathWalker.ResetAutoAttackTimer();
                    }
                }
                // Console.WriteLine("dtyoe: " + dType);
            }
        }
示例#10
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            R.Range = 500 * (R.Level == 0 ? 1 : R.Level) + 1500;

            Obj_AI_Hero t;

            if (W.IsReady() && GetValue <bool>("AutoWI"))
            {
                t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(W.Range) &&
                    (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
                     t.HasBuffOfType(BuffType.Taunt) || t.HasBuff("zhonyasringshield") ||
                     t.HasBuff("Recall")))
                {
                    W.Cast(t.Position);
                }
            }



            if (Q.IsReady() && GetValue <bool>("AutoQI"))
            {
                t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(Q.Range) &&
                    (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
                     t.HasBuffOfType(BuffType.Taunt) &&
                     (t.Health <= ObjectManager.Player.GetSpellDamage(t, SpellSlot.Q) ||
                      !DeathWalker.inAutoAttackRange(t))))
                {
                    Q.Cast(t, false, true);
                }
            }

            if (R.IsReady())
            {
                t = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(R.Range) && t.Health <= R.GetDamage(t))
                {
                    if (GetValue <KeyBind>("UltHelp").Active)
                    {
                        R.Cast(t);
                    }

                    UltTarget = t.ChampionName;
                    ShowUlt   = true;
                }
                else
                {
                    ShowUlt = false;
                }
            }
            else
            {
                ShowUlt = false;
            }

            if (GetValue <KeyBind>("Dash").Active&& E.IsReady())
            {
                var pos = ObjectManager.Player.ServerPosition.To2D().Extend(Game.CursorPos.To2D(), -300).To3D();
                E.Cast(pos, true);
            }

            if (GetValue <KeyBind>("UseEQC").Active&& E.IsReady() && Q.IsReady())
            {
                t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(E.Range) &&
                    t.Health <
                    ObjectManager.Player.GetSpellDamage(t, SpellSlot.Q) +
                    ObjectManager.Player.GetSpellDamage(t, SpellSlot.E) + 20 && E.CanCast(t))
                {
                    E.Cast(t);
                    Q.Cast(t, false, true);
                }
            }

            // PQ you broke it D:
            if ((!ComboActive && !HarassActive) || !DeathWalker.canMove())
            {
                return;
            }

            var useQ = GetValue <bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useE = GetValue <bool>("UseEC");
            var useR = GetValue <bool>("UseRC");

            if (Q.IsReady() && useQ)
            {
                t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    Q.Cast(t, false, true);
                }
            }
            else if (E.IsReady() && useE)
            {
                t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
                if (t != null && t.Health <= E.GetDamage(t))
                {
                    E.Cast(t);
                }
            }

            if (R.IsReady() && useR)
            {
                t = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
                if (t != null && t.Health <= R.GetDamage(t) &&
                    !DeathWalker.inAutoAttackRange(t))
                {
                    R.CastOnUnit(t);
                }
            }
        }
示例#11
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (ObjectManager.Player.IsDead)
            {
                xAttackLeft = 0;
                return;
            }

            if (Game.Time > xPassiveUsedTime + 3 && xAttackLeft == 1)
            {
                xAttackLeft = 0;
            }
            if (Config.Item("Passive" + Id).GetValue <bool>() && xAttackLeft > 0)
            {
                return;
            }

            if (Q.IsReady() && GetValue <KeyBind>("UseQTH").Active&& ToggleActive)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    Q.CastOnUnit(t);
                }
            }

            if (Q.IsReady() && GetValue <KeyBind>("UseQExtendedTH").Active&& ToggleActive)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget() && QMinion.IsValidTarget())
                {
                    if (ObjectManager.Player.Distance(t) > Q.Range)
                    {
                        Q.CastOnUnit(QMinion);
                    }
                }
            }

            if ((!ComboActive && !HarassActive))
            {
                return;
            }

            var useQ         = Config.Item("UseQ" + (ComboActive ? "C" : "H") + Id).GetValue <bool>();
            var useW         = Config.Item("UseW" + (ComboActive ? "C" : "H") + Id).GetValue <bool>();
            var useE         = Config.Item("UseE" + (ComboActive ? "C" : "H") + Id).GetValue <bool>();
            var useQExtended = Config.Item("UseQExtended" + (ComboActive ? "C" : "H") + Id).GetValue <bool>();

//            if (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Level > 0)
//                Config.Item("GHOSTBLADE")
//                    .SetValue(ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Name == "LucianR");

            if (useQExtended && Q.IsReady())
            {
                var t = TargetSelector.GetTarget(Q2.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget() && QMinion.IsValidTarget())
                {
                    if (!DeathWalker.inAutoAttackRange(t))
                    {
                        Q.CastOnUnit(QMinion);
                    }
                }
            }

            if (useQ && Q.IsReady())
            {
                var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget())
                {
                    Q.CastOnUnit(t);
                }
            }

            if (useW && W.IsReady())
            {
                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget())
                {
                    W.Cast(t);
                }
            }

            if (useE && E.IsReady())
            {
                var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    E.Cast(Game.CursorPos);
                }
            }
        }
示例#12
0
        private static void Game_OnGameUpdate(EventArgs args)
        {
            if (Items.HasItem(3139) || Items.HasItem(3140))
            {
                CheckChampionBuff();
            }
            //Update the combo and harass values.
            CClass.ComboActive = DeathWalker.CurrentMode == DeathWalker.Mode.Combo;

            var vHarassManaPer = Config.Item("HarassMana").GetValue <Slider>().Value;

            CClass.HarassActive = DeathWalker.CurrentMode == DeathWalker.Mode.Harass &&
                                  ObjectManager.Player.ManaPercent >= vHarassManaPer;

            CClass.ToggleActive = ObjectManager.Player.ManaPercent >= vHarassManaPer;

            var vLaneClearManaPer = Config.Item("LaneClearMana").GetValue <Slider>().Value;

            CClass.LaneClearActive = DeathWalker.CurrentMode == DeathWalker.Mode.LaneClear &&
                                     ObjectManager.Player.ManaPercent >= vLaneClearManaPer;

            CClass.Game_OnGameUpdate(args);

            UseSummoners();
            var useItemModes = Config.Item("UseItemsMode").GetValue <StringList>().SelectedIndex;

            //Items
            if (
                !((DeathWalker.Mode.Combo == DeathWalker.CurrentMode &&
                   (useItemModes == 2 || useItemModes == 3))
                  ||
                  (DeathWalker.Mode.LaneClear == DeathWalker.CurrentMode &&
                   (useItemModes == 1 || useItemModes == 3))))
            {
                return;
            }

            var botrk      = Config.Item("BOTRK").GetValue <bool>();
            var ghostblade = Config.Item("GHOSTBLADE").GetValue <bool>();
            var sword      = Config.Item("SWORD").GetValue <bool>();
            var muramana   = Config.Item("MURAMANA").GetValue <bool>();
            var target     = DeathWalker.getBestTarget() as Obj_AI_Base;

            var smiteReady = (SmiteSlot != SpellSlot.Unknown &&
                              ObjectManager.Player.Spellbook.CanUseSpell(SmiteSlot) == SpellState.Ready);

            if (target != null && smiteReady && DeathWalker.CurrentMode == DeathWalker.Mode.Combo)
            {
                Smiteontarget(target as Obj_AI_Hero);
            }

            if (botrk)
            {
                if (target != null && target.Type == ObjectManager.Player.Type &&
                    target.ServerPosition.Distance(ObjectManager.Player.ServerPosition) < 550)
                {
                    var hasCutGlass = Items.HasItem(3144);
                    var hasBotrk    = Items.HasItem(3153);

                    if (hasBotrk || hasCutGlass)
                    {
                        var itemId = hasCutGlass ? 3144 : 3153;
                        var damage = ObjectManager.Player.GetItemDamage(target, Damage.DamageItems.Botrk);
                        if (hasCutGlass || ObjectManager.Player.Health + damage < ObjectManager.Player.MaxHealth)
                        {
                            Items.UseItem(itemId, target);
                        }
                    }
                }
            }

            if (ghostblade && target != null && target.Type == ObjectManager.Player.Type &&
                !ObjectManager.Player.HasBuff("ItemSoTD", true) && /*if Sword of the divine is not active */
                DeathWalker.inAutoAttackRange(target))
            {
                Items.UseItem(3142);
            }

            if (sword && target != null && target.Type == ObjectManager.Player.Type &&
                !ObjectManager.Player.HasBuff("spectralfury", true) && /*if ghostblade is not active*/
                DeathWalker.inAutoAttackRange(target))
            {
                Items.UseItem(3131);
            }

            if (muramana && Items.HasItem(3042))
            {
                if (target != null && CClass.ComboActive &&
                    target.Position.Distance(ObjectManager.Player.Position) < 1200)
                {
                    if (!ObjectManager.Player.HasBuff("Muramana", true))
                    {
                        Items.UseItem(3042);
                    }
                }
                else
                {
                    if (ObjectManager.Player.HasBuff("Muramana", true))
                    {
                        Items.UseItem(3042);
                    }
                }
            }
        }
示例#13
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (LaneClearActive)
            {
                if (Program.Config.Item("UseQForBigBoys").GetValue <bool>())
                {
                    JungleFarm();
                }
            }
            else if (!ComboActive)
            {
                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                if (!t.IsValidTarget() || !W.IsReady())
                {
                    return;
                }

                if (Program.Config.Item("UseWTH").GetValue <KeyBind>().Active)
                {
                    if (ObjectManager.Player.HasBuff("Recall"))
                    {
                        return;
                    }
                    W.Cast(t);
                }

                if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
                    t.HasBuffOfType(BuffType.Charm) || t.HasBuffOfType(BuffType.Fear) ||
                    t.HasBuffOfType(BuffType.Taunt) || t.HasBuff("zhonyasringshield") ||
                    t.HasBuff("Recall"))
                {
                    W.Cast(t.Position);
                }
            }

            /* [ Combo ] */
            if (ComboActive)
            {
                var useQ = Config.Item("UseQC" + Id).GetValue <bool>();
                var useW = Config.Item("UseWC" + Id).GetValue <bool>();

                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);

                if (useQ && Q.IsReady() && AsheQCastReady)
                {
                    if (t.IsValidTarget(DeathWalker.getRealAutoAttackRange(null) + 90))
                    {
                        Q.Cast();
                    }
                }

                if (useW && W.IsReady() && t.IsValidTarget())
                {
                    W.Cast(t);
                }

                var useR = Program.Config.SubMenu("Combo").Item("UseRC").GetValue <bool>();
                if (useR && R.IsReady())
                {
                    var minRRange = Program.Config.SubMenu("Combo").Item("UseRCMinRange").GetValue <Slider>().Value;
                    var maxRRange = Program.Config.SubMenu("Combo").Item("UseRCMaxRange").GetValue <Slider>().Value;

                    t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical);
                    if (!t.IsValidTarget())
                    {
                        return;
                    }

                    var aaDamage = DeathWalker.inAutoAttackRange(t)
                        ? ObjectManager.Player.GetAutoAttackDamage(t, true)
                        : 0;

                    if (t.Health > aaDamage && t.Health <= ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) &&
                        ObjectManager.Player.Distance(t) >= minRRange)
                    {
                        R.Cast(t);
                    }
                }
            }

            //Harass
            if (HarassActive)
            {
                var target = TargetSelector.GetTarget(1200, TargetSelector.DamageType.Physical);
                if (target == null)
                {
                    return;
                }

                if (Config.Item("UseWH" + Id).GetValue <bool>() && W.IsReady())
                {
                    W.Cast(target);
                }
            }

            //Manual cast R
            if (Config.Item("RManualCast" + Id).GetValue <KeyBind>().Active)
            {
                var rTarget = TargetSelector.GetTarget(2000, TargetSelector.DamageType.Physical);
                R.Cast(rTarget);
            }
        }