Esempio n. 1
0
        private static void CheckBarrier(float incdmg = 0)
        {
            if (!_bb)
            {
                return;
            }

            var barrier = Me.GetSpellSlot("summonerbarrier");

            if (barrier == SpellSlot.Unknown)
            {
                return;
            }

            if (barrier != SpellSlot.Unknown && !_mainMenu.Item("useBarrier").GetValue <bool>())
            {
                return;
            }

            if (Me.Spellbook.CanUseSpell(barrier) != SpellState.Ready)
            {
                return;
            }

            var iDamagePercent = (int)((incdmg / Me.MaxHealth) * 100);
            var mHealthPercent = (int)((Me.Health / Me.MaxHealth) * 100);

            if (mHealthPercent <= _mainMenu.Item("useBarrierPct").GetValue <Slider>().Value&&
                _menuConfig.Item("suseOn" + Me.SkinName).GetValue <bool>())
            {
                if ((iDamagePercent >= 1 || incdmg >= Me.Health))
                {
                    if (OC.AggroTarget.NetworkId == Me.NetworkId)
                    {
                        Me.Spellbook.CastSpell(barrier, Me);
                        OC.Logger(OC.LogType.Action, "Used barrier (Low HP) on me(" + mHealthPercent + "%)!");
                    }
                }
            }

            else if (iDamagePercent >= _mainMenu.Item("useBarrierDmg").GetValue <Slider>().Value)
            {
                if (OC.AggroTarget.NetworkId == Me.NetworkId)
                {
                    Me.Spellbook.CastSpell(barrier, Me);
                    OC.Logger(OC.LogType.Action, "Used barrier (Damage Chunk) on me (" + mHealthPercent + ")!");
                }
            }

            else if (Me.HasBuff("summonerdot", true) && _mainMenu.Item("barrierDot").GetValue <bool>())
            {
                if (OC.AggroTarget.NetworkId == Me.NetworkId)
                {
                    Me.Spellbook.CastSpell(barrier, Me);
                    OC.Logger(OC.LogType.Action, "Used barrier (Ignite) on me (" + mHealthPercent + "%)!");
                }
            }
        }
Esempio n. 2
0
        private static void CheckIgnite()
        {
            if (!_ii)
            {
                return;
            }

            var ignite = Me.GetSpellSlot("summonerdot");

            if (ignite == SpellSlot.Unknown)
            {
                return;
            }

            if (ignite != SpellSlot.Unknown && !_mainMenu.Item("useIgnite").GetValue <bool>())
            {
                return;
            }

            if (Me.Spellbook.CanUseSpell(ignite) != SpellState.Ready)
            {
                return;
            }

            foreach (
                var target in
                ObjectManager.Get <Obj_AI_Hero>()
                .Where(target => target.IsValidTarget(600))
                .Where(target => !target.HasBuff("summonerdot", true)))
            {
                var tHealthPercent = target.Health / target.MaxHealth * 100;
                if (_mainMenu.Item("dotMode").GetValue <StringList>().SelectedIndex == 0)
                {
                    if (target.Health <= Me.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite))
                    {
                        Me.Spellbook.CastSpell(ignite, target);
                        OC.Logger(OC.LogType.Action,
                                  "Used ignite (KS) on " + target.SkinName + " (" + tHealthPercent + "%)!");
                    }
                }
            }

            if (_mainMenu.Item("dotMode").GetValue <StringList>().SelectedIndex == 1)
            {
                if (OC.CurrentTarget.IsValidTarget(600) &&
                    OC.CurrentTarget.Health <= OC.GetComboDamage(Me, OC.CurrentTarget))
                {
                    if (OC.Origin.Item("usecombo").GetValue <KeyBind>().Active)
                    {
                        Me.Spellbook.CastSpell(ignite, OC.CurrentTarget);
                        OC.Logger(OC.LogType.Action,
                                  "Used ignite (Combo) on " + OC.CurrentTarget.SkinName + " (" +
                                  OC.CurrentTarget.Health / OC.CurrentTarget.MaxHealth * 100 + "%)!");
                    }
                }
            }
        }
Esempio n. 3
0
        private static void CheckHeal(float incdmg = 0)
        {
            if (!_hh)
            {
                return;
            }

            var heal = Me.GetSpellSlot("summonerheal");

            if (heal == SpellSlot.Unknown)
            {
                return;
            }

            if (heal != SpellSlot.Unknown && !_mainMenu.Item("useHeal").GetValue <bool>())
            {
                return;
            }

            if (Me.Spellbook.CanUseSpell(heal) != SpellState.Ready)
            {
                return;
            }

            var target         = OC.Friendly();
            var iDamagePercent = (int)((incdmg / Me.MaxHealth) * 100);

            if (target.Distance(Me.ServerPosition) <= 700f)
            {
                var aHealthPercent = (int)((target.Health / target.MaxHealth) * 100);
                if (aHealthPercent <= _mainMenu.Item("useHealPct").GetValue <Slider>().Value&&
                    _menuConfig.Item("suseOn" + target.SkinName).GetValue <bool>())
                {
                    if ((iDamagePercent >= 1 || incdmg >= target.Health))
                    {
                        if (OC.AggroTarget.NetworkId == target.NetworkId)
                        {
                            Me.Spellbook.CastSpell(heal, target);
                            OC.Logger(OC.LogType.Action,
                                      "Used Heal (Low HP) for: " + target.SkinName + " (" + aHealthPercent + "%)!");
                        }
                    }
                }

                else if (iDamagePercent >= _mainMenu.Item("useHealDmg").GetValue <Slider>().Value&&
                         _menuConfig.Item("suseOn" + target.SkinName).GetValue <bool>())
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        Me.Spellbook.CastSpell(heal, target);
                        OC.Logger(OC.LogType.Action,
                                  "Used Heal (Damage Chunk) for: " + target.SkinName + " (" + aHealthPercent + "%)!");
                    }
                }
            }
        }
Esempio n. 4
0
        private static void UseItem(string name, int itemId, string menuvar)
        {
            if (!Items.HasItem(itemId) || !Items.CanUseItem(itemId))
            {
                return;
            }

            if (Me.HasBuff(name, true) || Me.IsRecalling() || Me.InFountain())
            {
                return;
            }

            if (!_mainMenu.Item("use" + menuvar).GetValue <bool>())
            {
                return;
            }

            var aManaPercent   = (int)((Me.Mana / Me.MaxMana) * 100);
            var mHealthPercent = (int)((Me.Health / Me.MaxHealth) * 100);

            var iDamagePercent = (int)((OC.IncomeDamage / Me.MaxHealth) * 100);
            var mDamagePercent = (int)((OC.MinionDamage / Me.MaxHealth) * 100);

            if (menuvar.Contains("Mana") && aManaPercent <= _mainMenu.Item("use" + menuvar + "Mana").GetValue <Slider>().Value)
            {
                if (Me.Mana != 0)
                {
                    Items.UseItem(itemId);
                }
            }

            if (menuvar.Contains("Health") && mHealthPercent <= _mainMenu.Item("use" + menuvar + "Pct").GetValue <Slider>().Value)
            {
                if (iDamagePercent >= 1 || OC.IncomeDamage >= Me.Health || Me.HasBuff("summonerdot", true) ||
                    mDamagePercent >= 1 || OC.MinionDamage >= Me.Health || Me.HasBuffOfType(BuffType.Damage))
                {
                    if (OC.AggroTarget.NetworkId == Me.NetworkId)
                    {
                        Items.UseItem(itemId);
                        OC.Logger(OC.LogType.Action, "Used " + name + " (Low HP) on " + Me.SkinName + " (" + mHealthPercent + "%) !");
                    }
                }

                else if (iDamagePercent >= _mainMenu.Item("use" + menuvar + "Dmg").GetValue <Slider>().Value)
                {
                    if (OC.AggroTarget.NetworkId == Me.NetworkId)
                    {
                        Items.UseItem(itemId);
                        OC.Logger(OC.LogType.Action, "Used " + name + " (Damage Chunk) on " + Me.SkinName + " (" + mHealthPercent + "%) !");
                    }
                }
            }
        }
