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 + "%)!"); } } }
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 + "%)!"); } } } }
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 + "%)!"); } } } }
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 + "%) !"); } } } }
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 + "%)!"); } }
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)"); } } }
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!"); } } }
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)"); } } } } }
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); } } } }
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); } } } } } }
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); } } } } } }
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 + "%)"); } } } }
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)); } } } }
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); } } } } }
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); } } } }
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); } } }
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 + "%)"); } } } }
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 + "!"); } } } }
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); } } }
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)"); } } } }
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); } } } } } }