Esempio n. 5
0
        private static void CheckClarity()
        {
            if (!_cc)
            {
                return;
            }

            var clarity = Me.GetSpellSlot("summonermana");

            if (clarity == SpellSlot.Unknown)
            {
                return;
            }

            if (clarity != SpellSlot.Unknown && !_mainMenu.Item("useClarity").GetValue <bool>())
            {
                return;
            }

            if (Me.Spellbook.CanUseSpell(clarity) != SpellState.Ready)
            {
                return;
            }

            var target = OC.Friendly();

            if (!(target.Distance(Me.Position) <= 600f))
            {
                return;
            }

            var aManaPercent = (int)((target.Mana / target.MaxMana) * 100);

            if (aManaPercent > _mainMenu.Item("useClarityPct").GetValue <Slider>().Value)
            {
                return;
            }

            if (!_menuConfig.Item("suseOn" + target.SkinName).GetValue <bool>())
            {
                return;
            }

            if (!Me.InFountain() && !Me.IsRecalling())
            {
                Me.Spellbook.CastSpell(clarity, target);
                OC.Logger(OC.LogType.Action, "Used Clarity for: " + target.SkinName + " (" + aManaPercent + "%)!");
            }
        }
Esempio n. 6
0
        private static void UseItemCount(string name, int itemId, float itemRange)
        {
            if (!Items.HasItem(itemId) || !Items.CanUseItem(itemId))
            {
                return;
            }

            if (_mainMenu.Item("use" + name).GetValue <bool>())
            {
                if (Me.CountHerosInRange(true, itemRange) >=
                    _mainMenu.Item("use" + name + "Count").GetValue <Slider>().Value)
                {
                    Items.UseItem(itemId);
                    OC.Logger(OC.LogType.Action, "Used " + name + " on me ! (Item count)");
                }
            }
        }
Esempio n. 7
0
        private static void Game_OnGameUpdate(EventArgs args)
        {
            if (!Me.IsValidTarget(300, false))
            {
                return;
            }

            UseItemCount("Odyns", 3180, 450f);
            UseItemCount("Randuins", 3143, 450f);

            if (OC.IncomeDamage >= 1)
            {
                UseItem("allyshieldlocket", "Locket", 3190, 600f);
                UseItem("selfshieldseraph", "Seraphs", 3040);
                UseItem("selfshieldzhonya", "Zhonyas", 3157);
                UseItem("allyshieldmountain", "Mountain", 3401, 700f);
                UseItem("selfshieldzhonya", "Wooglets", 3090);
            }

            // Oracle's Lens
            if (Items.HasItem(3364) && Items.CanUseItem(3364) && _mainMenu.Item("useOracles").GetValue <bool>())
            {
                if (OC.Origin.Item("usecombo").GetValue <KeyBind>().Active ||
                    _mainMenu.Item("oracleMode").GetValue <StringList>().SelectedIndex != 1)
                {
                    var target = OC.Friendly();
                    if (target.Distance(Me.ServerPosition, true) <= 600 * 600 && OC.Stealth ||
                        target.HasBuff("RengarRBuff", true))
                    {
                        Items.UseItem(3364, target.ServerPosition);
                        OC.Logger(OC.LogType.Action, "Using oracle's lens near " + target.SkinName + " (stealth)");
                    }
                }
            }

            // Banner of command (basic)
            if (Items.HasItem(3060) && Items.CanUseItem(3060) && _mainMenu.Item("useBanner").GetValue <bool>())
            {
                var minionList = MinionManager.GetMinions(Me.Position, 1000);

                foreach (
                    var minyone in
                    minionList.Where(minion => minion.IsValidTarget(1000) && minion.BaseSkinName.Contains("MechCannon")))
                {
                    if (minyone.Health > minyone.Health / minyone.MaxHealth * 50)
                    {
                        Items.UseItem(3060, minyone);
                        OC.Logger(OC.LogType.Action, "Using banner of command item on MechCannon!");
                    }
                }
            }

            // Talisman of Ascension
            if (Items.HasItem(3069) && Items.CanUseItem(3069) && _mainMenu.Item("useTalisman").GetValue <bool>())
            {
                if (!OC.Origin.Item("usecombo").GetValue <KeyBind>().Active&&
                    _mainMenu.Item("talismanMode").GetValue <StringList>().SelectedIndex == 1)
                {
                    return;
                }

                var target = OC.Friendly();
                if (target.Distance(Me.ServerPosition, true) > 600 * 600)
                {
                    return;
                }

                var lowTarget =
                    ObjectManager.Get <Obj_AI_Hero>()
                    .OrderBy(ex => ex.Health / ex.MaxHealth * 100)
                    .First(x => x.IsValidTarget(1000));

                var aHealthPercent = target.Health / target.MaxHealth * 100;
                var eHealthPercent = lowTarget.Health / lowTarget.MaxHealth * 100;

                if (lowTarget.Distance(target.ServerPosition, true) <= 900 * 900 &&
                    (target.CountHerosInRange(false) > target.CountHerosInRange(true) &&
                     eHealthPercent <= _mainMenu.Item("useEnemyPct").GetValue <Slider>().Value))
                {
                    Items.UseItem(3069);
                    OC.Logger(OC.LogType.Action, "Using speed item on enemy " + lowTarget.SkinName + " (" +
                              lowTarget.Health / lowTarget.MaxHealth * 100 + "%) is low!");
                }

                if (target.CountHerosInRange(false) > target.CountHerosInRange(true) &&
                    aHealthPercent <= _mainMenu.Item("useAllyPct").GetValue <Slider>().Value)
                {
                    Items.UseItem(3069);
                    OC.Logger(OC.LogType.Action,
                              "Using speed item on ally " + target.SkinName + " (" + aHealthPercent + "%) is low!");
                }
            }
        }
Esempio n. 8
0
        private static void UseItem(string menuvar, string name, int itemId, float itemRange = float.MaxValue)
        {
            if (!Items.HasItem(itemId) || !Items.CanUseItem(itemId))
            {
                return;
            }

            if (!_mainMenu.Item("use" + name).GetValue <bool>())
            {
                return;
            }

            var target = itemRange > 5000 ? Me : OC.Friendly();

            if (target.Distance(Me.ServerPosition, true) > itemRange * itemRange ||
                !target.IsValidState())
            {
                return;
            }

            var aHealthPercent = (int)((target.Health / target.MaxHealth) * 100);
            var iDamagePercent = (int)(OC.IncomeDamage / target.MaxHealth * 100);

            if (!_mainMenu.Item("DefenseOn" + target.SkinName).GetValue <bool>())
            {
                return;
            }

            if (target.CountHerosInRange(false) + 1 >= target.CountHerosInRange(true)) // +1 to allow potential counterplay
            {
                if (_mainMenu.Item("use" + name + "Ults").GetValue <bool>())
                {
                    if (OC.DangerUlt || OC.IncomeDamage >= target.Health || target.Health / target.MaxHealth * 100 <= 15)
                    {
                        if (OC.AggroTarget.NetworkId == target.NetworkId)
                        {
                            Items.UseItem(itemId, target);
                            OC.Logger(OC.LogType.Action,
                                      "Used " + name + " on " + target.SkinName + " (" + aHealthPercent + "%)! (Dangerous Ult)");
                        }
                    }
                }

                if (_mainMenu.Item("use" + name + "Zhy").GetValue <bool>())
                {
                    if (OC.Danger || OC.IncomeDamage >= target.Health || target.Health / target.MaxHealth * 100 <= 15)
                    {
                        if (OC.AggroTarget.NetworkId == target.NetworkId)
                        {
                            Items.UseItem(itemId, target);
                            OC.Logger(OC.LogType.Action,
                                      "Used " + name + " on " + target.SkinName + " (" + aHealthPercent + "%)! (Dangerous Spell)");
                        }
                    }
                }
            }

            if (menuvar.Contains("shield"))
            {
                if (menuvar.Contains("zhonya"))
                {
                    if (_mainMenu.Item("use" + name + "Only").GetValue <bool>() &&
                        !(target.Health / target.MaxHealth * 100 <= 20))
                    {
                        return;
                    }
                }
                if (aHealthPercent <= _mainMenu.Item("use" + name + "Pct").GetValue <Slider>().Value)
                {
                    if ((iDamagePercent >= 1 || OC.IncomeDamage >= target.Health))
                    {
                        if (OC.AggroTarget.NetworkId == target.NetworkId)
                        {
                            Items.UseItem(itemId, target);
                            OC.Logger(OC.LogType.Action,
                                      "Used " + name + " on " + target.SkinName + " (" + aHealthPercent + "%)! (Low HP)");
                        }
                    }

                    if (iDamagePercent >= _mainMenu.Item("use" + name + "Dmg").GetValue <Slider>().Value)
                    {
                        if (OC.AggroTarget.NetworkId == target.NetworkId)
                        {
                            Items.UseItem(itemId, target);
                            OC.Logger(OC.LogType.Action,
                                      "Used " + name + " on " + target.SkinName + " (" + aHealthPercent + "%)! (Damage Chunk)");
                        }
                    }
                }
            }
        }
Esempio n. 9
0
        private static void UseItem(string name, int itemId, float range, bool targeted = false)
        {
            var damage = 0f;

            if (!Items.HasItem(itemId) || !Items.CanUseItem(itemId))
            {
                return;
            }

            if (!_mainMenu.Item("use" + name).GetValue <bool>())
            {
                return;
            }

            if (itemId == 3128 || itemId == 3188)
            {
                damage = OC.GetComboDamage(Me, OC.CurrentTarget);
            }

            if (OC.CurrentTarget.Distance(Me.Position) <= range)
            {
                var eHealthPercent = (int)((OC.CurrentTarget.Health / OC.CurrentTarget.MaxHealth) * 100);
                var aHealthPercent = (int)((Me.Health / OC.CurrentTarget.MaxHealth) * 100);

                if (eHealthPercent <= _mainMenu.Item("use" + name + "Pct").GetValue <Slider>().Value&&
                    _mainMenu.Item("ouseOn" + OC.CurrentTarget.SkinName).GetValue <bool>())
                {
                    if (targeted && itemId == 3092)
                    {
                        var pi = new PredictionInput
                        {
                            Aoe       = true,
                            Collision = false,
                            Delay     = 0.0f,
                            From      = Me.Position,
                            Radius    = 250f,
                            Range     = 850f,
                            Speed     = 1500f,
                            Unit      = OC.CurrentTarget,
                            Type      = SkillshotType.SkillshotCircle
                        };

                        var po = Prediction.GetPrediction(pi);
                        if (po.Hitchance >= HitChance.Medium)
                        {
                            Items.UseItem(itemId, po.CastPosition);
                        }
                    }
                    else if (targeted)
                    {
                        if ((itemId == 3128 || itemId == 3188) && damage <= OC.CurrentTarget.Health / 2)
                        {
                            return;
                        }

                        Items.UseItem(itemId, OC.CurrentTarget);
                    }
                    else
                    {
                        Items.UseItem(itemId);
                    }
                }
                else if (aHealthPercent <= _mainMenu.Item("use" + name + "Me").GetValue <Slider>().Value&&
                         _mainMenu.Item("ouseOn" + OC.CurrentTarget.SkinName).GetValue <bool>())
                {
                    if (targeted)
                    {
                        Items.UseItem(itemId, OC.CurrentTarget);
                    }
                    else
                    {
                        Items.UseItem(itemId);
                    }
                }
            }
        }
Esempio n. 10
0
        private static void CheckExhaust()
        {
            if (!_ee)
            {
                return;
            }

            var exhaust = Me.GetSpellSlot("summonerexhaust");

            if (exhaust == SpellSlot.Unknown)
            {
                return;
            }

            if (exhaust != SpellSlot.Unknown && !_mainMenu.Item("useExhaust").GetValue <bool>())
            {
                return;
            }

            if (!OC.Origin.Item("usecombo").GetValue <KeyBind>().Active&&
                _mainMenu.Item("exhaustMode").GetValue <StringList>().SelectedIndex == 1)
            {
                return;
            }

            var target = OC.Friendly();

            if (Me.Spellbook.CanUseSpell(exhaust) == SpellState.Ready)
            {
                if (OC.DangerUlt && _mainMenu.Item("exhDanger").GetValue <bool>())
                {
                    if (OC.Attacker.Distance(Me.ServerPosition, true) <= 650 * 650)
                    {
                        Me.Spellbook.CastSpell(exhaust, OC.Attacker);
                        OC.Logger(OC.LogType.Action, "Used Exhaust (Danger) on: " + OC.Attacker.SkinName + "!");
                        OC.Logger(OC.LogType.Info,
                                  "Attackers AD: " + OC.Attacker.FlatPhysicalDamageMod + OC.Attacker.BaseAttackDamage);
                    }
                }

                foreach (
                    var enemy in
                    ObjectManager.Get <Obj_AI_Hero>()
                    .Where(x => x.IsValidTarget(900))
                    .OrderByDescending(xe => xe.BaseAttackDamage + xe.FlatPhysicalDamageMod))
                {
                    if (enemy.Distance(Me.ServerPosition, true) <= 650 * 650)
                    {
                        var aHealthPercent = target.Health / target.MaxHealth * 100;
                        var eHealthPercent = enemy.Health / enemy.MaxHealth * 100;

                        if (eHealthPercent <= _mainMenu.Item("eExhaustPct").GetValue <Slider>().Value)
                        {
                            if (!enemy.IsFacing(target))
                            {
                                Me.Spellbook.CastSpell(exhaust, enemy);
                                OC.Logger(OC.LogType.Action, "Used Exhaust (Offensive) on: " + enemy.SkinName + " (" + eHealthPercent + "%)!");
                                OC.Logger(OC.LogType.Info,
                                          "Attackers AD: " + OC.Attacker.FlatPhysicalDamageMod + OC.Attacker.BaseAttackDamage);
                            }
                        }

                        else if (aHealthPercent <= _mainMenu.Item("aExhaustPct").GetValue <Slider>().Value)
                        {
                            if (enemy.IsFacing(target))
                            {
                                Me.Spellbook.CastSpell(exhaust, enemy);
                                OC.Logger(OC.LogType.Action, "Used Exhaust (Defensive) on: " + enemy.SkinName + " (" + aHealthPercent + "%)!");
                                OC.Logger(OC.LogType.Info,
                                          "Attackers AD: " + OC.Attacker.FlatPhysicalDamageMod + OC.Attacker.BaseAttackDamage);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 11
0
        private static void UseEvade(string sdataname, string menuvar, float range = float.MaxValue)
        {
            if (!menuvar.Contains(OC.ChampionName.ToLower()))
            {
                return;
            }

            var slot = Me.GetSpellSlot(sdataname);

            if (slot != SpellSlot.Unknown && !_mainMenu.Item("use" + menuvar).GetValue <bool>())
            {
                return;
            }

            var spell = new Spell(slot, range);

            var target = range < 5000 ? OC.Friendly() : Me;

            if (target.Distance(Me.ServerPosition, true) > range * range)
            {
                return;
            }

            var aHealthPercent = target.Health / target.MaxHealth * 100;

            if (!spell.IsReady() || !_menuConfig.Item("ason" + target.SkinName).GetValue <bool>() || Me.IsRecalling())
            {
                return;
            }

            if (_mainMenu.Item("use" + menuvar + "Norm").GetValue <bool>())
            {
                if ((OC.Danger || OC.IncomeDamage >= target.Health || target.Health / target.MaxHealth * 100 <= 20) &&
                    menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                        OC.Logger(Program.LogType.Action,
                                  "(Evade) Casting " + spell.Slot + "(Dangerous Spell) on " + target.SkinName + " (" + aHealthPercent + "%)");
                    }
                }

                if ((OC.Danger || OC.IncomeDamage >= target.Health || target.Health / target.MaxHealth * 100 <= 20) &&
                    menuvar.Contains("hero"))
                {
                    // +1 to allow for potential counterplay
                    if (target.CountHerosInRange(false) + 1 >= target.CountHerosInRange(true))
                    {
                        if (OC.AggroTarget.NetworkId == Me.NetworkId)
                        {
                            foreach (
                                var ene in
                                ObjectManager.Get <Obj_AI_Hero>()
                                .Where(x => x.IsValidTarget(range))
                                .OrderByDescending(ene => ene.Health / ene.MaxHealth * 100))
                            {
                                spell.CastOnUnit(ene);
                                OC.Logger(Program.LogType.Action, "(Evade) Casting " + spell.Slot + "(Dangerous Spell) on " + ene.SkinName);
                                OC.Logger(OC.LogType.Info, "Evade target info: ");
                                OC.Logger(OC.LogType.Info, "HP %: " + ene.Health / ene.MaxHealth * 100);
                                OC.Logger(OC.LogType.Info, "Current HP %: " + ene.Health);
                            }
                        }
                    }
                }
            }

            if (_mainMenu.Item("use" + menuvar + "Ults").GetValue <bool>())
            {
                if ((OC.DangerUlt || OC.IncomeDamage >= target.Health || target.Health / target.MaxHealth * 100 <= 18) &&
                    menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                        OC.Logger(Program.LogType.Action,
                                  "(Evade) Casting " + spell.Slot + "(Dangerous Spell) on " + target.SkinName + " (" +
                                  aHealthPercent + "%)");
                    }
                }

                if ((OC.DangerUlt || OC.IncomeDamage >= target.Health || target.Health / target.MaxHealth * 100 <= 18) &&
                    menuvar.Contains("hero"))
                {
                    if (Me.CountHerosInRange(true) > Me.CountHerosInRange(false))
                    {
                        if (OC.AggroTarget.NetworkId == Me.NetworkId)
                        {
                            foreach (
                                var ene in
                                ObjectManager.Get <Obj_AI_Hero>()
                                .Where(x => x.IsValidTarget(range))
                                .OrderByDescending(ene => ene.Health / ene.MaxHealth * 100))
                            {
                                spell.CastOnUnit(ene);
                                OC.Logger(Program.LogType.Action, "(Evade) Casting " + spell.Slot + "(Dangerous Spell) on " + ene.SkinName);
                                OC.Logger(OC.LogType.Info, "Evade target info: ");
                                OC.Logger(OC.LogType.Info, "HP %: " + ene.Health / ene.MaxHealth * 100);
                                OC.Logger(OC.LogType.Info, "Current HP %: " + ene.Health);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 12
0
        private static void UseSpellShield(string sname, string menuvar, float range = float.MaxValue, bool usemana = true)
        {
            if (!menuvar.Contains(OC.ChampionName.ToLower()))
            {
                return;
            }

            var slot = Me.GetSpellSlot(sname);

            if (slot != SpellSlot.Unknown && !_mainMenu.Item("use" + menuvar).GetValue <bool>())
            {
                return;
            }

            var spell = new Spell(slot, range);

            var target = range < 5000 ? OC.Friendly() : Me;

            if (target.Distance(Me.ServerPosition, true) > range * range)
            {
                return;
            }

            var aHealthPercent = target.Health / target.MaxHealth * 100;

            if (!spell.IsReady() || !_menuConfig.Item("ason" + target.SkinName).GetValue <bool>() || Me.IsRecalling())
            {
                return;
            }

            if (_mainMenu.Item("use" + menuvar + "Ults").GetValue <bool>())
            {
                if (OC.DangerUlt && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                        OC.Logger(Program.LogType.Action,
                                  "(SCC) Casting " + spell.Slot + "(Dangerous Ult) on " + target.SkinName + " (" + aHealthPercent + "%)");
                    }
                }
            }

            if (_mainMenu.Item("use" + menuvar + "CC").GetValue <bool>())
            {
                if (OC.Dangercc && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                        OC.Logger(Program.LogType.Action,
                                  "(SCC) Casting " + spell.Slot + "(Dangerous CC) on " + target.SkinName + " (" + aHealthPercent + "%)");
                    }
                }
            }

            if (_mainMenu.Item("use" + menuvar + "Norm").GetValue <bool>())
            {
                if (OC.Danger && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                        OC.Logger(Program.LogType.Action,
                                  "(SCC) Casting " + spell.Slot + "(Dangerous Spell) on " + target.SkinName + " (" + aHealthPercent + "%)");
                    }
                }
            }

            if (_mainMenu.Item("use" + menuvar + "Any").GetValue <bool>())
            {
                if (OC.Spell && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                        OC.Logger(Program.LogType.Action,
                                  "(SCC) Casting " + spell.Slot + "(Any Spell) on " + target.SkinName + " (" + aHealthPercent + "%)");
                    }
                }
            }
        }
Esempio n. 13
0
        private static void UseItem(string name, int itemId, float range = float.MaxValue)
        {
            if (!Items.CanUseItem(itemId) || !Items.HasItem(itemId))
            {
                return;
            }

            if (!_mainMenu.Item("use" + name).GetValue <bool>())
            {
                return;
            }

            var target = range > 5000 ? Me : OC.Friendly();

            if (_mainMenu.Item("cccon" + target.SkinName).GetValue <bool>())
            {
                if (target.Distance(Me.ServerPosition, true) <= range * range)
                {
                    foreach (var buff in GameBuff.CleanseBuffs)
                    {
                        var buffinst = target.Buffs;
                        if (buffinst.Any(aura => aura.Name.ToLower() == buff.BuffName))
                        {
                            Utility.DelayAction.Add(100 + buff.Delay, () => Items.UseItem(itemId, target));
                        }
                    }

                    if (OC.Origin.Item("slow").GetValue <bool>() && target.HasBuffOfType(BuffType.Slow))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("stun").GetValue <bool>() && target.HasBuffOfType(BuffType.Stun))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("charm").GetValue <bool>() && target.HasBuffOfType(BuffType.Charm))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("taunt").GetValue <bool>() && target.HasBuffOfType(BuffType.Taunt))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("fear").GetValue <bool>() && target.HasBuffOfType(BuffType.Fear))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("snare").GetValue <bool>() && target.HasBuffOfType(BuffType.Snare))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("silence").GetValue <bool>() && target.HasBuffOfType(BuffType.Silence))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("suppression").GetValue <bool>() && target.HasBuffOfType(BuffType.Suppression))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("polymorph").GetValue <bool>() && target.HasBuffOfType(BuffType.Polymorph))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("blind").GetValue <bool>() && target.HasBuffOfType(BuffType.Blind))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }

                    if (OC.Origin.Item("poison").GetValue <bool>() && target.HasBuffOfType(BuffType.Poison))
                    {
                        Utility.DelayAction.Add(100, () => Items.UseItem(itemId, target));
                    }
                }
            }
        }
Esempio n. 14
0
        private static void UseEvade(string sdataname, string menuvar, float range = float.MaxValue, bool usemana = true)
        {
            if (!menuvar.Contains(OC.ChampionName.ToLower()))
            {
                return;
            }

            var slot = Me.GetSpellSlot(sdataname);

            if (slot != SpellSlot.Unknown && !_mainMenu.Item("use" + menuvar).GetValue <bool>())
            {
                return;
            }

            var spell = new Spell(slot, range);

            var target = range < 5000 ? OC.Friendly() : Me;

            if (target.Distance(Me.ServerPosition, true) > range * range)
            {
                return;
            }

            if (!spell.IsReady() || !_menuConfig.Item("ason" + target.SkinName).GetValue <bool>())
            {
                return;
            }

            if (_mainMenu.Item("use" + menuvar + "Norm").GetValue <bool>())
            {
                if (OC.Danger && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                    }
                }

                if (OC.Danger && menuvar.Contains("hero"))
                {
                    if (Me.CountHerosInRange("hostile") > Me.CountHerosInRange("allies"))
                    {
                        if (OC.AggroTarget.NetworkId != Me.NetworkId)
                        {
                            return;
                        }

                        foreach (
                            var ene in
                            ObjectManager.Get <Obj_AI_Hero>()
                            .Where(x => x.IsValidTarget(range))
                            .OrderByDescending(ene => ene.Health / ene.MaxHealth * 100))
                        {
                            spell.CastOnUnit(ene);
                        }
                    }
                    else
                    {
                        // if its 1v1 cast on the sender
                        if (OC.AggroTarget.NetworkId == Me.NetworkId)
                        {
                            spell.CastOnUnit(OC.Attacker);
                        }
                    }
                }
            }

            if (_mainMenu.Item("use" + menuvar + "Ults").GetValue <bool>())
            {
                if (OC.DangerUlt && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                    }
                }

                if (OC.DangerUlt && menuvar.Contains("hero"))
                {
                    if (Me.CountHerosInRange("hostile") > Me.CountHerosInRange("allies"))
                    {
                        if (OC.AggroTarget.NetworkId != Me.NetworkId)
                        {
                            return;
                        }

                        foreach (
                            var ene in
                            ObjectManager.Get <Obj_AI_Hero>()
                            .Where(x => x.IsValidTarget(range))
                            .OrderByDescending(ene => ene.Health / ene.MaxHealth * 100))
                        {
                            spell.CastOnUnit(ene);
                        }
                    }
                    else
                    {
                        // if its 1v1 cast on the sender
                        if (OC.AggroTarget.NetworkId == Me.NetworkId)
                        {
                            spell.CastOnUnit(OC.Attacker);
                        }
                    }
                }
            }
        }
Esempio n. 15
0
        private static void UseSpellShield(string sname, string menuvar, float range = float.MaxValue, bool usemana = true)
        {
            if (!menuvar.Contains(OC.ChampionName.ToLower()))
            {
                return;
            }

            var slot = Me.GetSpellSlot(sname);

            if (slot != SpellSlot.Unknown && !_mainMenu.Item("use" + menuvar).GetValue <bool>())
            {
                return;
            }

            var spell = new Spell(slot, range);

            var target = range < 5000 ? OC.Friendly() : Me;

            if (target.Distance(Me.ServerPosition, true) > range * range)
            {
                return;
            }

            if (!spell.IsReady() || !_menuConfig.Item("ason" + target.SkinName).GetValue <bool>())
            {
                return;
            }


            if (_mainMenu.Item("use" + menuvar + "Ults").GetValue <bool>())
            {
                if (OC.DangerUlt && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                    }
                }
            }

            if (_mainMenu.Item("use" + menuvar + "CC").GetValue <bool>())
            {
                if (OC.DangerCC && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                    }
                }
            }

            if (_mainMenu.Item("use" + menuvar + "Norm").GetValue <bool>())
            {
                if (OC.Danger && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                    }
                }
            }

            if (_mainMenu.Item("use" + menuvar + "Any").GetValue <bool>())
            {
                if (OC.Spell && menuvar.Contains("team"))
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        spell.CastOnUnit(target);
                    }
                }
            }
        }
Esempio n. 16
0
        private static void UseSpell(string sdataname, string menuvar, float range = float.MaxValue, bool usemana = true)
        {
            if (!menuvar.Contains(OC.ChampionName.ToLower()))
            {
                return;
            }

            var slot = Me.GetSpellSlot(sdataname);

            if (slot != SpellSlot.Unknown && !_mainMenu.Item("use" + menuvar).GetValue <bool>())
            {
                return;
            }


            var spell  = new Spell(slot, range);
            var target = range < 5000 ? OC.Friendly() : Me;

            if (target.Distance(Me.ServerPosition, true) > range * range)
            {
                return;
            }

            if (!spell.IsReady() || !_menuConfig.Item("ason" + target.SkinName).GetValue <bool>() || Me.IsRecalling())
            {
                return;
            }

            var manaPercent    = (int)(Me.Mana / Me.MaxMana * 100);
            var mHealthPercent = (int)(Me.Health / Me.MaxHealth * 100);
            var aHealthPercent = (int)((target.Health / target.MaxHealth) * 100);
            var iDamagePercent = (int)((OC.IncomeDamage / target.MaxHealth) * 100);

            if (menuvar.Contains("slow") && Me.HasBuffOfType(BuffType.Slow))
            {
                spell.Cast();
                OC.Logger(Program.LogType.Action,
                          "(Auto Spell: Slow) Im slowed, casting " + spell.Slot);
            }

            if (menuvar.Contains("slow"))
            {
                return;
            }

            if (menuvar.Contains("shield") || menuvar.Contains("ult"))
            {
                if (aHealthPercent > _mainMenu.Item("use" + menuvar + "Pct").GetValue <Slider>().Value)
                {
                    return;
                }

                if (usemana && manaPercent <= _mainMenu.Item("use" + menuvar + "Mana").GetValue <Slider>().Value)
                {
                    return;
                }

                if (iDamagePercent >= 1 || OC.IncomeDamage >= target.Health)
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        switch (menuvar)
                        {
                        case "rivenshield":
                            spell.Cast(Game.CursorPos);
                            OC.Logger(OC.LogType.Action,
                                      "(Auto Spell: Shield/Ult) Casting " + spell.Slot + " to game cursor! (Low HP)");
                            OC.Logger(OC.LogType.Action, "Target HP %: " + aHealthPercent);
                            break;

                        case "luxshield":
                            spell.Cast(target.IsMe ? Game.CursorPos : target.ServerPosition);
                            break;

                        default:
                            spell.CastOnUnit(target);
                            OC.Logger(OC.LogType.Action,
                                      "(Auto Spell: Shield/Ult) Casting " + spell.Slot + " on " + target.SkinName + " (Low HP)");
                            OC.Logger(OC.LogType.Action, "Target HP %: " + aHealthPercent);
                            break;
                        }
                    }
                }
            }

            else if (menuvar.Contains("heal"))
            {
                if (aHealthPercent > _mainMenu.Item("use" + menuvar + "Pct").GetValue <Slider>().Value)
                {
                    return;
                }

                if (menuvar.Contains("soraka"))
                {
                    if (mHealthPercent <= _mainMenu.Item("useSorakaMana").GetValue <Slider>().Value || target.IsMe)
                    {
                        return;
                    }
                }

                if (usemana && manaPercent <= _mainMenu.Item("use" + menuvar + "Mana").GetValue <Slider>().Value)
                {
                    return;
                }

                if (Me.ChampionName == "Sona")
                {
                    spell.Cast();
                }
                else
                {
                    spell.Cast(target);
                    OC.Logger(OC.LogType.Action,
                              "(Auto Spell: Heal) Casting " + spell.Slot + " on " + target.SkinName + " (Low HP)");
                    OC.Logger(OC.LogType.Action, "Target HP %: " + aHealthPercent);
                }
            }

            if (!menuvar.Contains("zhonya"))
            {
                if (iDamagePercent >= _mainMenu.Item("use" + menuvar + "Dmg").GetValue <Slider>().Value)
                {
                    spell.Cast(target);
                    OC.Logger(OC.LogType.Action,
                              "(Auto Spell: Shield) Casting " + spell.Slot + " on " + target.SkinName + " (Damage Chunk)");
                    OC.Logger(OC.LogType.Action, "Target HP %: " + aHealthPercent);
                }
            }
        }
Esempio n. 17
0
        private static void Game_OnGameUpdate(EventArgs args)
        {
            if (!Me.IsValidTarget(300, false))
            {
                return;
            }

            // slow removals
            UseSpell("garenq", "garenslow", float.MaxValue, false);
            UseSpell("evelynnw", "eveslow", float.MaxValue, false);

            // spell shields
            UseSpellShield("blackshield", "teammorganazhonyaCC", 600f);
            UseSpellShield("sivire", "teamsivirzhonyaCC", float.MaxValue, false);
            UseSpellShield("nocturneshroudofdarkness", "teamnocturnezhonyaCC", float.MaxValue, false);

            // auto heals
            UseSpell("triumphantroar", "alistarheal", 575f);
            UseSpell("primalsurge", "nidaleeheal", 600f);
            UseSpell("removescurvy", "gangplankheal");
            UseSpell("judicatordivineblessing", "kayleheal", 900f);
            UseSpell("namie", "namiheal", 725f);
            UseSpell("sonaw", "sonaheal", 1000f);
            UseSpell("sorakaw", "sorakaheal", 450f, false);
            UseSpell("imbue", "taricheal", 750f);

            if (!(OC.IncomeDamage >= 1))
            {
                return;
            }

            // untargable/evade spells
            UseEvade("judicatorintervention", "teamkaylezhonya", 900f);
            UseEvade("fioradance", "herofiorazhonya", 300f);
            UseEvade("elisespidereinitial", "teamelisezhonya");
            UseEvade("fizzjump", "teamfizzzhonyaCC");
            UseEvade("lissandrar", "teamlissandrazhonya");
            UseEvade("maokaiunstablegrowth", "heromaokaizhonya", 525f);
            UseEvade("alphastrike", "heromasteryizhonyaCC", 600f);
            UseEvade("hallucinatefull", "teamshacozhonya");
            UseEvade("vladimirsanguinepool", "teamvladimirzhonya");
            UseEvade("zedult", "herozedzhonya", 625f);

            // auto shields
            UseSpell("braume", "braumshield");
            UseSpell("dianaorbs", "dianashield");
            UseSpell("galiobulwark", "galioshield", 800f);
            UseSpell("garenw", "garenshield", float.MaxValue, false);
            UseSpell("eyeofthestorm", "jannashield", 800f);
            UseSpell("karmasolkimshield", "karmashield", 800f);
            UseSpell("luxprismaticwave", "luxshield", 1075f);
            UseSpell("nautiluspiercinggaze", "nautilusshield");
            UseSpell("orianaredactcommand", "oriannashield", 1100f);
            UseSpell("shenfeint", "shenshield", float.MaxValue, false);
            UseSpell("jarvanivgoldenaegis", "jarvanivshield");
            UseSpell("blindmonkwone", "leeshield", 700f, false);
            UseSpell("rivenfeint", "rivenshield", float.MaxValue, false);
            UseSpell("rumbleshield", "rumbleshield");
            UseSpell("sionw", "sionshield");
            UseSpell("skarnerexoskeleton", "skarnershield");
            UseSpell("urgotterrorcapacitoractive2", "urgotshield");
            UseSpell("moltenshield", "annieshield");
            UseSpell("fiorariposte", "fiorashield", float.MaxValue, false);
            UseSpell("obduracy", "malphshield");
            UseSpell("defensiveballcurl", "rammusshield");

            // auto ults
            UseSpell("lulur", "luluult", 900f, false);
            UseSpell("undyingrage", "tryndult", float.MaxValue, false);
            UseSpell("chronoshift", "zilult", 900f, false);
            UseSpell("yorickreviveally", "yorickult", 900f, false);
            UseSpell("sadism", "drmundoult", float.MaxValue, false);

            // soraka global heal
            if (OC.ChampionName == "Soraka")
            {
                var sorakaslot = Me.GetSpellSlot("sorakar");
                var sorakar    = new Spell(sorakaslot);
                if (!sorakar.IsReady())
                {
                    return;
                }

                if (sorakaslot == SpellSlot.Unknown && !_mainMenu.Item("usesorakault").GetValue <bool>())
                {
                    return;
                }

                var target =
                    ObjectManager.Get <Obj_AI_Hero>()
                    .First(huro => huro.IsValidTarget(float.MaxValue, false) && huro.IsAlly);

                if (!_menuConfig.Item("ason" + target.SkinName).GetValue <bool>())
                {
                    return;
                }

                var aHealthPercent = target.Health / target.MaxHealth * 100;
                if (aHealthPercent <= _mainMenu.Item("usesorakaultPct").GetValue <Slider>().Value)
                {
                    if (OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        sorakar.Cast();
                        OC.Logger(Program.LogType.Action,
                                  "(Auto Spell: Ult) Saving ally target: " + target.SkinName + " (" + aHealthPercent + "%)");
                    }
                }
            }

            // kalista save soulbound
            if (OC.ChampionName != "Kalista")
            {
                return;
            }

            var slot     = Me.GetSpellSlot("kalistarx");
            var kalistar = new Spell(slot, 1200f);

            if (!kalistar.IsReady())
            {
                return;
            }

            if (slot == SpellSlot.Unknown && !_mainMenu.Item("usekalistault").GetValue <bool>())
            {
                return;
            }

            var cooptarget =
                ObjectManager.Get <Obj_AI_Hero>()
                .FirstOrDefault(hero => hero.HasBuff("kalistacoopstrikeally", true));

            if (cooptarget.IsValidTarget(1200, false) && cooptarget.IsAlly &&
                _menuConfig.Item("ason" + cooptarget.SkinName).GetValue <bool>())
            {
                var aHealthPercent = (int)((cooptarget.Health / cooptarget.MaxHealth) * 100);
                if (aHealthPercent <= _mainMenu.Item("usekalistaultPct").GetValue <Slider>().Value)
                {
                    if (OC.AggroTarget.NetworkId == cooptarget.NetworkId)
                    {
                        kalistar.Cast();
                        OC.Logger(Program.LogType.Action,
                                  "Saving soulbound target: " + cooptarget.SkinName + " (" + aHealthPercent + "%)");
                    }
                }
            }
        }
Esempio n. 18
0
        private static void CheckSmite()
        {
            if (!_ss)
            {
                return;
            }

            var smite = Me.GetSpellSlot(_smiteSlot);

            if (smite == SpellSlot.Unknown)
            {
                return;
            }

            if (smite != SpellSlot.Unknown && !_mainMenu.Item("useSmite").GetValue <KeyBind>().Active)
            {
                return;
            }

            CheckChampSmite("Vi", "self", 125f, SpellSlot.E);
            CheckChampSmite("JarvanIV", "vector", 770f, SpellSlot.Q);
            CheckChampSmite("Poppy", "target", 125f, SpellSlot.Q);
            CheckChampSmite("Riven", "self", 125f, SpellSlot.W);
            CheckChampSmite("Malphite", "self", 200f, SpellSlot.E);
            CheckChampSmite("LeeSin", "self", 1100f, SpellSlot.Q, 1);
            CheckChampSmite("Nunu", "target", 125f, SpellSlot.Q);
            CheckChampSmite("Olaf", "target", 325f, SpellSlot.E);
            CheckChampSmite("Elise", "target", 425f, SpellSlot.Q);
            CheckChampSmite("Warwick", "target", 400f, SpellSlot.Q);
            CheckChampSmite("MasterYi", "target", 600f, SpellSlot.Q);
            CheckChampSmite("Kayle", "target", 650, SpellSlot.Q);
            CheckChampSmite("Khazix", "target", 325f, SpellSlot.Q);
            CheckChampSmite("MonkeyKing", "target", 300f, SpellSlot.Q);

            if (Me.Spellbook.CanUseSpell(smite) != SpellState.Ready)
            {
                return;
            }

            var save = _mainMenu.Item("saveSmite").GetValue <bool>();

            if (_mainMenu.Item("smitemode").GetValue <StringList>().SelectedIndex == 0 &&
                Me.GetSpell(smite).Name == "s5_summonersmiteplayerganker")
            {
                if (Me.Spellbook.CanUseSpell(smite) == SpellState.Ready)
                {
                    foreach (var ou in ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.IsValidTarget(760)))
                    {
                        if (save && Me.Spellbook.GetSpell(smite).Ammo <= 1)
                        {
                            return;
                        }

                        if (ou.Health <= 20 + 8 * Me.Level)
                        {
                            Me.Spellbook.CastSpell(smite, ou);
                            OC.Logger(OC.LogType.Action, "Used Smite (KS) on: " + ou.SkinName + "!");
                        }
                    }
                }
            }

            if (_mainMenu.Item("smitemode").GetValue <StringList>().SelectedIndex == 1 &&
                _smiteSlot == "s5_summonersmiteplayerganker")
            {
                if (OC.Origin.Item("usecombo").GetValue <KeyBind>().Active&&
                    Me.Spellbook.CanUseSpell(smite) == SpellState.Ready)
                {
                    if (!save && Me.Spellbook.GetSpell(smite).Ammo > 1)
                    {
                        Me.Spellbook.CastSpell(smite, OC.CurrentTarget);
                        OC.Logger(OC.LogType.Action, "Used Smite (Combo) on: " + OC.CurrentTarget.SkinName + "!");
                    }
                }
            }

            var minionList = MinionManager.GetMinions(Me.Position, 760f, MinionTypes.All, MinionTeam.Neutral);

            foreach (var minion in minionList.Where(m => m.IsValidTarget(760f)))
            {
                var damage = (float)Me.GetSummonerSpellDamage(minion, Damage.SummonerSpell.Smite);

                if (LargeMinions.Any(name => minion.Name.StartsWith(name) && !minion.Name.Contains("Mini")))
                {
                    if (minion.Health <= damage && _mainMenu.Item("smiteLarge").GetValue <bool>())
                    {
                        Me.Spellbook.CastSpell(smite, minion);
                        OC.Logger(OC.LogType.Action, "Used Smite (Large Minion) on: " + minion.Name + "!");
                    }
                }

                else if (SmallMinions.Any(name => minion.Name.StartsWith(name) && !minion.Name.Contains("Mini")))
                {
                    if (minion.Health <= damage && _mainMenu.Item("smiteSmall").GetValue <bool>())
                    {
                        Me.Spellbook.CastSpell(smite, minion);
                        OC.Logger(OC.LogType.Action, "Used Smite (Small Minion) on: " + minion.Name + "!");
                    }
                }

                else if (EpicMinions.Any(name => minion.Name.StartsWith(name)))
                {
                    if (minion.Health <= damage && _mainMenu.Item("smiteEpic").GetValue <bool>())
                    {
                        Me.Spellbook.CastSpell(smite, minion);
                        OC.Logger(OC.LogType.Action, "Used Smite (Epic Minion) on: " + minion.Name + "!");
                    }
                }
            }
        }
Esempio n. 19
0
        private static void UseItem(string name, int itemId, float range, bool targeted = false)
        {
            if (!Items.HasItem(itemId) || !Items.CanUseItem(itemId))
            {
                return;
            }

            if (!_mainMenu.Item("use" + name).GetValue <bool>())
            {
                return;
            }

            if (OC.CurrentTarget.Distance(Me.Position) <= range)
            {
                var eHealthPercent = (int)((OC.CurrentTarget.Health / OC.CurrentTarget.MaxHealth) * 100);
                var aHealthPercent = (int)((Me.Health / OC.CurrentTarget.MaxHealth) * 100);

                if (eHealthPercent <= _mainMenu.Item("use" + name + "Pct").GetValue <Slider>().Value&&
                    _mainMenu.Item("ouseOn" + OC.CurrentTarget.SkinName).GetValue <bool>())
                {
                    if (targeted && itemId == 3092)
                    {
                        var pi = new PredictionInput
                        {
                            Aoe       = true,
                            Collision = false,
                            Delay     = 0.0f,
                            From      = Me.Position,
                            Radius    = 250f,
                            Range     = 850f,
                            Speed     = 1500f,
                            Unit      = OC.CurrentTarget,
                            Type      = SkillshotType.SkillshotCircle
                        };

                        var po = Prediction.GetPrediction(pi);
                        if (po.Hitchance >= HitChance.Medium)
                        {
                            Items.UseItem(itemId, po.CastPosition);
                            OC.Logger(OC.LogType.Action,
                                      "Used " + name + " near " + po.CastPosition.CountEnemiesInRange(300) + " enemies!");
                        }
                    }

                    else if (targeted)
                    {
                        Items.UseItem(itemId, OC.CurrentTarget);
                        OC.Logger(Program.LogType.Action, "Used " + name + " (Targeted Enemy HP) on " + OC.CurrentTarget.SkinName);
                    }

                    else
                    {
                        Items.UseItem(itemId);
                        OC.Logger(Program.LogType.Action, "Used " + name + " (Self Enemy HP) on " + OC.CurrentTarget.SkinName);
                    }
                }

                else if (aHealthPercent <= _mainMenu.Item("use" + name + "Me").GetValue <Slider>().Value&&
                         _mainMenu.Item("ouseOn" + OC.CurrentTarget.SkinName).GetValue <bool>())
                {
                    if (targeted)
                    {
                        Items.UseItem(itemId, OC.CurrentTarget);
                    }
                    else
                    {
                        Items.UseItem(itemId);
                    }

                    OC.Logger(Program.LogType.Action, "Used " + name + " (Low My HP) on " + OC.CurrentTarget.SkinName);
                }
            }
        }
Esempio n. 20
0
        private static void UseItem(string name, int itemId, float range = float.MaxValue)
        {
            if (!Items.CanUseItem(itemId) || !Items.HasItem(itemId))
            {
                return;
            }

            if (!_mainMenu.Item("use" + name).GetValue <bool>())
            {
                return;
            }

            var target = range > 5000 ? Me : OC.Friendly();

            if (_mainMenu.Item("cccon" + target.SkinName).GetValue <bool>())
            {
                if (target.Distance(Me.ServerPosition, true) <= range * range && target.IsValidState())
                {
                    var tHealthPercent = target.Health / target.MaxHealth * 100;
                    var delay          = _mainMenu.Item("cleansedelay").GetValue <Slider>().Value * 10;
                    foreach (var buff in GameBuff.CleanseBuffs)
                    {
                        var buffinst = target.Buffs;
                        if (buffinst.Any(aura => aura.Name.ToLower() == buff.BuffName ||
                                         aura.Name.ToLower().Contains(buff.SpellName)))
                        {
                            if (!OC.Origin.Item("cure" + buff.BuffName).GetValue <bool>())
                            {
                                return;
                            }

                            Utility.DelayAction.Add(delay + buff.Delay, delegate
                            {
                                Items.UseItem(itemId, target);
                                OC.Logger(OC.LogType.Action,
                                          "Used " + name + " on " + target.SkinName + " (" + tHealthPercent + "%) for: " + buff.BuffName);
                            });
                        }
                    }

                    if (OC.Origin.Item("slow").GetValue <bool>() && target.HasBuffOfType(BuffType.Slow))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (slow)");
                    }

                    if (OC.Origin.Item("stun").GetValue <bool>() && target.HasBuffOfType(BuffType.Stun))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (stun)");
                    }

                    if (OC.Origin.Item("charm").GetValue <bool>() && target.HasBuffOfType(BuffType.Charm))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (charm)");
                    }

                    if (OC.Origin.Item("taunt").GetValue <bool>() && target.HasBuffOfType(BuffType.Taunt))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (taunt)");
                    }

                    if (OC.Origin.Item("fear").GetValue <bool>() && target.HasBuffOfType(BuffType.Fear))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (fear)");
                    }

                    if (OC.Origin.Item("snare").GetValue <bool>() && target.HasBuffOfType(BuffType.Snare))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (snare)");
                    }

                    if (OC.Origin.Item("silence").GetValue <bool>() && target.HasBuffOfType(BuffType.Silence))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (silence)");
                    }

                    if (OC.Origin.Item("suppression").GetValue <bool>() && target.HasBuffOfType(BuffType.Suppression))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (suppression)");
                    }

                    if (OC.Origin.Item("polymorph").GetValue <bool>() && target.HasBuffOfType(BuffType.Polymorph))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (polymorph)");
                    }

                    if (OC.Origin.Item("blind").GetValue <bool>() && target.HasBuffOfType(BuffType.Blind))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (blind)");
                    }

                    if (OC.Origin.Item("poison").GetValue <bool>() && target.HasBuffOfType(BuffType.Poison))
                    {
                        Utility.DelayAction.Add(delay, () => Items.UseItem(itemId, target));
                        OC.Logger(OC.LogType.Action,
                                  "Used  " + name + "  on " + target.SkinName + " (" + tHealthPercent + "%) (poison)");
                    }
                }
            }
        }
Esempio n. 21
0
        private static void UseItem(string menuvar, string name, int itemId, float itemRange = float.MaxValue)
        {
            if (!Items.HasItem(itemId) || !Items.CanUseItem(itemId))
            {
                return;
            }

            if (!_mainMenu.Item("use" + name).GetValue <bool>())
            {
                return;
            }

            var target = itemRange > 5000 ? Me : OC.Friendly();

            if (target.Distance(Me.ServerPosition, true) > itemRange * itemRange)
            {
                return;
            }

            var aHealthPercent = (int)((target.Health / target.MaxHealth) * 100);
            var iDamagePercent = (int)(OC.IncomeDamage / target.MaxHealth * 100);

            if (!_mainMenu.Item("DefenseOn" + target.SkinName).GetValue <bool>())
            {
                return;
            }

            if (target.CountHerosInRange("allies") >= target.CountHerosInRange("hostile") || OC.IncomeDamage >= target.Health)
            {
                if (_mainMenu.Item("use" + name + "Ults").GetValue <bool>())
                {
                    if (OC.DangerUlt && OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        Items.UseItem(itemId, target);
                    }
                }

                if (_mainMenu.Item("use" + name + "Zhy").GetValue <bool>())
                {
                    if (OC.Danger && OC.AggroTarget.NetworkId == target.NetworkId)
                    {
                        Items.UseItem(itemId, target);
                    }
                }
            }

            if (menuvar.Contains("shield"))
            {
                if (menuvar.Contains("zhonya"))
                {
                    if (_mainMenu.Item("use" + name + "Only").GetValue <bool>() || !(OC.IncomeDamage >= target.Health))
                    {
                        return;
                    }
                }

                if (aHealthPercent <= _mainMenu.Item("use" + name + "Pct").GetValue <Slider>().Value)
                {
                    if ((iDamagePercent >= 1 || OC.IncomeDamage >= target.Health))
                    {
                        if (OC.AggroTarget.NetworkId == target.NetworkId)
                        {
                            Items.UseItem(itemId, target);
                        }
                    }

                    if (!menuvar.Contains("num"))
                    {
                        if (iDamagePercent >= _mainMenu.Item("use" + name + "Dmg").GetValue <Slider>().Value)
                        {
                            if (OC.AggroTarget.NetworkId == target.NetworkId)
                            {
                                Items.UseItem(itemId, target);
                            }
                        }
                    }
                }
            }
        }