├── Template ├── Template.csproj └── Properties │ └── AssemblyInfo.cs ├── EzAIO ├── .idea │ └── .idea.EzAIO.dir │ │ └── .idea │ │ ├── encodings.xml │ │ ├── vcs.xml │ │ ├── indexLayout.xml │ │ └── .gitignore ├── Champions │ ├── Twitch │ │ ├── .idea │ │ │ └── .idea.Twitch.dir │ │ │ │ └── .idea │ │ │ │ ├── encodings.xml │ │ │ │ ├── indexLayout.xml │ │ │ │ ├── riderModule.iml │ │ │ │ └── .gitignore │ │ ├── Modes │ │ │ ├── Automatic.cs │ │ │ ├── Killsteal.cs │ │ │ ├── Laneclear.cs │ │ │ ├── Harass.cs │ │ │ ├── Jungleclear.cs │ │ │ └── Combo.cs │ │ ├── Extension.cs │ │ ├── Damage.cs │ │ ├── DamageIndicator.cs │ │ └── Menus.cs │ ├── Ashe │ │ ├── Extension.cs │ │ ├── Modes │ │ │ ├── Laneclear.cs │ │ │ ├── Automatic.cs │ │ │ ├── Jungleclear.cs │ │ │ ├── Harass.cs │ │ │ ├── Combo.cs │ │ │ └── Killsteal.cs │ │ ├── Damage.cs │ │ ├── Menus.cs │ │ └── Configs.cs │ ├── Ezreal │ │ ├── Extension.cs │ │ ├── Modes │ │ │ ├── Lasthit.cs │ │ │ ├── LaneClear.cs │ │ │ ├── Automatic.cs │ │ │ ├── Killsteal.cs │ │ │ ├── Structureclear.cs │ │ │ ├── JungleClear.cs │ │ │ ├── Harass.cs │ │ │ └── Combo.cs │ │ └── Damage.cs │ ├── Kalista │ │ ├── Extension.cs │ │ ├── Modes │ │ │ ├── Combo.cs │ │ │ ├── Lasthit.cs │ │ │ ├── Laneclear.cs │ │ │ ├── Killsteal.cs │ │ │ ├── Automatic.cs │ │ │ ├── Jungleclear.cs │ │ │ └── Harass.cs │ │ ├── Damage.cs │ │ ├── Menus.cs │ │ └── DamageIndicator.cs │ ├── Kaisa │ │ ├── Extension.cs │ │ ├── Modes │ │ │ ├── Killsteal.cs │ │ │ ├── Extra.cs │ │ │ ├── Structureclear.cs │ │ │ ├── Laneclear.cs │ │ │ ├── Harass.cs │ │ │ ├── Combo.cs │ │ │ └── Jungleclear.cs │ │ ├── Damage.cs │ │ └── Menus.cs │ ├── Vayne │ │ ├── Modes │ │ │ ├── Extra.cs │ │ │ ├── Killsteal.cs │ │ │ ├── Jungleclear.cs │ │ │ ├── Structureclear.cs │ │ │ ├── Lasthit.cs │ │ │ ├── Laneclear.cs │ │ │ ├── Harass.cs │ │ │ └── Automatic.cs │ │ └── Damage.cs │ ├── Jhin │ │ ├── Modes │ │ │ ├── Automatic.cs │ │ │ ├── Harass.cs │ │ │ ├── Lasthit.cs │ │ │ ├── Jungleclear.cs │ │ │ ├── Extra.cs │ │ │ ├── Laneclear.cs │ │ │ └── Killsteal.cs │ │ ├── Extension.cs │ │ ├── Damage.cs │ │ └── Menus.cs │ ├── Tristana │ │ ├── Modes │ │ │ ├── Automatic.cs │ │ │ ├── Jungleclear.cs │ │ │ ├── Killsteal.cs │ │ │ ├── Combo.cs │ │ │ ├── Harass.cs │ │ │ ├── Laneclear.cs │ │ │ └── Structureclear.cs │ │ ├── Extension.cs │ │ ├── Damage.cs │ │ └── Menus.cs │ ├── Draven │ │ ├── Modes │ │ │ ├── Structureclear.cs │ │ │ ├── Jungleclear.cs │ │ │ ├── Harass.cs │ │ │ ├── Automatic.cs │ │ │ ├── Laneclear.cs │ │ │ ├── Combo.cs │ │ │ └── Killsteal.cs │ │ ├── Damage.cs │ │ └── Extension.cs │ ├── Jinx │ │ ├── Modes │ │ │ ├── Lasthit.cs │ │ │ ├── Automatic.cs │ │ │ ├── Jungleclear.cs │ │ │ ├── Harass.cs │ │ │ ├── Laneclear.cs │ │ │ ├── Killsteal.cs │ │ │ └── Combo.cs │ │ ├── Damage.cs │ │ ├── Extension.cs │ │ └── Menus.cs │ ├── Katarina │ │ ├── Modes │ │ │ ├── Flee.cs │ │ │ ├── Jungleclear.cs │ │ │ └── Laneclear.cs │ │ └── Extension.cs │ └── Lucian │ │ ├── Modes │ │ ├── Structureclear.cs │ │ ├── Laneclear.cs │ │ ├── Extra.cs │ │ ├── Jungleclear.cs │ │ └── Combo.cs │ │ ├── Extension.cs │ │ └── Damage.cs ├── Bases │ ├── ChampionBases.cs │ └── DrawingBase.cs ├── Extras │ ├── NormalizedEx.cs │ ├── VectorConversions.cs │ └── Helps.cs ├── Utilities │ ├── Developer │ │ ├── Configs.cs │ │ ├── Menus.cs │ │ └── Developer.cs │ ├── BaseUlt │ │ ├── Configs.cs │ │ ├── Menus.cs │ │ └── Bases.cs │ └── SupportedChamps.cs └── Properties │ └── AssemblyInfo.cs └── README.md /Template/Template.csproj: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /EzAIO/.idea/.idea.EzAIO.dir/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /EzAIO/.idea/.idea.EzAIO.dir/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/.idea/.idea.Twitch.dir/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /EzAIO/.idea/.idea.EzAIO.dir/.idea/indexLayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/.idea/.idea.Twitch.dir/.idea/indexLayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/.idea/.idea.Twitch.dir/.idea/riderModule.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Extension.cs: -------------------------------------------------------------------------------- 1 | using static EzAIO.Champions.Jhin.Jhin; 2 | using static EzAIO.Bases.ChampionBases; 3 | namespace EzAIO.Champions.Ashe 4 | { 5 | static class Extension 6 | { 7 | public static bool IsQActive() 8 | { 9 | return Player.HasBuff("AsheQAttack"); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /EzAIO/Bases/ChampionBases.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | 3 | namespace EzAIO.Bases 4 | { 5 | abstract class ChampionBases 6 | { 7 | public static Spell Q { get; set; } 8 | public static Spell W { get; set; } 9 | public static Spell E { get; set; } 10 | public static Spell R { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /EzAIO/.idea/.idea.EzAIO.dir/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Rider ignored files 5 | /.idea.EzAIO.iml 6 | /contentModel.xml 7 | /projectSettingsUpdater.xml 8 | /modules.xml 9 | # Datasource local storage ignored files 10 | /dataSources/ 11 | /dataSources.local.xml 12 | # Editor-based HTTP Client requests 13 | /httpRequests/ 14 | -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Extension.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | 4 | namespace EzAIO.Champions.Ezreal 5 | { 6 | class Extension 7 | { 8 | public static bool HasEssenceFlux(AIBaseClient target,float range) 9 | { 10 | return target.IsValidTarget(range) && target.HasBuff("ezrealwattach"); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /EzAIO/Extras/NormalizedEx.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | using SharpDX; 3 | 4 | namespace EzAIO.Extras 5 | { 6 | public static class NormalizedEx 7 | { 8 | public static Vector2 Normalized(this Vector2 vector) 9 | { 10 | return Vector2.Normalize(vector); 11 | } 12 | 13 | public static Vector3 Normalized(this Vector3 vector) 14 | { 15 | return Vector3.Normalize(vector); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /EzAIO/Utilities/Developer/Configs.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | 3 | namespace EzAIO.Developer 4 | { 5 | public static class Configs 6 | { 7 | public static class BuffMenu 8 | { 9 | public static readonly MenuBool MyBuffBool = 10 | new MenuBool("my", "Show my Buffs"); 11 | 12 | public static readonly MenuBool EnemieBuffBool = 13 | new MenuBool("enemie", "Show enemie Buffs"); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/.idea/.idea.Twitch.dir/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Rider ignored files 5 | /projectSettingsUpdater.xml 6 | /modules.xml 7 | /contentModel.xml 8 | /.idea.Twitch.iml 9 | # Datasource local storage ignored files 10 | /../../../../../../../../../../../:\Users\pjpix\Desktop\mein\EzAIO\Champions\Twitch\.idea\.idea.Twitch.dir\.idea/dataSources/ 11 | /dataSources.local.xml 12 | # Editor-based HTTP Client requests 13 | /httpRequests/ 14 | -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Extension.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using SharpDX.Direct3D9; 4 | 5 | namespace EzAIO.Champions.Kalista 6 | { 7 | class Extension 8 | { 9 | public static bool HasRendBuff(AIBaseClient target, float range) 10 | { 11 | return target.IsValidTarget(range) && target.HasBuff("kalistaexpungemarker"); 12 | } 13 | 14 | public static bool HasRBuff(AIHeroClient target, float range) 15 | { 16 | return target.IsValidTarget(range) && target.HasBuff("kalistacoopstrikeally"); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK.Utility; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Twitch.Configs; 5 | namespace EzAIO.Champions.Twitch.Modes 6 | { 7 | using static ChampionBases; 8 | static class Automatic 9 | { 10 | public static void CastQ() 11 | { 12 | if (!AutomaticMenu.Qsilent.Active || !Q.IsReady()) 13 | { 14 | return; 15 | } 16 | Q.Cast(); 17 | DelayAction.Add((int)(Q.Delay+300), 18 | ()=>ObjectManager.Player.Spellbook.CastSpell(SpellSlot.Recall)); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Extension.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | 3 | namespace EzAIO.Champions.Kaisa 4 | { 5 | static class Extension 6 | { 7 | public static bool HasE() 8 | { 9 | return GameObjects.Player.HasBuff("kaisaestealth"); 10 | } 11 | 12 | public static bool QUpgraded() 13 | { 14 | return GameObjects.Player.HasBuff("kaisaqevolved"); 15 | } 16 | 17 | public static bool WUpgraded() 18 | { 19 | return GameObjects.Player.HasBuff("kaisawevolved"); 20 | } 21 | 22 | public static bool EUpgraded() 23 | { 24 | return GameObjects.Player.HasBuff("kaisaeevolved"); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Modes/Extra.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Vayne.Configs; 6 | namespace EzAIO.Champions.Vayne.Modes 7 | { 8 | using static ChampionBases; 9 | static class Extra 10 | { 11 | public static void CastQ(AfterAttackEventArgs args) 12 | { 13 | if (!ComboMenu.QBool.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | var target = args.Target as AIHeroClient; 19 | if (target == null || !Extension.ShouldCastQ(target)) 20 | { 21 | return; 22 | } 23 | 24 | Q.Cast(Game.CursorPos); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /EzAIO/Utilities/Developer/Menus.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Developer.Configs; 3 | using static EzAIO.Program; 4 | 5 | namespace EzAIO.Developer 6 | { 7 | class Menus 8 | { 9 | public Menus() 10 | { 11 | Initialize(); 12 | } 13 | public static void Initialize() 14 | { 15 | var buffMenu = new Menu("Buff", "Buffs") 16 | { 17 | BuffMenu.MyBuffBool, 18 | BuffMenu.EnemieBuffBool 19 | }; 20 | var menuList = new[] 21 | { 22 | buffMenu 23 | }; 24 | foreach (var menu in menuList) 25 | { 26 | util.Add(menu); 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Vayne.Configs; 5 | namespace EzAIO.Champions.Vayne.Modes 6 | { 7 | using static ChampionBases; 8 | static class Killsteal 9 | { 10 | public static void CastE() 11 | { 12 | if (KillstealMenu.EBool.Enabled) 13 | { 14 | return; 15 | } 16 | 17 | if (!Extension.Attacked) 18 | { 19 | return; 20 | } 21 | 22 | foreach (var target in GameObjects.EnemyHeroes.Where(Extension.KillableWithE)) 23 | { 24 | E.CastOnUnit(target); 25 | break; 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Jhin.Configs; 6 | 7 | namespace EzAIO.Champions.Jhin.Modes 8 | { 9 | using static ChampionBases; 10 | static class Automatic 11 | { 12 | public static void CastE() 13 | { 14 | if (!AutomaticMenu.ECCBool.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.HasBuffOfType(BuffType.Stun) && 20 | x.DistanceToPlayer()x.IsValidTarget(E.Range) && Extension.HasPoisonEffect(x,E.Range) && 20 | EDamage(x)>= x.Health-GameObjects.Player.CalculateDamage(x,DamageType.Mixed,1))) 21 | { 22 | E.Cast(); 23 | } 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using EzAIO.Extras; 5 | using static EzAIO.Champions.Jhin.Configs; 6 | using static EzAIO.Champions.Jhin.Jhin; 7 | namespace EzAIO.Champions.Jhin.Modes 8 | { 9 | using static ChampionBases; 10 | static class Harass 11 | { 12 | public static void CastQ() 13 | { 14 | if (!HarassMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (HarassMenu.QSliderButton.Value >= Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | foreach (var target in Helps.GetBestEnemyHeroesInRange(Q.Range).Where(x=>x.IsValidTarget())) 25 | { 26 | Q.CastOnUnit(target); 27 | break; 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Tristana.Configs; 5 | using static EzAIO.Champions.Tristana.Tristana; 6 | namespace EzAIO.Champions.Tristana.Modes 7 | { 8 | using static ChampionBases; 9 | static class Automatic 10 | { 11 | public static void CastR() 12 | { 13 | if (!AutomaticMenu.RPeelSliderButton.Enabled || Player.Health >= AutomaticMenu.RPeelSliderButton.Value) 14 | { 15 | return;; 16 | } 17 | 18 | var target = GameObjects.EnemyHeroes 19 | .Where(x => x.IsValidTarget(Player.GetRealAutoAttackRange()) && x.IsMelee) 20 | .MaxBy(x => x.TotalAttackDamage); 21 | if (target == null) 22 | { 23 | return; 24 | } 25 | 26 | R.CastOnUnit(target); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /EzAIO/Utilities/BaseUlt/Configs.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | 3 | namespace EzAIO.Utilities.BaseUlt 4 | { 5 | public static class Configs 6 | { 7 | public static class BaseUltMenu 8 | { 9 | public static readonly MenuBool EnableBool = 10 | new MenuBool("enable", "Enable"); 11 | 12 | public static readonly MenuBool CollisionBool = 13 | new MenuBool("coll", "Check Collision"); 14 | 15 | public static readonly MenuSlider EnemyRangeSlider = 16 | new MenuSlider("range", "Don't cast if Enemyes in Range", 1200, 100, 2000); 17 | 18 | public static readonly MenuList NotifyModeList = 19 | new MenuList("notify", "Notify Mode", new[] {"Chat", "Screen"}, 0); 20 | 21 | public static readonly MenuKeyBind PanicKey = 22 | new MenuKeyBind("key", "Don't cast while is pressed", Keys.Space, KeyBindType.Press); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | using EzAIO.Bases; 3 | namespace EzAIO.Champions.Kalista.Modes 4 | { 5 | using static Configs; 6 | using static ChampionBases; 7 | static class Combo 8 | { 9 | public static void CastQ() 10 | { 11 | if (!ComboMenu.QBool.Enabled || !Q.IsReady()) 12 | { 13 | return; 14 | } 15 | 16 | if (GameObjects.Player.IsDashing()) 17 | { 18 | return; 19 | } 20 | var qtarget = TargetSelector.GetTarget(Q.Range,DamageType.Physical); 21 | if (qtarget == null) 22 | { 23 | return; 24 | } 25 | 26 | var qinput = Q.GetPrediction(qtarget); 27 | if (qinput.Hitchance >= HitChance.High) 28 | { 29 | Q.Cast(qinput.CastPosition); 30 | } 31 | } 32 | 33 | } 34 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/Damage.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | namespace EzAIO.Champions.Twitch 5 | { 6 | using static ChampionBases; 7 | class Damage 8 | { 9 | private static readonly float[] EBaseDamage = {0f, 20f, 30f, 40f, 50f, 60f, 60f}; 10 | private static readonly float[] EStackDamage = {0f, 15f, 20f, 25f, 30f, 35f, 35f}; 11 | 12 | public static float EDamage(AIBaseClient target) 13 | { 14 | var eLevel = E.Level; 15 | var eBaseDamage = EBaseDamage[eLevel]; 16 | var stackDamage = (EStackDamage[eLevel] + GameObjects.Player.PercentBonusPhysicalDamageMod * .35f + 17 | GameObjects.Player.TotalMagicalDamage * .333f) * Extension.BuffStacks(target); 18 | var totalDamage = eBaseDamage + stackDamage; 19 | return (float) (GameObjects.Player.CalculateDamage(target, DamageType.Physical, totalDamage)); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Ashe.Configs; 5 | using static EzAIO.Champions.Ashe.Ashe; 6 | using static EzAIO.Champions.Ashe.Damage; 7 | namespace EzAIO.Champions.Ashe.Modes 8 | { 9 | using static ChampionBases; 10 | static class Laneclear 11 | { 12 | public static void CastQ() 13 | { 14 | if (!LaneclearMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (LaneclearMenu.QSliderButton.Value >= Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | var minion = GameObjects.EnemyMinions.FirstOrDefault(x => x.IsValidTarget(Player.GetRealAutoAttackRange())); 25 | if (minion == null) 26 | { 27 | return; 28 | } 29 | 30 | if (!Extension.IsQActive()) 31 | { 32 | Q.Cast(); 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Modes/Structureclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Draven.Configs; 5 | namespace EzAIO.Champions.Draven.Modes 6 | { 7 | using static ChampionBases; 8 | static class Structureclear 9 | { 10 | public static void CastW() 11 | { 12 | if (!StructureclearMenu.WSliderButton.Enabled) 13 | { 14 | return; 15 | } 16 | 17 | if (StructureclearMenu.WSliderButton.Value >= GameObjects.Player.ManaPercent) 18 | { 19 | return; 20 | } 21 | 22 | if (GameObjects.Player.CountEnemyHeroesInRange(StructureclearMenu.WRangeSliderButton.Value) != 0) 23 | { 24 | return; 25 | } 26 | 27 | var turret = GameObjects.EnemyTurrets.FirstOrDefault(x => x.IsValidTarget(E.Range)); 28 | if (turret == null) 29 | { 30 | return; 31 | } 32 | W.Cast(); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | using static EzAIO.Champions.Tristana.Configs; 3 | using static EzAIO.Champions.Tristana.Tristana; 4 | using static EzAIO.Bases.ChampionBases; 5 | namespace EzAIO.Champions.Tristana.Modes 6 | { 7 | static class Jungleclear 8 | { 9 | public static void CastE(BeforeAttackEventArgs args) 10 | { 11 | if (!JungleClearMenu.ESliderButton.Enabled) 12 | { 13 | return; 14 | } 15 | 16 | if (JungleClearMenu.ESliderButton.Value >= Player.ManaPercent) 17 | { 18 | return; 19 | } 20 | 21 | E.CastOnUnit(args.Target); 22 | } 23 | 24 | public static void CastQ() 25 | { 26 | if (!JungleClearMenu.QSliderButton.Enabled) 27 | { 28 | return; 29 | } 30 | 31 | if (JungleClearMenu.QSliderButton.Value >= Player.ManaPercent) 32 | { 33 | return; 34 | } 35 | 36 | Q.Cast(); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Damage.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Ashe.Ashe; 5 | namespace EzAIO.Champions.Ashe 6 | { 7 | using static ChampionBases; 8 | class Damage 9 | { 10 | private static readonly float[] WBaseDamage = {0f, 20f, 35f, 50f, 65f, 80f, 80f}; 11 | private static readonly float[] RBaseDamage = {0f, 200f, 400f, 600f}; 12 | 13 | public static float WDamage(AIBaseClient target) 14 | { 15 | var wLevel = W.Level; 16 | var wBaseDamage = WBaseDamage[wLevel] + 17 | 1f*Player.TotalAttackDamage; 18 | return (float) Player.CalculateDamage(target, DamageType.Physical, wBaseDamage); 19 | } 20 | 21 | public static float RDamage(AIBaseClient target) 22 | { 23 | var rLevel = R.Level; 24 | var rBaseDamage = RBaseDamage[rLevel] + 25 | 1f*Player.TotalMagicalDamage; 26 | return (float) Player.CalculateDamage(target, DamageType.Magical, rBaseDamage); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Tristana.Damage; 5 | using static EzAIO.Champions.Tristana.Configs; 6 | using static EzAIO.Champions.Tristana.Tristana; 7 | namespace EzAIO.Champions.Tristana.Modes 8 | { 9 | using static ChampionBases; 10 | static class Killsteal 11 | { 12 | public static void CastR() 13 | { 14 | if (!KillstealMenu.RBool.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(Player.GetRealAutoAttackRange(x)) && 20 | EDamage(x)+RDamage(x)>=x.Health- 21 | Player.CalculateDamage(x,DamageType.Physical,1) && 22 | !x.IsInvulnerable)) 23 | { 24 | R.CastOnUnit(target); 25 | break; 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Modes/Lasthit.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Jhin.Damage; 5 | using static EzAIO.Champions.Jhin.Configs; 6 | using static EzAIO.Champions.Jhin.Jhin; 7 | namespace EzAIO.Champions.Jhin.Modes 8 | { 9 | using static ChampionBases; 10 | static class Lasthit 11 | { 12 | public static void CastQ() 13 | { 14 | if (!LasthitMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (LasthitMenu.QSliderButton.Value >= Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | if (!Extension.IsReloading() && LasthitMenu.QReloadBool.Enabled) 25 | { 26 | return; 27 | } 28 | 29 | foreach (var target in GameObjects.EnemyMinions.Where(x => 30 | x.IsValidTarget(Q.Range) && QDamage(x) >= x.Health - Player.CalculateDamage(x, DamageType.Physical, 1))) 31 | { 32 | Q.CastOnUnit(target); 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Modes/Lasthit.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Kalista.Configs; 5 | namespace EzAIO.Champions.Kalista.Modes 6 | { 7 | using static ChampionBases; 8 | using static Damage; 9 | static class Lasthit 10 | { 11 | public static void CastE() 12 | { 13 | if (!Configs.Lasthit.ESliderButton.Enabled || !E.IsReady()) 14 | { 15 | return; 16 | } 17 | 18 | if (Configs.Lasthit.ESliderButton.Value >= GameObjects.Player.ManaPercent) 19 | { 20 | return; 21 | } 22 | 23 | if (GameObjects.EnemyMinions.Any(x => x.IsValidTarget(E.Range) && 24 | Extension.HasRendBuff(x, E.Range) && 25 | EDamage(x) >= x.Health - 26 | GameObjects.Player.CalculateDamage(x, DamageType.Physical, 1))) 27 | { 28 | E.Cast(); 29 | } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Damage.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | 5 | namespace EzAIO.Champions.Draven 6 | { 7 | using static ChampionBases; 8 | class Damage 9 | { 10 | private static readonly float[] EBaseDamage = {0f, 75f, 110f, 145f, 180f, 215f, 215f}; 11 | private static readonly float[] RBaseDamage = {0f, 175f, 275f, 375f, 375f}; 12 | private static readonly float[] RBonusAD = {0f, 1.1f, 1.3f, 1.5f, 1.5f}; 13 | 14 | public static float EDamage(AIBaseClient target) 15 | { 16 | var eLevel = E.Level; 17 | var eBaseDamage = EBaseDamage[eLevel] + .5f * GameObjects.Player.GetBonusPhysicalDamage(); 18 | return (float) GameObjects.Player.CalculateDamage(target, DamageType.Physical, eBaseDamage); 19 | } 20 | 21 | public static float RDamage(AIBaseClient target) 22 | { 23 | var rLevel = R.Level; 24 | var rBaseDamage = RBaseDamage[rLevel] + (RBonusAD[rLevel] * GameObjects.Player.GetBonusPhysicalDamage()); 25 | return (float) GameObjects.Player.CalculateDamage(target, DamageType.Physical, rBaseDamage); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | using EzAIO.Bases; 3 | using static EzAIO.Champions.Draven.Configs; 4 | namespace EzAIO.Champions.Draven.Modes 5 | { 6 | using static ChampionBases; 7 | class Jungleclear 8 | { 9 | public static void CastQ() 10 | { 11 | if (!JungleclearMenu.QSliderButton.Enabled) 12 | { 13 | return; 14 | } 15 | 16 | if (Extension.GetNumberAxesActives() >= JungleclearMenu.QAxesSlider.Value) 17 | { 18 | return; 19 | } 20 | 21 | if (HarassMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 22 | { 23 | return; 24 | } 25 | 26 | Q.Cast(); 27 | } 28 | 29 | public static void CastW() 30 | { 31 | if (!JungleclearMenu.WSliderButton.Enabled) 32 | { 33 | return; 34 | } 35 | 36 | if (JungleclearMenu.WSliderButton.Value >= GameObjects.Player.ManaPercent) 37 | { 38 | return; 39 | } 40 | 41 | W.Cast(); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Modes/Lasthit.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Jinx.Configs; 5 | using static EzAIO.Champions.Jinx.Jinx; 6 | using static EzAIO.Champions.Jinx.Damage; 7 | namespace EzAIO.Champions.Jinx.Modes 8 | { 9 | using static ChampionBases; 10 | static class Lasthit 11 | { 12 | public static void CastQ() 13 | { 14 | if (!LasthitMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (LasthitMenu.QSliderButton.Value >= Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | var minion = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(Extension.RocketRange)) 25 | .OrderBy(x => x.MaxHealth).FirstOrDefault(x => 26 | Extension.RocketDamage(x) >= x.Health - Player.CalculateDamage(x, DamageType.Physical, 1)); 27 | if (minion == null || !minion.IsValid) 28 | { 29 | return; 30 | } 31 | 32 | if (Extension.Swap(minion)) 33 | { 34 | Q.Cast(); 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ensoulsharp 2 | 3 | EzAIO will not be updated again, I will only do maintenance when I see it necessary. Now I am working on EvaAIO, a new project. I leave you the link of my new github: https://github.com/AkenoHimejimaa/EvaAIO 4 | 5 | Join in to my new Discord Channel: https://github.com/AkenoHimejimaa/EvaAIO 6 | 7 | **EzAIO** 8 | 9 | EzIO is my own AIO, I will look to add as many champions as I can. I hope you like it, if you have any questions, do not hesitate to enter my discord, as well as give me feedback to see how to improve my AIO. 10 | Over time I will implement more things. 11 | 12 | Credits to babazhou for helping me with various aspects of the code. 13 | 14 | Qué sucede gente linda de habla hispana! Este es mi AIO, espero que les guste. Si tienen algún problema o quieren darme feedback entren a mi server de discord. Se cuidan, se bañan, chao. 15 | 16 | Créditos a babazhou por ayudarme en muchos aspectos del código. 17 | 18 | **ChampionList** 19 | 20 | - Ashe 21 | - Draven. 22 | - Ezreal. 23 | - Jhin. 24 | - Jinx. 25 | - Kalista. 26 | - Kaisa. 27 | - Katarina 28 | - Lucian. 29 | - Tristana. 30 | - Twitch. 31 | - Vayne. 32 | 33 | **Utilities** 34 | - BaseUlt 35 | 36 | **To do** 37 | 38 | - Add more champs. 39 | 40 | 41 | -------------------------------------------------------------------------------- /EzAIO/Utilities/BaseUlt/Menus.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using EnsoulSharp.SDK; 3 | using EnsoulSharp.SDK.MenuUI; 4 | using static EzAIO.Utilities.BaseUlt.Configs; 5 | using static EzAIO.Program; 6 | namespace EzAIO.Utilities.BaseUlt 7 | { 8 | class Menus 9 | { 10 | 11 | public Menus() 12 | { 13 | Initialize(); 14 | } 15 | 16 | public static void Initialize() 17 | { 18 | var baseMenu = new Menu("baseULT", "Base Ult") 19 | { 20 | BaseUltMenu.EnableBool, 21 | //BaseUltMenu.CollisionBool, 22 | BaseUltMenu.EnemyRangeSlider, 23 | BaseUltMenu.NotifyModeList, 24 | BaseUltMenu.PanicKey 25 | }; 26 | var supportedChanos = new List() 27 | { 28 | "Draven", 29 | "Ezreal", 30 | "Jinx", 31 | "Ashe" 32 | }; 33 | if (supportedChanos.Contains(GameObjects.Player.CharacterName)) 34 | { 35 | BaseUltMenu.PanicKey.AddPermashow(); 36 | util.Add(baseMenu); 37 | } 38 | 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EnsoulSharp.SDK.Utility; 5 | using EzAIO.Bases; 6 | using static EzAIO.Champions.Draven.Configs; 7 | namespace EzAIO.Champions.Draven.Modes 8 | { 9 | using static ChampionBases; 10 | static class Harass 11 | { 12 | public static void CastQ() 13 | { 14 | if (!HarassMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (Extension.GetNumberAxesActives() >= HarassMenu.QAxesSlider.Value) 20 | { 21 | return; 22 | } 23 | 24 | if (HarassMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 25 | { 26 | return; 27 | } 28 | 29 | Q.Cast(); 30 | } 31 | 32 | public static void CastW() 33 | { 34 | if (!HarassMenu.EsSliderButton.Enabled) 35 | { 36 | return; 37 | } 38 | 39 | if (HarassMenu.EsSliderButton.Value >= GameObjects.Player.ManaPercent) 40 | { 41 | return; 42 | } 43 | 44 | W.Cast(); 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Ashe.Configs; 6 | using static EzAIO.Champions.Ashe.Ashe; 7 | namespace EzAIO.Champions.Ashe.Modes 8 | { 9 | using static ChampionBases; 10 | static class Automatic 11 | { 12 | public static void CastR() 13 | { 14 | if (!AutomaticMenu.Rinmobile.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsStunned && 20 | x.IsValidTarget(R.Range))) 21 | { 22 | if (AutomaticMenu.NoEnemiesSliderButton.Enabled && Player.CountEnemyHeroesInRange(W.Range) >= 23 | AutomaticMenu.NoEnemiesSliderButton.Value) 24 | { 25 | return; 26 | } 27 | 28 | var rinput = R.GetPrediction(target); 29 | if (rinput.Hitchance >= HitChance.High && R.IsInRange(rinput.CastPosition)) 30 | { 31 | R.Cast(rinput.CastPosition); 32 | } 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Draven.Configs; 6 | namespace EzAIO.Champions.Draven.Modes 7 | { 8 | using static ChampionBases; 9 | static class Automatic 10 | { 11 | public static void CastWSlowed() 12 | { 13 | if (!AutomaticMenu.WSlowedBool.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | if (GameObjects.Player.HasBuffOfType(BuffType.Slow)) 19 | { 20 | W.Cast(); 21 | } 22 | } 23 | 24 | public static void CastRImmobile() 25 | { 26 | if (!AutomaticMenu.RImmobileBool.Enabled) 27 | { 28 | return; 29 | } 30 | 31 | foreach (var target in GameObjects.EnemyHeroes.Where(x=> 32 | x.IsValidTarget(R.Range) && !x.IsInvulnerable && x.HaveImmovableBuff())) 33 | { 34 | var rinput = R.GetPrediction(target); 35 | if (rinput.Hitchance >= HitChance.High) 36 | { 37 | R.Cast(rinput.UnitPosition); 38 | } 39 | } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Kaisa.Damage; 6 | using static EzAIO.Champions.Kaisa.Configs; 7 | namespace EzAIO.Champions.Kaisa.Modes 8 | { 9 | using static ChampionBases; 10 | static class Killsteal 11 | { 12 | public static void Cast() 13 | { 14 | if (W.IsReady() && KillstealMenu.WBool.Enabled) 15 | { 16 | CastW(); 17 | } 18 | } 19 | 20 | private static void CastW() 21 | { 22 | foreach (var target in GameObjects.EnemyHeroes.Where(x => x.IsValidTarget(W.Range) && 23 | WDamage(x) >= x.Health - 24 | GameObjects.Player.CalculateDamage(x, DamageType.Magical, 25 | 1))) 26 | { 27 | var winput = W.GetPrediction(target); 28 | if (winput.Hitchance >= HitChance.High) 29 | { 30 | W.Cast(winput.CastPosition); 31 | } 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Extension.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | 5 | namespace EzAIO.Champions.Tristana 6 | { 7 | static class Extension 8 | { 9 | public static bool IsCharged(this AIBaseClient target) 10 | { 11 | return target.HasBuff("TristanaECharge"); 12 | } 13 | 14 | /*public static bool IsPerfectCharged(this AIBaseClient target) 15 | { 16 | if (target.IsCharged() && 17 | target.IsValidTarget()) 18 | { 19 | switch (target.Type) 20 | { 21 | case GameObjectType.AIMinionClient: 22 | return true; 23 | case GameObjectType.AIHeroClient: 24 | var heroTarget = (AIHeroClient) target; 25 | return !heroTarget.IsInvulnerable; 26 | } 27 | } 28 | 29 | return false; 30 | }*/ 31 | public static Boolean HasEBuff(AIBaseClient target) 32 | { 33 | return target.HasBuff("TristanaECharge"); 34 | } 35 | 36 | public static int EBuffCount(this AIBaseClient target) 37 | { 38 | return target.GetBuffCount("TristanaECharge"); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Modes/Extra.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Kaisa.Configs; 6 | namespace EzAIO.Champions.Kaisa.Modes 7 | { 8 | using static ChampionBases; 9 | static class Extra 10 | { 11 | public static void CastW(AfterAttackEventArgs args) 12 | { 13 | if (!ComboMenu.WSliderButton.Enabled || ComboMenu.WSliderButton.Value == 2) 14 | { 15 | return; 16 | } 17 | 18 | var target = args.Target as AIHeroClient; 19 | if (target == null) 20 | { 21 | return; 22 | } 23 | 24 | if (ComboMenu.WRange.Enabled && target.DistanceToPlayer() <= ComboMenu.WRange.Value) 25 | { 26 | return; 27 | } 28 | 29 | if (ComboMenu.WSliderButton.Value == 1 && 30 | target.GetBuffCount("kaisapassivemarker") < ComboMenu.WSliderButton.Value - 1) 31 | { 32 | return; 33 | } 34 | 35 | var winput = W.GetPrediction(target); 36 | if (winput.Hitchance >= HitChance.High) 37 | { 38 | W.Cast(winput.UnitPosition); 39 | } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Modes/Lasthit.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EnsoulSharp.SDK.MenuUI; 4 | using EzAIO.Bases; 5 | 6 | namespace EzAIO.Champions.Ezreal.Modes 7 | { 8 | using static Ezreal; 9 | using static Damage; 10 | using static ChampionBases; 11 | 12 | class Lasthit 13 | { 14 | internal static void CastQ() 15 | { 16 | if (!mainMenu["Lasthit"].GetValue("q").Enabled || !Q.IsReady()) 17 | { 18 | return; 19 | } 20 | 21 | if (mainMenu["Lasthit"].GetValue("q").Value >= GameObjects.Player.ManaPercent) 22 | { 23 | return; 24 | } 25 | 26 | var qtarget = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(Q.Range)).FirstOrDefault(x => 27 | QDamage(x) >= x.Health - GameObjects.Player.CalculateDamage(x, DamageType.Physical, 1)); 28 | if (qtarget == null) 29 | { 30 | return; 31 | } 32 | 33 | var qinput = Q.GetPrediction(qtarget); 34 | if (qinput.Hitchance >= HitChance.High) 35 | { 36 | Q.Cast(qinput.UnitPosition); 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Modes/Structureclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Kaisa.Configs; 6 | namespace EzAIO.Champions.Kaisa.Modes 7 | { 8 | using static ChampionBases; 9 | static class Structureclear 10 | { 11 | public static void CastE(AfterAttackEventArgs args) 12 | { 13 | if (!StructureclearMenu.ESliderButton.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | if (StructureclearMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 19 | { 20 | return; 21 | } 22 | 23 | var safechek = StructureclearMenu.ERange; 24 | if (safechek.Enabled && GameObjects.Player.CountEnemyHeroesInRange(safechek.Value) != 0) 25 | { 26 | return; 27 | } 28 | 29 | var etarget = GameObjects.EnemyTurrets.FirstOrDefault(x => x.IsValidTarget(E.Range)); 30 | if (etarget == null) 31 | { 32 | return; 33 | } 34 | 35 | if (!GameObjects.Player.InAutoAttackRange(etarget)) 36 | { 37 | return; 38 | } 39 | E.Cast(Game.CursorPos); 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Jinx.Configs; 5 | namespace EzAIO.Champions.Jinx.Modes 6 | { 7 | using static ChampionBases; 8 | static class Automatic 9 | { 10 | public static void WOnImmobile() 11 | { 12 | if (!AutomaticMenu.WCCBool.Enabled) 13 | { 14 | return; 15 | } 16 | 17 | var target = GameObjects.EnemyHeroes.FirstOrDefault(x => x.IsStunned && 18 | x.IsValidTarget(W.Range)); 19 | if (target == null) 20 | { 21 | return; 22 | } 23 | W.Cast(target); 24 | 25 | } 26 | 27 | public static void EOnImmobile() 28 | { 29 | if (!AutomaticMenu.ECCBool.Enabled) 30 | { 31 | return; 32 | } 33 | 34 | var target = GameObjects.EnemyHeroes.FirstOrDefault(x => x.IsStunned && 35 | x.IsValidTarget(E.Range)); 36 | if (target == null) 37 | { 38 | return; 39 | } 40 | 41 | E.Cast(target); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Vayne.Configs; 6 | 7 | namespace EzAIO.Champions.Vayne.Modes 8 | { 9 | using static ChampionBases; 10 | static class Jungleclear 11 | { 12 | public static void CastQ(AfterAttackEventArgs args) 13 | { 14 | if (!JungleclearMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (JungleclearMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | Q.Cast(Game.CursorPos); 24 | } 25 | 26 | public static void CastE(AfterAttackEventArgs args) 27 | { 28 | var target = args.Target as AIMinionClient; 29 | 30 | if (!JungleclearMenu.ESliderButton.Enabled) 31 | { 32 | return; 33 | } 34 | 35 | if (JungleclearMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 36 | { 37 | return; 38 | } 39 | 40 | if (Extension.IsMinionCondemnable(target)) 41 | { 42 | E.CastOnUnit(target); 43 | } 44 | } 45 | 46 | } 47 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Modes/Structureclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Vayne.Configs; 6 | namespace EzAIO.Champions.Vayne.Modes 7 | { 8 | using static ChampionBases; 9 | static class Structureclear 10 | { 11 | public static void CastQ(AfterAttackEventArgs args) 12 | { 13 | if (!StructureclearMenu.QSliderButton.Enabled) 14 | { 15 | 16 | return; 17 | } 18 | 19 | if (StructureclearMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | var safecheck = StructureclearMenu.NoEnemiesSliderButton; 25 | if (safecheck.Enabled && GameObjects.Player.CountEnemyHeroesInRange(safecheck.Value) != 0) 26 | { 27 | return; 28 | } 29 | 30 | var qtarget = GameObjects.EnemyTurrets.FirstOrDefault(x => x.IsValidTarget(Q.Range)); 31 | if (qtarget == null) 32 | { 33 | return; 34 | } 35 | 36 | if (!GameObjects.Player.InAutoAttackRange(qtarget)) 37 | { 38 | return; 39 | } 40 | 41 | Q.Cast(Game.CursorPos); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Modes/Lasthit.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using static EzAIO.Champions.Vayne.Damage; 3 | using EnsoulSharp; 4 | using EnsoulSharp.SDK; 5 | using EzAIO.Bases; 6 | using static EzAIO.Champions.Vayne.Configs; 7 | namespace EzAIO.Champions.Vayne.Modes 8 | { 9 | using static ChampionBases; 10 | static class Lasthit 11 | { 12 | public static void CastQ(AfterAttackEventArgs args) 13 | { 14 | if (!LasthitMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (LasthitMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | var posAfterQ = GameObjects.Player.Position.Extend(Game.CursorPos, 300f); 24 | foreach (var target in GameObjects.EnemyMinions.Where(x=>x.IsValidTarget(Q.Range) && 25 | x.Distance(posAfterQ) < GameObjects.Player.GetRealAutoAttackRange() && 26 | x != Orbwalker.GetTarget() && 27 | x.Health<=GameObjects.Player.GetAutoAttackDamage(x) + QDamage(x))) 28 | { 29 | Q.Cast(Game.CursorPos); 30 | } 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using static EzAIO.Champions.Vayne.Damage; 3 | using EnsoulSharp; 4 | using EnsoulSharp.SDK; 5 | using EzAIO.Bases; 6 | using static EzAIO.Champions.Vayne.Configs; 7 | namespace EzAIO.Champions.Vayne.Modes 8 | { 9 | using static ChampionBases; 10 | static class Laneclear 11 | { 12 | public static void CastQ(AfterAttackEventArgs args) 13 | { 14 | if (!LaneclearMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (LaneclearMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | var posAfterQ = GameObjects.Player.Position.Extend(Game.CursorPos, 300f); 25 | foreach (var target in GameObjects.EnemyMinions.Where(x=>x.IsValidTarget(Q.Range) && 26 | x.Distance(posAfterQ) < GameObjects.Player.GetRealAutoAttackRange() && 27 | x != Orbwalker.GetTarget() && 28 | x.Health<=GameObjects.Player.GetAutoAttackDamage(x) + QDamage(x))) 29 | { 30 | Q.Cast(Game.CursorPos); 31 | } 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using static EzAIO.Champions.Tristana.Configs; 4 | using static EzAIO.Bases.ChampionBases; 5 | namespace EzAIO.Champions.Tristana.Modes 6 | { 7 | static class Combo 8 | { 9 | public static void CastQ(BeforeAttackEventArgs args) 10 | { 11 | var target = args.Target as AIHeroClient; 12 | if (target == null) 13 | { 14 | return; 15 | } 16 | 17 | if (ComboMenu.QBool.Enabled) 18 | { 19 | Q.Cast(); 20 | } 21 | } 22 | 23 | public static void CastE(BeforeAttackEventArgs args) 24 | { 25 | var target = args.Target as AIHeroClient; 26 | if (target == null) 27 | { 28 | return; 29 | } 30 | 31 | if (ComboMenu.EBool.Enabled) 32 | { 33 | E.CastOnUnit(target); 34 | } 35 | } 36 | 37 | public static void SemiR() 38 | { 39 | if (!ComboMenu.RSemiCastBool.Active) 40 | { 41 | return; 42 | } 43 | var target = R.GetTarget(); 44 | if (target == null) 45 | { 46 | return; 47 | } 48 | 49 | R.CastOnUnit(target); 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /EzAIO/Utilities/BaseUlt/Bases.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using SharpDX; 5 | 6 | namespace EzAIO.Utilities.BaseUlt 7 | { 8 | public class Bases 9 | { 10 | public class BaseChamps 11 | { 12 | public bool IsRecall = false; 13 | public bool Teleporting = false; 14 | 15 | public int NetworkID { get; set; } 16 | public Vector3 PosBase { get; set; } 17 | public Teleport.TeleportStatus TStatus { get; set; } 18 | public Teleport.TeleportType TType { get; set; } 19 | public int Duration { get; set; } 20 | public int Start { get; set; } 21 | 22 | public BaseChamps(AIHeroClient target, Vector3 pos, Teleport.TeleportStatus status, 23 | Teleport.TeleportType type, int duration, int start) 24 | { 25 | NetworkID = target.NetworkId; 26 | PosBase = pos; 27 | TStatus = status; 28 | TType = type; 29 | Duration = duration; 30 | Start = start; 31 | } 32 | } 33 | public static List GetChamps = new List(); 34 | public static List BaseULTChamps = new List(); 35 | public static int Delay = 0; 36 | public static int Speed = 0; 37 | } 38 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Damage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Jinx.Jinx; 6 | namespace EzAIO.Champions.Jinx 7 | { 8 | using static ChampionBases; 9 | class Damage 10 | { 11 | private static readonly float[] WBaseDamage = {0f, 10f, 110f, 160f, 210f, 210f}; 12 | private static readonly float[] RBaseDamage = {0f, 250f, 350f, 450f, 450f}; 13 | private static readonly float[] Multiplir = {0f, .25f, .3f, .35f, .35f}; 14 | 15 | public static float WDamage(AIBaseClient target) 16 | { 17 | var wLevel = W.Level; 18 | var wBaseDamage = WBaseDamage[wLevel] + 1.6f * Player.TotalAttackDamage; 19 | return (float) Player.CalculateDamage(target, DamageType.Physical, wBaseDamage); 20 | } 21 | 22 | public static float RDamage(AIBaseClient target) 23 | { 24 | var rLevel = R.Level; 25 | var rBaseDamage = RBaseDamage[rLevel] + 1.5f * Player.GetBonusPhysicalDamage() + 26 | Multiplir[rLevel] * (target.MaxHealth - target.Health); 27 | var rDistance = ((int) Math.Ceiling(target.DistanceToPlayer() / 100) * 6 + 4) / 10; 28 | var total = rBaseDamage * (rDistance >= 1 ? 1 : rDistance); 29 | return (float) Player.CalculateDamage(target, DamageType.Physical, total); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /EzAIO/Utilities/Developer/Developer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using EnsoulSharp; 5 | using EnsoulSharp.SDK; 6 | using SharpDX; 7 | using static EzAIO.Developer.Configs; 8 | using static EzAIO.Program; 9 | using Color = System.Drawing.Color; 10 | 11 | namespace EzAIO.Developer 12 | { 13 | public static class Developer 14 | { 15 | public static AIBaseClient Player = GameObjects.Player; 16 | 17 | public static void OnGameLoad() 18 | { 19 | if (Player.IsDead) 20 | { 21 | return; 22 | } 23 | 24 | Render.OnDraw += OnDraw; 25 | } 26 | 27 | private static void OnDraw(EventArgs args) 28 | { 29 | if (BuffMenu.MyBuffBool.Enabled) 30 | { 31 | var x = Drawing.WorldToScreen(Player.Position).X; 32 | var y = Drawing.WorldToScreen(Player.Position).Y; 33 | var buff = Player.Buffs; 34 | if (buff.Any()) 35 | { 36 | Drawing.DrawText(x,y+120,System.Drawing.Color.White,"Buffs: "); 37 | } 38 | 39 | for (var i = 0; i < buff.Length * 10; i += 10) 40 | { 41 | Drawing.DrawText(x+40,(y+120+i),Color.Cyan, buff[i/10].Count+"X "+buff[i/10].Name); 42 | } 43 | } 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using static EzAIO.Champions.Tristana.Configs; 4 | using static EzAIO.Champions.Tristana.Tristana; 5 | using static EzAIO.Bases.ChampionBases; 6 | namespace EzAIO.Champions.Tristana.Modes 7 | { 8 | static class Harass 9 | { 10 | public static void CastQ(BeforeAttackEventArgs args) 11 | { 12 | if (!HarassMenu.QSliderButton.Enabled) 13 | { 14 | return; 15 | } 16 | 17 | if (HarassMenu.QSliderButton.Value >= Player.ManaPercent) 18 | { 19 | return; 20 | } 21 | 22 | var target = args.Target as AIHeroClient; 23 | if (target == null) 24 | { 25 | return; 26 | } 27 | 28 | Q.Cast(); 29 | } 30 | 31 | public static void CastE(BeforeAttackEventArgs args) 32 | { 33 | if (!HarassMenu.ESliderButton.Enabled) 34 | { 35 | return; 36 | } 37 | 38 | if (HarassMenu.ESliderButton.Value >= Player.ManaPercent) 39 | { 40 | return; 41 | } 42 | 43 | var target = args.Target as AIHeroClient; 44 | if (target == null) 45 | { 46 | return; 47 | } 48 | 49 | E.CastOnUnit(target); 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Damage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | 6 | namespace EzAIO.Champions.Kaisa 7 | { 8 | using static ChampionBases; 9 | class Damage 10 | { 11 | private static readonly float[] WBseDamage = {0f, 30f, 55f, 80f, 105f, 130f, 130f}; 12 | 13 | public static float WDamage(AIBaseClient target) 14 | { 15 | var missingHealth = target.MaxHealth - target.Health; 16 | var wLevel = W.Level; 17 | var wBaseDamage = WBseDamage[wLevel] + 18 | GameObjects.Player.TotalAttackDamage * 1.3f + 19 | GameObjects.Player.TotalMagicalDamage * .7f; 20 | if (target.GetBuffCount("kaisapassivemarker") >= (GameObjects.Player.FlatMagicDamageMod >= 100 ? 2 : 3)) 21 | { 22 | var passiveDamage = missingHealth * 23 | (.15f + .0375f * GameObjects.Player.TotalMagicalDamage / 100); 24 | if (target is AIMinionClient jungle && jungle.IsJungle()) 25 | { 26 | wBaseDamage += Math.Min(400, passiveDamage); 27 | } 28 | else 29 | { 30 | wBaseDamage += passiveDamage; 31 | } 32 | 33 | } 34 | 35 | return (float)GameObjects.Player.CalculateDamage(target, DamageType.Magical, wBaseDamage); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Twitch.Damage; 5 | using static EzAIO.Champions.Twitch.Configs; 6 | 7 | namespace EzAIO.Champions.Twitch.Modes 8 | { 9 | using static ChampionBases; 10 | class Laneclear 11 | { 12 | public static void CastE() 13 | { 14 | if (!LaneclearMenu.ESliderButton.Enabled || !E.IsReady()) 15 | { 16 | return; 17 | } 18 | 19 | if (LaneclearMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | int cont = 0; 25 | foreach (var minion in GameObjects.EnemyMinions.Where(x=>x.IsValidTarget(E.Range) && 26 | Extension.HasPoisonEffect(x,E.Range))) 27 | { 28 | if (minion == null) 29 | { 30 | return; 31 | } 32 | 33 | if (EDamage(minion) >= minion.Health - GameObjects.Player.CalculateDamage(minion, DamageType.Mixed, 1)) 34 | { 35 | cont++; 36 | } 37 | 38 | if (cont != 0 && cont == LaneclearMenu.ESlider.Value) 39 | { 40 | E.Cast(); 41 | } 42 | } 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /Template/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Template")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("EweEwe")] 11 | [assembly: AssemblyProduct("Template")] 12 | [assembly: AssemblyCopyright("Copyright © 2021")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("E43C3542-5940-4016-82F3-C1F476B54ACC")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /EzAIO/Champions/Katarina/Modes/Flee.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Katarina.Configs; 6 | namespace EzAIO.Champions.Katarina.Modes 7 | { 8 | using static ChampionBases; 9 | static class Flee 10 | { 11 | public static void CastW() 12 | { 13 | if (!FleeMenu.WBool.Enabled || !W.IsReady()) 14 | { 15 | return; 16 | } 17 | 18 | W.Cast(); 19 | } 20 | 21 | public static void CastE() 22 | { 23 | if (!FleeMenu.EBool.Enabled || !E.IsReady()) 24 | { 25 | return; 26 | } 27 | 28 | var dagger = Extension.Daggers.FirstOrDefault( 29 | x => x.Distance(Game.CursorPos) < 450); 30 | if (dagger == null) 31 | { 32 | return; 33 | } 34 | 35 | var target = GameObjects.AttackableUnits.Where(x => x.IsTargetable && 36 | x.DistanceToCursor() <= E.Range && 37 | Game.CursorPos.DistanceToPlayer() > 38 | x.Distance(Game.CursorPos)) 39 | .OrderBy(x => x.DistanceToPlayer()).FirstOrDefault(); 40 | if (target != null) 41 | { 42 | E.Cast(target.Position); 43 | } 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /EzAIO/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using EzAIO; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("EzAIO")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("EweEwe")] 12 | [assembly: AssemblyProduct("EzAIO")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("E43C3542-5940-4016-82F3-C1F476B54ACC")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion(Program.version)] 36 | [assembly: AssemblyFileVersion(Program.version)] -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Ashe.Configs; 5 | using static EzAIO.Champions.Ashe.Ashe; 6 | using static EzAIO.Champions.Ashe.Damage; 7 | namespace EzAIO.Champions.Ashe.Modes 8 | { 9 | using static ChampionBases; 10 | static class Jungleclear 11 | { 12 | public static void CastQ() 13 | { 14 | if (!JungleclearMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (JungleclearMenu.QSliderButton.Value >= Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | var mob = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(Player.GetRealAutoAttackRange())); 25 | if (mob == null) 26 | { 27 | return; 28 | } 29 | 30 | Q.Cast(); 31 | } 32 | 33 | public static void CastW(AfterAttackEventArgs args) 34 | { 35 | if (!JungleclearMenu.WSliderButton.Enabled) 36 | { 37 | return; 38 | } 39 | 40 | if (JungleclearMenu.WSliderButton.Value >= Player.ManaPercent) 41 | { 42 | return; 43 | } 44 | 45 | var mob = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(W.Range)); 46 | if (mob == null) 47 | { 48 | return; 49 | } 50 | W.Cast(mob); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Vayne.Extension; 6 | using static EzAIO.Champions.Vayne.Configs; 7 | namespace EzAIO.Champions.Vayne.Modes 8 | { 9 | using static ChampionBases; 10 | static class Harass 11 | { 12 | public static void CastQ(AfterAttackEventArgs args) 13 | { 14 | if (!HarassMenu.QSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (HarassMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | var heroytarget = args.Target as AIHeroClient; 25 | if (heroytarget == null || !ShouldCastQ(heroytarget)) 26 | { 27 | return; 28 | } 29 | 30 | Q.Cast(Game.CursorPos); 31 | } 32 | 33 | public static void CastE() 34 | { 35 | if (!HarassMenu.EsSliderButton.Enabled) 36 | { 37 | return; 38 | } 39 | 40 | if (HarassMenu.EsSliderButton.Value >= GameObjects.Player.ManaPercent) 41 | { 42 | return; 43 | } 44 | 45 | foreach (var targets in TargetSelector.GetTargets(E.Range,DamageType.Physical).ToList().Where(x=>x.Has2WStacks())) 46 | { 47 | E.CastOnUnit(targets); 48 | break; 49 | } 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Modes/LaneClear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EnsoulSharp.SDK.MenuUI; 4 | using EzAIO.Bases; 5 | 6 | namespace EzAIO.Champions.Ezreal.Modes 7 | { 8 | using static Ezreal; 9 | using static ChampionBases; 10 | using static Damage; 11 | 12 | class LaneClear 13 | { 14 | internal static void CastQ() 15 | { 16 | if (!mainMenu["LaneClear"].GetValue("q").Enabled || !Q.IsReady()) 17 | { 18 | return; 19 | } 20 | if (mainMenu["LaneClear"].GetValue("q").Value >= GameObjects.Player.ManaPercent) 21 | { 22 | return; 23 | } 24 | 25 | var qtarget = GameObjects.EnemyMinions.Where(x=>x.IsValidTarget(Q.Range)). 26 | OrderBy(x=>x.Health).FirstOrDefault(); 27 | if (qtarget == null) 28 | { 29 | return; 30 | } 31 | 32 | if (mainMenu["LaneClear"].GetValue("killable").Enabled && 33 | QDamage(qtarget) >= 34 | qtarget.Health - GameObjects.Player.CalculateDamage(qtarget, DamageType.Physical, 1)) 35 | { 36 | return; 37 | } 38 | 39 | var qinput = Q.GetPrediction(qtarget); 40 | if (qinput.Hitchance >= HitChance.High) 41 | { 42 | Q.Cast(qinput.UnitPosition); 43 | } 44 | } 45 | 46 | } 47 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Tristana.Configs; 5 | using static EzAIO.Champions.Tristana.Tristana; 6 | using static EzAIO.Extras.Helps; 7 | namespace EzAIO.Champions.Tristana.Modes 8 | { 9 | using static ChampionBases; 10 | static class Laneclear 11 | { 12 | public static void CastE(BeforeAttackEventArgs args) 13 | { 14 | if (!LaneclearMenu.ESliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (LaneclearMenu.ESliderButton.Value >= Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | var bestMinion = GameObjects.EnemyMinions.FirstOrDefault(x => 25 | x.IsValidTarget(Player.GetRealAutoAttackRange()) && 26 | CountInRange(x,300,GameObjects.EnemyMinions) >= 27 | LaneclearMenu.EMinionSlider.Value); 28 | if (bestMinion == null) 29 | { 30 | return; 31 | } 32 | 33 | E.CastOnUnit(bestMinion); 34 | } 35 | 36 | public static void CastQ() 37 | { 38 | if (!LaneclearMenu.QSliderButton.Enabled) 39 | { 40 | return; 41 | } 42 | 43 | if (LaneclearMenu.QSliderButton.Value >= Player.ManaPercent) 44 | { 45 | return; 46 | } 47 | 48 | Q.Cast(); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /EzAIO/Extras/Helps.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using EnsoulSharp; 4 | using EnsoulSharp.SDK; 5 | using SharpDX; 6 | using static EnsoulSharp.SDK.Geometry; 7 | 8 | namespace EzAIO.Extras 9 | { 10 | static class Helps 11 | { 12 | public static readonly string[] GrabsNames = {"ThreshQ", "rocketgrab2"}; 13 | 14 | public static bool IsGrabbed(this AIHeroClient hero) 15 | { 16 | return hero.Buffs.Any(x => GrabsNames.Contains(x.Name)); 17 | } 18 | private static IEnumerable GetInRange(Vector2 pos, float range, IEnumerable units) 19 | { 20 | return units.Where(x => x != null && x.IsValid && x.Position.To2D().Distance(pos) <= range).ToList(); 21 | } 22 | public static int CountInRange(this Vector2 pos, float range, IEnumerable units) 23 | { 24 | return GetInRange(pos, range, units).Count(); 25 | } 26 | 27 | public static int CountInRange(AIBaseClient unit, float range, IEnumerable units) 28 | { 29 | return GetInRange(unit.Position.To2D(), range, units).Count(); 30 | } 31 | 32 | public static List GetBestEnemyHeroesTarget() 33 | { 34 | return GetBestEnemyHeroesInRange(float.MaxValue); 35 | } 36 | public static List GetBestEnemyHeroesInRange(float range) 37 | { 38 | return GameObjects.EnemyHeroes.Where(x => x.InRange(range)).ToList(); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Katarina/Extension.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using EnsoulSharp; 4 | using EnsoulSharp.SDK; 5 | using static EzAIO.Champions.Katarina.Configs; 6 | 7 | namespace EzAIO.Champions.Katarina 8 | { 9 | static class Extension 10 | { 11 | public static float eDelay = 0f; 12 | public static float rDealy = 0f; 13 | public static bool rTrigger = false; 14 | public static bool CastingR = false; 15 | public static List Daggers = new List(); 16 | 17 | public static void GetDagger() 18 | { 19 | Daggers = MiscellaneousMenu.DetectLanded.Enabled 20 | ? GameObjects.AllGameObjects.Where(x => x.Name.Contains("_Dagger_Ground_")).ToList() 21 | : GameObjects.AllGameObjects.Where(x => x.Name.Contains("W_Indicator_Ally")).ToList(); 22 | } 23 | 24 | public static void Magnet(BeforeMoveEventArgs args) 25 | { 26 | if (!MiscellaneousMenu.Magnet.Enabled) 27 | { 28 | return; 29 | } 30 | 31 | var dagger = Daggers.Where(x => x.IsValid && 32 | x.DistanceToPlayer() < 500).OrderBy(x => x.DistanceToPlayer()) 33 | .FirstOrDefault(); 34 | if (dagger == null) 35 | { 36 | return; 37 | } 38 | 39 | if (dagger.Position.DistanceToPlayer() > 100) 40 | { 41 | args.MovePosition = dagger.Position; 42 | } 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | namespace EzAIO.Champions.Kalista.Modes 5 | { 6 | using static ChampionBases; 7 | using static Damage; 8 | static class Laneclear 9 | { 10 | public static void CastE() 11 | { 12 | if(!Configs.Laneclear.ESliderButton.Enabled || !E.IsReady()) 13 | { 14 | return; 15 | } 16 | 17 | if (Configs.Laneclear.ESliderButton.Value >= GameObjects.Player.ManaPercent) 18 | { 19 | return; 20 | } 21 | 22 | int cont = 0; 23 | foreach (var minions in GameObjects.EnemyMinions.Where(x => x.IsValidTarget(E.Range) && 24 | Extension.HasRendBuff(x, E.Range))) 25 | { 26 | if (EDamage(minions) >= 27 | minions.Health - GameObjects.Player.CalculateDamage(minions, DamageType.Physical, 1)) 28 | { 29 | cont++; 30 | } 31 | 32 | if (cont > 0) 33 | { 34 | if (cont >= Configs.Laneclear.Eminion.Value) 35 | { 36 | E.Cast(); 37 | } 38 | } 39 | 40 | if (Configs.Laneclear.EBool.Enabled && minions.Health <= 40) 41 | { 42 | E.Cast(); 43 | } 44 | } 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Kaisa.Configs; 6 | namespace EzAIO.Champions.Kaisa.Modes 7 | { 8 | using static ChampionBases; 9 | static class Laneclear 10 | { 11 | public static void CastQ() 12 | { 13 | if (!LaneclearMenu.QSliderButton.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | if (LaneclearMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 19 | { 20 | return; 21 | } 22 | 23 | var countMinions = GameObjects.EnemyMinions.Count(x => x.IsValidTarget(Q.Range) && 24 | x.DistanceToPlayer() <= Q.Range); 25 | if (countMinions < LaneclearMenu.QCount.Value) 26 | { 27 | return; 28 | } 29 | 30 | Q.Cast(); 31 | } 32 | 33 | public static void CastE() 34 | { 35 | if (!LaneclearMenu.ESliderButton.Enabled) 36 | { 37 | return; 38 | } 39 | 40 | if (LaneclearMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 41 | { 42 | return; 43 | } 44 | 45 | if (!GameObjects.EnemyMinions.Any(x => x.IsValidTarget(Q.Range) && x.DistanceToPlayer() <= Q.Range)) 46 | { 47 | return; 48 | } 49 | Game.Print("Hola"); 50 | E.Cast(); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Kaisa.Configs; 5 | namespace EzAIO.Champions.Kaisa.Modes 6 | { 7 | using static ChampionBases; 8 | static class Harass 9 | { 10 | public static void CastQ() 11 | { 12 | if (!HarassMenu.QSliderButton.Enabled) 13 | { 14 | return; 15 | } 16 | 17 | if (HarassMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 18 | { 19 | return; 20 | } 21 | 22 | if (GameObjects.EnemyHeroes.Any(x => x.IsValidTarget(Q.Range))) 23 | { 24 | Q.Cast(); 25 | } 26 | } 27 | 28 | public static void CastW() 29 | { 30 | if (!HarassMenu.WSliderButton.Enabled) 31 | { 32 | return; 33 | } 34 | 35 | if (HarassMenu.WSliderButton.Value >= GameObjects.Player.ManaPercent) 36 | { 37 | return; 38 | } 39 | 40 | var enemies = TargetSelector.GetTargets(W.Range,DamageType.Mixed).ToList(); 41 | foreach (var target in enemies.Where(x=>x.IsValidTarget(W.Range))) 42 | { 43 | if (target == null) 44 | { 45 | return; 46 | } 47 | 48 | var winput = W.GetPrediction(target); 49 | if (winput.Hitchance >= HitChance.High) 50 | { 51 | W.Cast(winput.CastPosition); 52 | } 53 | } 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | namespace EzAIO.Champions.Kalista.Modes 5 | { 6 | using static Configs; 7 | using static Damage; 8 | using static ChampionBases; 9 | static class Killsteal 10 | { 11 | public static void CastQ() 12 | { 13 | if (!KillstealMenu.QSBool.Enabled || !Q.IsReady()) 14 | { 15 | return; 16 | } 17 | if (GameObjects.Player.IsDashing()) 18 | { 19 | return; 20 | } 21 | 22 | foreach (var target in GameObjects.EnemyHeroes.Where(x => 23 | x.IsValidTarget(Q.Range) && 24 | QDamage(x) >= x.Health - GameObjects.Player.CalculateDamage(x, DamageType.Physical, 1) && 25 | !x.IsInvulnerable)) 26 | { 27 | var qinput = Q.GetPrediction(target); 28 | if (qinput.Hitchance >= HitChance.High) 29 | { 30 | Q.Cast(qinput.CastPosition); 31 | } 32 | } 33 | } 34 | 35 | public static void CastE() 36 | { 37 | if (!KillstealMenu.EBool.Enabled || !E.IsReady()) 38 | { 39 | return; 40 | } 41 | 42 | if (GameObjects.EnemyHeroes.Any(x => 43 | Extension.HasRendBuff(x, E.Range) && 44 | EDamage(x) >= x.Health - GameObjects.Player.CalculateDamage(x, DamageType.Physical, 1))) 45 | { 46 | E.Cast(); 47 | } 48 | } 49 | 50 | } 51 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Lucian/Modes/Structureclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Lucian.Configs; 6 | namespace EzAIO.Champions.Lucian.Modes 7 | { 8 | using static ChampionBases; 9 | static class Structureclear 10 | { 11 | public static void CastW(AfterAttackEventArgs args) 12 | { 13 | if (!StructureclearMenu.WSlider.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | if (StructureclearMenu.WSlider.Value >= GameObjects.Player.ManaPercent) 19 | { 20 | return; 21 | } 22 | 23 | var wtarget = GameObjects.EnemyTurrets.FirstOrDefault(x => x.IsValidTarget(W.Range)); 24 | if (wtarget == null) 25 | { 26 | return; 27 | } 28 | 29 | W.Cast(Game.CursorPos); 30 | } 31 | 32 | public static void CastE(AfterAttackEventArgs args) 33 | { 34 | if (!StructureclearMenu.ESlider.Enabled) 35 | { 36 | return; 37 | } 38 | 39 | if (StructureclearMenu.ESlider.Value >= GameObjects.Player.ManaPercent) 40 | { 41 | return; 42 | } 43 | 44 | var etraget = GameObjects.EnemyTurrets.FirstOrDefault(x => x.IsValidTarget(E.Range)); 45 | if (etraget == null) 46 | { 47 | return; 48 | } 49 | 50 | E.Cast(GameObjects.Player.Position.Extend(Game.CursorPos, GameObjects.Player.BoundingRadius)); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EnsoulSharp.SDK.MenuUI; 4 | using EzAIO.Bases; 5 | 6 | namespace EzAIO.Champions.Ezreal.Modes 7 | { 8 | using static Ezreal; 9 | using static ChampionBases; 10 | class Automatic 11 | { 12 | internal static void CastQ() 13 | { 14 | if (!mainMenu["Automatic"].GetValue("q").Enabled || !Q.IsReady()) 15 | { 16 | return; 17 | } 18 | if (mainMenu["Automatic"].GetValue("q").Value >= GameObjects.Player.ManaPercent) 19 | { 20 | return; 21 | } 22 | 23 | var qtarget = Q.GetTarget(); 24 | if (qtarget == null) 25 | { 26 | return; 27 | } 28 | 29 | var qinput = Q.GetPrediction(qtarget); 30 | if (qinput.Hitchance >= HitChance.High && Q.IsInRange(qinput.CastPosition)) 31 | { 32 | Q.Cast(qinput.CastPosition); 33 | } 34 | } 35 | 36 | internal static void OnImmobile() 37 | { 38 | if (!mainMenu["Automatic"].GetValue("immobile").Enabled) 39 | { 40 | return; 41 | } 42 | 43 | var target = GameObjects.EnemyHeroes.FirstOrDefault(x => 44 | x.IsValidTarget(mainMenu["Automatic"].GetValue("rRange").Value) && 45 | x.IsStunned); 46 | if (target == null) 47 | { 48 | return; 49 | } 50 | R.Cast(target.Position); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Threading; 3 | using EnsoulSharp; 4 | using EnsoulSharp.SDK; 5 | using EzAIO.Bases; 6 | using static EzAIO.Champions.Ashe.Configs; 7 | using static EzAIO.Champions.Ashe.Ashe; 8 | namespace EzAIO.Champions.Ashe.Modes 9 | { 10 | using static ChampionBases; 11 | static class Harass 12 | { 13 | public static void CastQ() 14 | { 15 | if (!HarassMenu.QSliderButton.Enabled) 16 | { 17 | return; 18 | } 19 | 20 | if (HarassMenu.QSliderButton.Value >= Player.ManaPercent) 21 | { 22 | return; 23 | } 24 | 25 | var qtarget = Q.GetTarget(); 26 | if (qtarget == null) 27 | { 28 | return; 29 | } 30 | 31 | Q.Cast(); 32 | } 33 | 34 | public static void CastW() 35 | { 36 | if (!HarassMenu.WSliderButton.Enabled) 37 | { 38 | return; 39 | } 40 | 41 | if (HarassMenu.WSliderButton.Value >= Player.ManaPercent) 42 | { 43 | return; 44 | } 45 | 46 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(W.Range))) 47 | { 48 | if (target == null) 49 | { 50 | return; 51 | } 52 | 53 | var winput = W.GetPrediction(target); 54 | if (winput.Hitchance >= HitChance.High && W.IsInRange(winput.CastPosition)) 55 | { 56 | W.Cast(winput.CastPosition); 57 | } 58 | } 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Lucian/Extension.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using static EzAIO.Champions.Lucian.Lucian; 4 | namespace EzAIO.Champions.Lucian 5 | { 6 | using static Configs; 7 | static class Extension 8 | { 9 | public static bool IsCulling() 10 | { 11 | return GameObjects.Player.HasBuff("LucianR"); 12 | } 13 | 14 | public static bool HasPassive() 15 | { 16 | return GameObjects.Player.HasBuff("LucianPassiveBuff"); 17 | } 18 | 19 | public static Geometry.Rectangle QRectangle(AIBaseClient unit) 20 | { 21 | return new Geometry.Rectangle(GameObjects.Player.Position, 22 | GameObjects.Player.Position.Extend(unit.Position, ExtendedQ.Range), 23 | ExtendedQ.Width); 24 | } 25 | 26 | public static bool CanCastE(AttackableUnit target) 27 | { 28 | if (GameObjects.Player.Distance(Game.CursorPos) <= GameObjects.Player.GetRealAutoAttackRange() && 29 | MiscellaneousMenu.OnlyEifMouseOutAARangeBool.Enabled) 30 | { 31 | return false; 32 | } 33 | 34 | var posAfterE = GameObjects.Player.Position.Extend(Game.CursorPos, 300f); 35 | if (posAfterE.Distance(target) > GameObjects.Player.GetRealAutoAttackRange(target) && 36 | MiscellaneousMenu.NoOutAARangeBool.Enabled) 37 | { 38 | return false; 39 | } 40 | 41 | if (posAfterE.IsUnderEnemyTurret() && 42 | MiscellaneousMenu.NoTurret.Enabled) 43 | { 44 | return false; 45 | } 46 | 47 | return true; 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Jhin.Configs; 6 | using static EzAIO.Champions.Jhin.Jhin; 7 | 8 | namespace EzAIO.Champions.Jhin.Modes 9 | { 10 | using static ChampionBases; 11 | static class Jungleclear 12 | { 13 | public static void CastE(AfterAttackEventArgs args) 14 | { 15 | if (!JungleclearMenu.ESliderButton.Enabled) 16 | { 17 | return; 18 | } 19 | 20 | if (JungleclearMenu.ESliderButton.Value >= Player.ManaPercent) 21 | { 22 | return; 23 | } 24 | 25 | var target = args.Target as AIMinionClient; 26 | if ((target.GetJungleType() & JungleType.Large) == 0) 27 | { 28 | return; 29 | } 30 | E.Cast(target); 31 | } 32 | 33 | public static void CastQ(BeforeAttackEventArgs args) 34 | { 35 | if (!JungleclearMenu.QSliderButton.Enabled) 36 | { 37 | return; 38 | } 39 | 40 | if (JungleclearMenu.QSliderButton.Value >= Player.ManaPercent) 41 | { 42 | return; 43 | } 44 | 45 | Q.CastOnUnit(args.Target); 46 | } 47 | 48 | public static void CastQ(AfterAttackEventArgs args) 49 | { 50 | if (!JungleclearMenu.QSliderButton.Enabled) 51 | { 52 | return; 53 | } 54 | 55 | if (JungleclearMenu.QSliderButton.Value >= Player.ManaPercent) 56 | { 57 | return; 58 | } 59 | 60 | Q.CastOnUnit(args.Target); 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Damage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | 6 | namespace EzAIO.Champions.Vayne 7 | { 8 | using static ChampionBases; 9 | class Damage 10 | { 11 | private static readonly float[] QBaseDamage = {0f, .6f, .65f, .7f, .75f, .8f, .8f}; 12 | private static readonly float[] WBaseDamage = {0f, .04f, .065f, .09f, .115f, .14f, .14f}; 13 | private static readonly float[] WTrueDamage = {0f, 50f, 65f, 80f, 95f, 110f, 110f}; 14 | private static readonly float[] EBaseDamage = {0f, 50f, 85f, 120f, 155f, 190f, 190f}; 15 | 16 | public static float QDamage(AIBaseClient target) 17 | { 18 | var qLevel = Q.Level; 19 | var qBaseDamage = QBaseDamage[qLevel] * GameObjects.Player.TotalAttackDamage; 20 | return (float) GameObjects.Player.CalculateDamage(target, DamageType.Physical, qBaseDamage); 21 | } 22 | 23 | public static float WDamage(AIBaseClient target) 24 | { 25 | var wLevel = W.Level; 26 | var wTrueDamage = WTrueDamage[wLevel]; 27 | var wBaseDamage = WBaseDamage[wLevel] * target.MaxHealth; 28 | if (target is AIMinionClient jungle && jungle.IsJungle()) 29 | { 30 | return Math.Max(wTrueDamage, Math.Min(200, wBaseDamage)); 31 | } 32 | return Math.Max(wTrueDamage, wBaseDamage); 33 | } 34 | 35 | public static float EDamage(AIBaseClient target) 36 | { 37 | var eLevel = E.Level; 38 | var eBaseDamage = EBaseDamage[eLevel] + .5f * GameObjects.Player.GetBonusPhysicalDamage(); 39 | return (float) GameObjects.Player.CalculateDamage(target, DamageType.Physical, eBaseDamage); 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Modes/Structureclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Tristana.Configs; 5 | using static EzAIO.Champions.Tristana.Tristana; 6 | namespace EzAIO.Champions.Tristana.Modes 7 | { 8 | using static ChampionBases; 9 | static class Structureclear 10 | { 11 | public static void Cast(BeforeAttackEventArgs args) 12 | { 13 | if (StructureclearMenu.NoEnemiesRange.Enabled && 14 | (Player.CountEnemyHeroesInRange(Player.GetRealAutoAttackRange()) >= 15 | StructureclearMenu.NoEnemiesRange.Value)) 16 | { 17 | return; 18 | } 19 | 20 | var turret = GameObjects.EnemyTurrets.FirstOrDefault(x => x.IsValidTarget(Player.GetRealAutoAttackRange())); 21 | if (turret == null) 22 | { 23 | return; 24 | } 25 | CastQ(); 26 | CastE(args); 27 | } 28 | 29 | private static void CastQ() 30 | { 31 | if (!StructureclearMenu.QSliderButton.Enabled) 32 | { 33 | return; 34 | } 35 | 36 | if (LaneclearMenu.QSliderButton.Value >= Player.ManaPercent) 37 | { 38 | return; 39 | } 40 | 41 | Q.Cast(); 42 | } 43 | 44 | private static void CastE(BeforeAttackEventArgs args) 45 | { 46 | if (!StructureclearMenu.ESliderButton.Enabled) 47 | { 48 | return; 49 | } 50 | 51 | if (StructureclearMenu.ESliderButton.Value >= Player.ManaPercent) 52 | { 53 | return; 54 | } 55 | 56 | E.CastOnUnit(args.Target); 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Extension.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using EnsoulSharp; 5 | using EnsoulSharp.SDK; 6 | using SharpDX; 7 | using static EzAIO.Champions.Jhin.Jhin; 8 | using static EzAIO.Bases.ChampionBases; 9 | using static EnsoulSharp.SDK.Geometry; 10 | namespace EzAIO.Champions.Jhin 11 | { 12 | static class Extension 13 | { 14 | public static Vector3 End = Vector3.Zero; 15 | public static int UltimateShootsCount; 16 | 17 | public static bool Has4Shot() 18 | { 19 | return Player.HasBuff("jhinpassiveattackbuff"); 20 | } 21 | 22 | public static bool IsMarked(this AIBaseClient target) 23 | { 24 | return target.HasBuff("jhinespotteddebuff"); 25 | } 26 | 27 | public static bool RHBCAU(this AIBaseClient target) 28 | { 29 | return target.HasBuff("jhinetrapslow"); 30 | } 31 | 32 | public static bool HasUltimate4Shoot() 33 | { 34 | return UltimateShootsCount == 3; 35 | } 36 | 37 | public static bool IsReloading() 38 | { 39 | return Player.HasBuff("JhinPassiveReload"); 40 | } 41 | 42 | public static bool IsUltShooting() 43 | { 44 | return R.Name.Equals("JhinRShot"); 45 | } 46 | 47 | public static Sector RCone() 48 | { 49 | return new Sector(Player.Position, End, (float) (60f * Math.PI / 180f), R.Range, 2); 50 | } 51 | 52 | public static IEnumerable EnemiesInsideCone() 53 | { 54 | if (!IsUltShooting()) 55 | { 56 | return null; 57 | } 58 | return GameObjects.EnemyHeroes.Where(x => x.IsValidTarget(R.Range) && RCone().IsInside(x)).ToList(); 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Damage.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Tristana.Tristana; 5 | using static EzAIO.Champions.Tristana.Extension; 6 | namespace EzAIO.Champions.Tristana 7 | { 8 | using static ChampionBases; 9 | class Damage 10 | { 11 | private static readonly float[] EBaseDamage = {0f, 70f, 80f, 90f, 100f, 110f, 110f}; 12 | private static readonly float[] EMultiplier = {0f, .5f, .75f, 1f, 1.25f, 1.5f, 1.5f}; 13 | private static readonly float[] EStack = {0f, 21f, 24f, 27f, 30f, 33f, 33f}; 14 | private static readonly float[] EStackMultiplier = {0f, .15f, .225f, .30f, .375f, .45f, .45f}; 15 | private static readonly float[] RBaseDamage = {0f, 300f, 400f, 500f, 500f}; 16 | 17 | public static float EDamage(AIBaseClient target) 18 | { 19 | if (!target.IsCharged()) 20 | { 21 | return 0; 22 | } 23 | 24 | var eLevel = E.Level; 25 | var eBaseDamage = EBaseDamage[eLevel] + 26 | EMultiplier[eLevel] * Player.GetBonusPhysicalDamage() + 27 | .5f * Player.TotalMagicalDamage; 28 | var eBonusDamage = EStack[eLevel] + EStackMultiplier[eLevel] + Player.TotalAttackDamage + 29 | .15 * Player.TotalMagicalDamage; 30 | var total = eBaseDamage + eBonusDamage * target.EBuffCount(); 31 | return (float) Player.CalculateDamage(target, DamageType.Physical, total); 32 | } 33 | 34 | public static float RDamage(AIBaseClient target) 35 | { 36 | var rLevel = R.Level; 37 | var rBaseDamage = RBaseDamage[rLevel] + Player.TotalMagicalDamage; 38 | return (float) Player.CalculateDamage(target, DamageType.Magical, rBaseDamage); 39 | } 40 | 41 | } 42 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Damage.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | namespace EzAIO.Champions.Kalista 5 | { 6 | using static ChampionBases; 7 | class Damage 8 | { 9 | private static readonly float[] QBaseDamage = {0, 20, 85, 150, 215, 280, 280}; 10 | private static readonly float[] EBaseDamage = {0, 20, 30, 40, 50, 60, 60}; 11 | private static readonly float[] EStackBaseDamage = {0, 10, 14, 19, 25, 32, 32}; 12 | private static readonly float[] EStackMultiplierDamage = {0, .198f, .23748f, .27498f, .31248f, .34988f}; 13 | 14 | public static float QDamage(AIBaseClient target) 15 | { 16 | var qLevel = Q.Level; 17 | var qBaseDamage = QBaseDamage[qLevel] + 1f * GameObjects.Player.TotalAttackDamage; 18 | return (float) GameObjects.Player.CalculateDamage(target, DamageType.Physical, qBaseDamage); 19 | } 20 | 21 | public static float EDamage(AIBaseClient target) 22 | { 23 | var eLevel = E.Level; 24 | var eBaseDamage = EBaseDamage[eLevel] + .6 * GameObjects.Player.TotalAttackDamage; 25 | var eStackDamage = EStackBaseDamage[eLevel] + 26 | EStackMultiplierDamage[eLevel] * GameObjects.Player.TotalAttackDamage; 27 | var eStacksOnTarget = target.GetBuffCount("kalistaexpungemarker"); 28 | if (eStacksOnTarget == 0) 29 | { 30 | return 0; 31 | } 32 | 33 | var total = eBaseDamage + eStackDamage * (eStacksOnTarget - 1); 34 | if (target is AIMinionClient minion && (minion.GetJungleType() & JungleType.Legendary) != 0) 35 | { 36 | total /= 2; 37 | } 38 | 39 | return (float) GameObjects.Player.CalculateDamage(target, DamageType.Physical, total); 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Extension.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using static EzAIO.Champions.Jinx.Jinx; 5 | using static EzAIO.Bases.ChampionBases; 6 | 7 | namespace EzAIO.Champions.Jinx 8 | { 9 | static class Extension 10 | { 11 | public static float RocketRange 12 | => MinigunRange + 50 + 25 * Q.Level; 13 | 14 | private static float MinigunRange 15 | => 595; 16 | public static bool ActivatedRockets { get; set; } 17 | public static bool ActivatedPassive { get; set; } 18 | 19 | public static bool Swap(AIBaseClient target) 20 | { 21 | return SwapToMinigun(target) || SwapToRockets(target); 22 | } 23 | 24 | private static bool SwapToMinigun(AIBaseClient target) 25 | { 26 | return ActivatedRockets && target.DistanceToPlayer() < MinigunRange; 27 | } 28 | 29 | private static bool SwapToRockets(AIBaseClient target) 30 | { 31 | return !ActivatedRockets && 32 | (target.DistanceToPlayer() < RocketRange && target.CountEnemyHeroesInRange(150) >= 2 || 33 | target.DistanceToPlayer() > MinigunRange && target.DistanceToPlayer() < RocketRange); 34 | } 35 | public static float RocketDamage(AIBaseClient target) 36 | { 37 | return Player.GetRealAutoAttackRange(target) * 1.1f; 38 | } 39 | 40 | public static int KillableMinionsCount(AIMinionClient minions) 41 | { 42 | return GameObjects.EnemyMinions.Count(x => x.IsValidTarget(RocketRange) && 43 | x.Distance(minions) <= 150 && 44 | RocketRange >= x.Health - 45 | Player.CalculateDamage(x, DamageType.Physical, 1)); 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Jinx.Configs; 5 | using static EzAIO.Champions.Jinx.Jinx; 6 | namespace EzAIO.Champions.Jinx.Modes 7 | { 8 | using static ChampionBases; 9 | static class Jungleclear 10 | { 11 | public static void CastQ() 12 | { 13 | if (!JungleclearMenu.QSliderButton.Enabled) 14 | { 15 | return; 16 | } 17 | if (JungleclearMenu.QSliderButton.Value >= Player.ManaPercent) 18 | { 19 | if (Extension.ActivatedRockets) 20 | { 21 | Q.Cast(); 22 | } 23 | return; 24 | } 25 | 26 | var mob = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(Extension.RocketRange) ); 27 | if (mob == null) 28 | { 29 | return; 30 | } 31 | 32 | if (Extension.Swap(mob)) 33 | { 34 | Q.Cast(); 35 | } 36 | } 37 | 38 | public static void CastW() 39 | { 40 | if (!JungleclearMenu.WSliderButton.Enabled) 41 | { 42 | return; 43 | } 44 | 45 | if (JungleclearMenu.WSliderButton.Value >= Player.ManaPercent) 46 | { 47 | return; 48 | } 49 | 50 | var mob = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(W.Range) && (x.GetJungleType() & JungleType.Legendary) != 0); 51 | if (mob == null) 52 | { 53 | return; 54 | } 55 | 56 | var winput = W.GetPrediction(mob); 57 | if (winput.Hitchance >= HitChance.High && W.IsInRange(winput.CastPosition)) 58 | { 59 | W.Cast(winput.CastPosition); 60 | } 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Modes/Extra.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using EzAIO.Extras; 6 | using static EzAIO.Champions.Jhin.Damage; 7 | using static EzAIO.Champions.Jhin.Configs; 8 | using static EzAIO.Champions.Jhin.Jhin; 9 | using static EzAIO.Extras.Helps; 10 | namespace EzAIO.Champions.Jhin.Modes 11 | { 12 | using static ChampionBases; 13 | static class Extra 14 | { 15 | public static void CastQ(BeforeAttackEventArgs args) 16 | { 17 | var target = args.Target as AIBaseClient; 18 | if (!Extension.Has4Shot() || target.Health <= Player.GetAutoAttackDamage(target)) 19 | { 20 | return; 21 | } 22 | 23 | if (!ComboMenu.QBool.Enabled) 24 | { 25 | return; 26 | } 27 | 28 | Q.CastOnUnit(target); 29 | } 30 | 31 | public static void CastQ(AfterAttackEventArgs args) 32 | { 33 | if (!ComboMenu.QBool.Enabled) 34 | { 35 | return; 36 | } 37 | 38 | Q.CastOnUnit(args.Target); 39 | } 40 | 41 | public static void CastE() 42 | { 43 | if (!ComboMenu.EBool.Enabled) 44 | { 45 | return; 46 | } 47 | if (ComboMenu.EReloadBool.Enabled || !Extension.Has4Shot()) 48 | { 49 | return; 50 | } 51 | 52 | var target = GameObjects.EnemyHeroes.FirstOrDefault(x=>x.IsValidTarget(E.Range)); 53 | 54 | if (target == null) 55 | { 56 | return; 57 | } 58 | var einput = E.GetPrediction(target); 59 | if (einput.Hitchance >= HitChance.High && E.IsInRange(einput.CastPosition)) 60 | { 61 | E.Cast(einput.CastPosition); 62 | } 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | using EzAIO.Bases; 3 | using static EzAIO.Champions.Twitch.Configs; 4 | namespace EzAIO.Champions.Twitch.Modes 5 | { 6 | using static ChampionBases; 7 | static class Harass 8 | { 9 | public static void CastW() 10 | { 11 | if (!HarassMenu.WSliderButton.Enabled || !W.IsReady()) 12 | { 13 | return; 14 | } 15 | 16 | if (HarassMenu.WSliderButton.Value >= GameObjects.Player.ManaPercent) 17 | { 18 | return; 19 | } 20 | 21 | var wtarget = W.GetTarget(); 22 | if (wtarget == null) 23 | { 24 | return; 25 | } 26 | 27 | var winput = W.GetPrediction(wtarget); 28 | if (winput.Hitchance >= HitChance.High) 29 | { 30 | W.Cast(winput.UnitPosition); 31 | } 32 | } 33 | 34 | public static void CastE() 35 | { 36 | if (!HarassMenu.ESliderButton.Enabled || !E.IsReady()) 37 | { 38 | return; 39 | } 40 | 41 | if (HarassMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 42 | { 43 | return; 44 | } 45 | 46 | var etarget = E.GetTarget(); 47 | if (etarget == null || !Extension.HasPoisonEffect(etarget, E.Range)) 48 | { 49 | return; 50 | } 51 | 52 | if (HarassMenu.EBool.Enabled) 53 | { 54 | if (etarget.DistanceToPlayer() >= GameObjects.Player.GetCurrentAutoAttackRange()) 55 | { 56 | E.Cast(); 57 | } 58 | } 59 | else 60 | { 61 | E.Cast(); 62 | } 63 | 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EnsoulSharp.SDK.MenuUI; 5 | using EzAIO.Bases; 6 | namespace EzAIO.Champions.Ezreal.Modes 7 | { 8 | using static Damage; 9 | using static Ezreal; 10 | using static ChampionBases; 11 | 12 | static class Killsteal 13 | { 14 | internal static void CastQ() 15 | { 16 | if (!mainMenu["Killsteal"].GetValue("q").Enabled || !Q.IsReady()) 17 | { 18 | return; 19 | } 20 | 21 | 22 | foreach (var target in GameObjects.EnemyHeroes.Where(x=> 23 | x.IsValidTarget(Q.Range) && 24 | QDamage(x)>= x.Health-GameObjects.Player.CalculateDamage(x,DamageType.Physical,1) && 25 | !x.IsInvulnerable)) 26 | { 27 | var qinput = Q.GetPrediction(target); 28 | if (qinput.Hitchance >= HitChance.High) 29 | { 30 | Q.Cast(qinput.CastPosition); 31 | } 32 | 33 | } 34 | } 35 | internal static void CastR() 36 | { 37 | if (!mainMenu["Killsteal"].GetValue("r").Enabled || !Q.IsReady()) 38 | { 39 | return; 40 | } 41 | foreach (var target in GameObjects.EnemyHeroes.Where(x=> 42 | x.IsValidTarget(mainMenu["Automatic"].GetValue("rRange").Value) && 43 | RDamage(x)>= x.Health-GameObjects.Player.CalculateDamage(x,DamageType.Magical,1) && 44 | !x.IsInvulnerable)) 45 | { 46 | var rinput = R.GetPrediction(target); 47 | if (rinput.Hitchance >= HitChance.High) 48 | { 49 | R.Cast(rinput.CastPosition); 50 | } 51 | 52 | } 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | using EzAIO.Bases; 3 | using static EzAIO.Champions.Jinx.Configs; 4 | using static EzAIO.Champions.Jinx.Jinx; 5 | namespace EzAIO.Champions.Jinx.Modes 6 | { 7 | using static ChampionBases; 8 | static class Harass 9 | { 10 | public static void CastQ() 11 | { 12 | if (!HarassMenu.QSliderButton.Enabled) 13 | { 14 | return; 15 | } 16 | 17 | if (HarassMenu.QSliderButton.Value > Player.ManaPercent) 18 | { 19 | if (Extension.ActivatedRockets) 20 | { 21 | Q.Cast(); 22 | } 23 | return; 24 | } 25 | 26 | var target = TargetSelector.GetTarget(Extension.RocketRange,DamageType.Physical); 27 | if (target == null) 28 | { 29 | return; 30 | } 31 | 32 | if (Extension.Swap(target)) 33 | { 34 | Q.Cast(); 35 | } 36 | } 37 | 38 | public static void CastW() 39 | { 40 | if (!HarassMenu.WSliderButton.Enabled) 41 | { 42 | return; 43 | } 44 | 45 | if (HarassMenu.WSliderButton.Value >= Player.ManaPercent) 46 | { 47 | return; 48 | } 49 | 50 | if (HarassMenu.EnemiesBool.Enabled && Player.CountEnemyHeroesInRange(Extension.RocketRange) > 0) 51 | { 52 | return; 53 | } 54 | 55 | var target = W.GetTarget(); 56 | if (target == null) 57 | { 58 | return; 59 | } 60 | 61 | var winput = W.GetPrediction(target); 62 | if (winput.Hitchance >= HitChance.High && W.IsInRange(winput.CastPosition)) 63 | { 64 | W.Cast(winput.CastPosition); 65 | } 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Twitch.Damage; 5 | using static EzAIO.Champions.Twitch.Configs; 6 | namespace EzAIO.Champions.Twitch.Modes 7 | { 8 | using static ChampionBases; 9 | static class Jungleclear 10 | { 11 | public static void CastW() 12 | { 13 | if (!JungleclearMenu.WSliderButton.Enabled || !W.IsReady()) 14 | { 15 | return; 16 | } 17 | 18 | if (JungleclearMenu.WSliderButton.Value >= GameObjects.Player.ManaPercent) 19 | { 20 | return; 21 | } 22 | 23 | var wtarget = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(W.Range)); 24 | if (wtarget == null) 25 | { 26 | return; 27 | } 28 | 29 | var winput = W.GetPrediction(wtarget); 30 | if (winput.Hitchance >= HitChance.High) 31 | { 32 | W.Cast(winput.UnitPosition); 33 | } 34 | } 35 | 36 | public static void CastE() 37 | { 38 | if (!JungleclearMenu.ESliderButton.Enabled || !E.IsReady()) 39 | { 40 | return; 41 | } 42 | 43 | if (JungleclearMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 44 | { 45 | return; 46 | } 47 | 48 | var etarget = GameObjects.Jungle.FirstOrDefault(x=>x.IsValidTarget(E.Range)); 49 | if (etarget == null || !Extension.HasPoisonEffect(etarget,E.Range)) 50 | { 51 | return; 52 | } 53 | 54 | if (EDamage(etarget) >= etarget.Health - GameObjects.Player.CalculateDamage(etarget, DamageType.Mixed, 1)) 55 | { 56 | E.Cast(); 57 | } 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | using EzAIO.Bases; 3 | using static EzAIO.Champions.Kaisa.Configs; 4 | namespace EzAIO.Champions.Kaisa.Modes 5 | { 6 | using static ChampionBases; 7 | static class Combo 8 | { 9 | public static void CastQ() 10 | { 11 | if (!ComboMenu.QBool.Enabled) 12 | { 13 | return; 14 | } 15 | 16 | var qtarget = TargetSelector.GetTarget(Q.Range,DamageType.Physical); 17 | if (qtarget == null) 18 | { 19 | return; 20 | } 21 | 22 | Q.Cast(); 23 | } 24 | 25 | public static void CastW() 26 | { 27 | if (!ComboMenu.WSliderButton.Enabled || ComboMenu.WSliderButton.Value == 2) 28 | { 29 | return; 30 | } 31 | 32 | var wtarget = TargetSelector.GetTarget(W.Range,DamageType.Mixed); 33 | if (wtarget == null) 34 | { 35 | return; 36 | } 37 | 38 | if (ComboMenu.WRange.Enabled && wtarget.DistanceToPlayer() <= ComboMenu.WRange.Value) 39 | { 40 | return; 41 | } 42 | 43 | var winput = W.GetPrediction(wtarget); 44 | if (winput.Hitchance >= HitChance.High) 45 | { 46 | W.Cast(winput.CastPosition); 47 | } 48 | } 49 | 50 | public static void CastE() 51 | { 52 | if (!ComboMenu.EBool.Enabled) 53 | { 54 | return; 55 | } 56 | 57 | if (MiscellaneousMenu.EBool.Enabled && !Extension.EUpgraded()) 58 | { 59 | return; 60 | } 61 | 62 | var target = TargetSelector.GetTarget(Q.Range,DamageType.Physical); 63 | if (target == null) 64 | { 65 | return; 66 | } 67 | 68 | E.Cast(); 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using SharpDX; 5 | using static EzAIO.Champions.Kalista.Extension; 6 | namespace EzAIO.Champions.Kalista.Modes 7 | { 8 | using static Configs; 9 | using static Kalista; 10 | using static ChampionBases; 11 | static class Automatic 12 | { 13 | public static void CastR() 14 | { 15 | if (!AutomaticMenu.RAllysave.Enabled || !R.IsReady()) 16 | { 17 | return; 18 | } 19 | var allyR = GameObjects.AllyHeroes.FirstOrDefault(x => HasRBuff(x, R.Range)); 20 | if (allyR == null) 21 | { 22 | return; 23 | } 24 | 25 | if (allyR.DistanceToPlayer() <= R.Range && allyR.HealthPercent <= AutomaticMenu.RAllysave.Value) 26 | { 27 | R.Cast(); 28 | } 29 | } 30 | 31 | public static void CastW() 32 | { 33 | if (!W.IsReady() || GameObjects.Player.IsRecalling()) 34 | { 35 | return; 36 | } 37 | 38 | var DrakePos = new Vector3(9866f, 4414f, -71); 39 | var Baronpos = new Vector3(5007f, 10471f, -71); 40 | if (GameObjects.Player.Position.CountEnemyHeroesInRange(2000f) <= 0) 41 | { 42 | if (AutomaticMenu.WDrake.Enabled) 43 | { 44 | if (GameObjects.Player.Distance(DrakePos) <= W.Range) 45 | { 46 | W.Cast(DrakePos); 47 | } 48 | } 49 | 50 | if (AutomaticMenu.WBaron.Enabled) 51 | { 52 | if (GameObjects.Player.Distance(Baronpos) <= W.Range) 53 | { 54 | W.Cast(Baronpos); 55 | } 56 | } 57 | } 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Modes/Structureclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EnsoulSharp.SDK.MenuUI; 5 | using EzAIO.Bases; 6 | 7 | namespace EzAIO.Champions.Ezreal.Modes 8 | { 9 | using static Ezreal; 10 | using static ChampionBases; 11 | 12 | class Structureclear 13 | { 14 | internal static void CastW() 15 | { 16 | if (!mainMenu["structure"].GetValue("w").Enabled || !W.IsReady()) 17 | { 18 | return; 19 | } 20 | 21 | if (mainMenu["structure"].GetValue("w").Value >= GameObjects.Player.ManaPercent) 22 | { 23 | return; 24 | } 25 | 26 | var safecheck = mainMenu["structure"].GetValue("safe"); 27 | var overrideCheck = mainMenu["structure"].GetValue("allies"); 28 | var alliesCount = GameObjects.AllyHeroes.Count(x => x.IsValidTarget(900, true) && !x.IsMe); 29 | 30 | if (safecheck.Enabled && GameObjects.Player.CountEnemyHeroesInRange(safecheck.Value) != 0 && 31 | (!overrideCheck.Enabled || alliesCount < overrideCheck.Value)) 32 | { 33 | return; 34 | } 35 | 36 | if (safecheck.Enabled && GameObjects.Player.CountEnemyHeroesInRange(safecheck.Value) != 0 && 37 | overrideCheck.Enabled && alliesCount < overrideCheck.Value) 38 | { 39 | return; 40 | } 41 | 42 | var wtarget = GameObjects.EnemyTurrets.FirstOrDefault(x => x.IsValidTarget(W.Range)); 43 | if (wtarget == null) 44 | { 45 | return; 46 | } 47 | 48 | if (!GameObjects.Player.InAutoAttackRange(wtarget)) 49 | { 50 | return; 51 | } 52 | 53 | W.Cast(wtarget.Position); 54 | } 55 | 56 | } 57 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | namespace EzAIO.Champions.Kalista.Modes 5 | { 6 | using static ChampionBases; 7 | using static Damage; 8 | static class Jungleclear 9 | { 10 | public static void CastQ() 11 | { 12 | if (!Configs.Jungleclear.QSliderButton.Enabled || !Q.IsReady()) 13 | { 14 | return; 15 | } 16 | 17 | if (Configs.Jungleclear.QSliderButton.Value >= GameObjects.Player.ManaPercent) 18 | { 19 | return; 20 | } 21 | if (GameObjects.Player.IsDashing()) 22 | { 23 | return; 24 | } 25 | 26 | var qtarget = GameObjects.Jungle.FirstOrDefault(X => X.IsValidTarget(Q.Range)); 27 | if (qtarget == null) 28 | { 29 | return; 30 | } 31 | 32 | var qinput = Q.GetPrediction(qtarget); 33 | if (qinput.Hitchance >= HitChance.High) 34 | { 35 | Q.Cast(qinput.CastPosition); 36 | } 37 | } 38 | 39 | public static void CastE() 40 | { 41 | if (!Configs.Jungleclear.ESliderButton.Enabled || !E.IsReady()) 42 | { 43 | return; 44 | } 45 | 46 | if (Configs.Jungleclear.ESliderButton.Value >= GameObjects.Player.ManaPercent) 47 | { 48 | return; 49 | } 50 | 51 | if (GameObjects.Jungle.Any(x => x.IsValidTarget(E.Range) && 52 | Extension.HasRendBuff(x, E.Range) && 53 | EDamage(x) >= x.Health - 54 | GameObjects.Player.CalculateDamage(x, DamageType.Physical, 1))) 55 | { 56 | E.Cast(); 57 | } 58 | 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Lucian/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Lucian.Configs; 5 | namespace EzAIO.Champions.Lucian.Modes 6 | { 7 | using static ChampionBases; 8 | static class Laneclear 9 | { 10 | public static void CastQ() 11 | { 12 | if (!LaneclearMenu.QSlider.Enabled) 13 | { 14 | return; 15 | } 16 | 17 | if (LaneclearMenu.QSlider.Value >= GameObjects.Player.ManaPercent) 18 | { 19 | return; 20 | } 21 | 22 | var minions = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(Q.Range) && 23 | x.DistanceToPlayer() <= Q.Range).ToList(); 24 | foreach (var minion in minions) 25 | { 26 | if (GameObjects.EnemyMinions.Count(x => Extension.QRectangle(minion).IsInside(x.Position)) >= 27 | LaneclearMenu.QCount.Value) 28 | { 29 | Q.CastOnUnit(minion); 30 | } 31 | } 32 | } 33 | 34 | public static void CastW() 35 | { 36 | if (!LaneclearMenu.WSlider.Enabled) 37 | { 38 | return; 39 | } 40 | 41 | if (LaneclearMenu.WSlider.Value >= GameObjects.Player.ManaPercent) 42 | { 43 | return; 44 | } 45 | 46 | var minions = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(W.Range) && 47 | x.DistanceToPlayer() <= W.Range).ToList(); 48 | var farmLocation = W.GetCircularFarmLocation(minions, W.Width); 49 | if (farmLocation.MinionsHit < LaneclearMenu.WCount.Value) 50 | { 51 | return; 52 | } 53 | 54 | W.Cast(farmLocation.Position); 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Vayne/Modes/Automatic.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Vayne.Configs; 6 | namespace EzAIO.Champions.Vayne.Modes 7 | { 8 | using static ChampionBases; 9 | static class Automatic 10 | { 11 | public static void CastE() 12 | { 13 | if (!AutomaticMenu.EsSliderButton.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | if (AutomaticMenu.EsSliderButton.Value <= GameObjects.Player.HealthPercent) 19 | { 20 | return; 21 | } 22 | 23 | var target = GameObjects.EnemyHeroes.Where(x => x.IsValidTarget(E.Range) && 24 | x.IsMelee && !x.IsInvulnerable) 25 | .MaxBy(x => x.TotalAttackDamage); 26 | 27 | if (target == null) 28 | { 29 | return; 30 | } 31 | 32 | E.CastOnUnit(target); 33 | 34 | } 35 | 36 | public static void SemiE() 37 | { 38 | if (!ComboMenu.ESmiKeybind.Active || !E.IsReady()) 39 | { 40 | return; 41 | } 42 | 43 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(E.Range) && 44 | x.Position.DistanceToPlayer()<550)) 45 | { 46 | var pred = E.GetPrediction(target); 47 | for (var i = 40; i < 425; i += 125) 48 | { 49 | var flags = NavMesh.GetCollisionFlags( 50 | pred.UnitPosition.ToVector2().Extend(GameObjects.Player.Position.ToVector2(), -i).ToVector3()); 51 | if (flags.HasFlag(CollisionFlags.Wall) || flags.HasFlag(CollisionFlags.Building)) 52 | { 53 | E.CastOnUnit(target); 54 | } 55 | } 56 | } 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Modes/JungleClear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EnsoulSharp.SDK.MenuUI; 5 | using EzAIO.Bases; 6 | 7 | namespace EzAIO.Champions.Ezreal.Modes 8 | { 9 | using static Ezreal; 10 | using static ChampionBases; 11 | 12 | class JungleClear 13 | { 14 | internal static void CastQ() 15 | { 16 | if (!mainMenu["Jungleclear"].GetValue("q").Enabled || !Q.IsReady()) 17 | { 18 | return; 19 | } 20 | if (mainMenu["Jungleclear"].GetValue("q").Value >= GameObjects.Player.ManaPercent) 21 | { 22 | return; 23 | } 24 | 25 | var qtarget = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(Q.Range)); 26 | if (qtarget== null) 27 | { 28 | return; 29 | } 30 | 31 | var qinput = Q.GetPrediction(qtarget); 32 | if (qinput.Hitchance >= HitChance.High) 33 | { 34 | Q.Cast(qinput.CastPosition); 35 | } 36 | } 37 | 38 | internal static void CastW() 39 | { 40 | if (!mainMenu["Jungleclear"].GetValue("w").Enabled || !W.IsReady()) 41 | { 42 | return; 43 | } 44 | if (mainMenu["Jungleclear"].GetValue("w").Value >= GameObjects.Player.ManaPercent) 45 | { 46 | return; 47 | } 48 | 49 | var wtarget = GameObjects.JungleLegendary.FirstOrDefault(x => x.IsValidTarget(W.Range)); 50 | if (wtarget == null) 51 | { 52 | return; 53 | } 54 | if(wtarget.Name.Contains("drake") || 55 | wtarget.Name.Contains("baron") || 56 | wtarget.Name.Contains("herald")) 57 | { 58 | return; 59 | } 60 | W.Cast(wtarget.Position); 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Draven.Configs; 5 | namespace EzAIO.Champions.Draven.Modes 6 | { 7 | 8 | using static ChampionBases; 9 | static class Laneclear 10 | { 11 | public static void CastQ() 12 | { 13 | if (!LaneclearMenu.QSliderButton.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | if (Extension.GetNumberAxesActives() >= LaneclearMenu.QAxesSlider.Value) 19 | { 20 | return; 21 | } 22 | 23 | if (LaneclearMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 24 | { 25 | return; 26 | } 27 | 28 | Q.Cast(); 29 | } 30 | 31 | public static void CastW() 32 | { 33 | if (!LaneclearMenu.WSliderButton.Enabled) 34 | { 35 | return; 36 | } 37 | 38 | if (LaneclearMenu.WSliderButton.Value >= GameObjects.Player.ManaPercent) 39 | { 40 | return; 41 | } 42 | 43 | if (GameObjects.EnemyMinions.Count(x => x.IsValidTarget(E.Range)) < LaneclearMenu.WCountSlider.Value) 44 | { 45 | return; 46 | } 47 | 48 | W.Cast(); 49 | } 50 | 51 | public static void CastE() 52 | { 53 | if (!LaneclearMenu.ESliderButton.Enabled) 54 | { 55 | return; 56 | } 57 | 58 | if (LaneclearMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 59 | { 60 | return; 61 | } 62 | 63 | var minions = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(E.Range)); 64 | var farmLine = E.GetCircularFarmLocation(minions, E.Width); 65 | if (farmLine.MinionsHit < LaneclearMenu.ECountSlider.Value) 66 | { 67 | return; 68 | } 69 | 70 | E.Cast(farmLine.Position); 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Lucian/Damage.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | namespace EzAIO.Champions.Lucian 5 | { 6 | using static ChampionBases; 7 | class Damage 8 | { 9 | private static readonly float[] QBaseDamage = {0f, 95f, 130f, 165f, 200f, 235f, 235f}; 10 | private static readonly float[] QMultiplier = {0f, .6f, .75f, .90f, 1.05f, 1.20f, 1.20f}; 11 | private static readonly float[] WBaseDamage = {0f,.75f, 1.1f, 1.45f, 1.8f, 2.15f, 2.15f}; 12 | private static readonly float[] RBaseDamage = {0f, 20f, 40f, 60f, 60f}; 13 | private static readonly float[] RShots = {0, 22, 28, 34, 34}; 14 | 15 | public static float QDamage(AIBaseClient target) 16 | { 17 | var qLevel = Q.Level; 18 | var qBaseDamage = QBaseDamage[qLevel] + 19 | QMultiplier[qLevel] + GameObjects.Player.GetBonusPhysicalDamage(); 20 | return (float)GameObjects.Player.CalculateDamage(target, DamageType.Physical, qBaseDamage); 21 | } 22 | 23 | public static float WDamage(AIBaseClient target) 24 | { 25 | var wLevel = W.Level; 26 | var wBaseDamage = WBaseDamage[wLevel] + 27 | .9f * GameObjects.Player.TotalMagicalDamage; 28 | return (float)GameObjects.Player.CalculateDamage(target, DamageType.Magical, wBaseDamage); 29 | } 30 | 31 | public static float RDamage(AIBaseClient target) 32 | { 33 | var rLevel = R.Level; 34 | var rBaseDamage = RBaseDamage[rLevel] + 35 | .25f * GameObjects.Player.TotalAttackDamage + 36 | .1 + GameObjects.Player.TotalMagicalDamage; 37 | rBaseDamage *= RShots[rLevel]; 38 | if (target is AIMinionClient minion && minion.IsMinion()) 39 | { 40 | rBaseDamage *= 2; 41 | } 42 | 43 | return (float)GameObjects.Player.CalculateDamage(target, DamageType.Physical, rBaseDamage); 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Kaisa.Configs; 6 | namespace EzAIO.Champions.Kaisa.Modes 7 | { 8 | using static ChampionBases; 9 | static class Jungleclear 10 | { 11 | public static void CastQ() 12 | { 13 | if (!JungleclearMenu.QSliderButton.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | if (JungleclearMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 19 | { 20 | return; 21 | } 22 | 23 | if (GameObjects.Jungle.Any(x => x.IsValidTarget(Q.Range))) 24 | { 25 | Q.Cast(); 26 | } 27 | 28 | } 29 | 30 | public static void CastW(AfterAttackEventArgs args) 31 | { 32 | if (!JungleclearMenu.WSliderButton.Enabled) 33 | { 34 | return; 35 | } 36 | 37 | if (JungleclearMenu.WSliderButton.Value >= GameObjects.Player.ManaPercent) 38 | { 39 | return; 40 | } 41 | 42 | var target = args.Target as AIMinionClient; 43 | if (target == null) 44 | { 45 | return; 46 | } 47 | 48 | if (target.GetBuffCount("kaisapassivemarker") != 3) 49 | { 50 | return; 51 | } 52 | 53 | W.Cast(target.Position); 54 | } 55 | 56 | public static void CastE() 57 | { 58 | if (!JungleclearMenu.ESliderButton.Enabled) 59 | { 60 | return; 61 | } 62 | 63 | if (JungleclearMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 64 | { 65 | return; 66 | } 67 | 68 | var target = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(Q.Range)); 69 | if (target == null) 70 | { 71 | return; 72 | } 73 | E.Cast(); 74 | } 75 | } 76 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Ashe.Configs; 5 | using static EzAIO.Champions.Ashe.Extension; 6 | namespace EzAIO.Champions.Ashe.Modes 7 | { 8 | using static ChampionBases; 9 | static class Combo 10 | { 11 | public static void CastQ() 12 | { 13 | if (!ComboMenu.QBool.Enabled) 14 | { 15 | return; 16 | } 17 | 18 | var qtarget = Q.GetTarget(); 19 | if (qtarget == null) 20 | { 21 | return; 22 | } 23 | 24 | Q.Cast(); 25 | } 26 | 27 | public static void CastW() 28 | { 29 | if (!ComboMenu.WBool.Enabled) 30 | { 31 | return; 32 | } 33 | 34 | if (ComboMenu.DontWBool.Enabled && IsQActive()) 35 | { 36 | return; 37 | } 38 | 39 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(W.Range))) 40 | { 41 | if (target == null) 42 | { 43 | return; 44 | } 45 | 46 | var winput = W.GetPrediction(target); 47 | if (winput.Hitchance >= HitChance.High && W.IsInRange(winput.CastPosition)) 48 | { 49 | W.Cast(winput.CastPosition); 50 | } 51 | } 52 | } 53 | 54 | public static void SemiRCast() 55 | { 56 | if (!ComboMenu.RSemiKeyBind.Active) 57 | { 58 | return; 59 | } 60 | 61 | var rtarget = TargetSelector.GetTarget(AutomaticMenu.RrangeSlider.Value,DamageType.Mixed); 62 | if (rtarget == null) 63 | { 64 | return; 65 | } 66 | 67 | var rinput = R.GetPrediction(rtarget); 68 | if (rinput.Hitchance >= HitChance.High && R.IsInRange(rinput.CastPosition)) 69 | { 70 | R.Cast(rinput.CastPosition); 71 | } 72 | } 73 | } 74 | } -------------------------------------------------------------------------------- /EzAIO/Utilities/SupportedChamps.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Program; 3 | namespace EzAIO 4 | { 5 | class SupportedChamps 6 | { 7 | private static Menu champs; 8 | public SupportedChamps() 9 | { 10 | Initialize(); 11 | } 12 | public static void Initialize() 13 | { 14 | champs = new Menu("AIOSupport", "Supported Champs"); 15 | var TOPMenu = new Menu("TOP", "TOP") 16 | { 17 | new MenuSeparator("sep1", "Vayne") 18 | }; 19 | var JGMenu = new Menu("JG", "Jungle") 20 | { 21 | new MenuSeparator("sep1", "Twicth") 22 | }; 23 | var MIDMEnu = new Menu("MID", "MID") 24 | { 25 | new MenuSeparator("sep1", "Katarina"), 26 | new MenuSeparator("sep2", "Lucian") 27 | }; 28 | var ADCMenu = new Menu("ADC", "ADC") 29 | { 30 | new MenuSeparator("sep11","Ashe"), 31 | new MenuSeparator("sep7","Draven"), 32 | new MenuSeparator("sep1", "Ezreal"), 33 | new MenuSeparator("sep10", "Jhin"), 34 | new MenuSeparator("sep8","Jinx"), 35 | new MenuSeparator("sep2", "Kaisa"), 36 | new MenuSeparator("sep3", "Kalista"), 37 | new MenuSeparator("sep4", "Lucian"), 38 | new MenuSeparator("sep9", "Tristana"), 39 | new MenuSeparator("sep5", "Twitch"), 40 | new MenuSeparator("sep6", "Vayne") 41 | }; 42 | var SUPPMenu = new Menu("SUPP", "SUP") 43 | { 44 | new MenuSeparator("sep1", "Not yet :p") 45 | }; 46 | var menuList = new[] 47 | { 48 | TOPMenu, 49 | JGMenu, 50 | MIDMEnu, 51 | ADCMenu, 52 | SUPPMenu 53 | }; 54 | foreach (var menu in menuList) 55 | { 56 | champs.Add(menu); 57 | } 58 | 59 | util.Add(champs); 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /EzAIO/Bases/DrawingBase.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EnsoulSharp.SDK.Utility; 4 | using static EzAIO.Program; 5 | using EnsoulSharp.SDK.MenuUI; 6 | using EnsoulSharp.SDK.Rendering; 7 | using SharpDX; 8 | using Color = SharpDX.Color; 9 | 10 | namespace EzAIO.Bases 11 | { 12 | 13 | abstract class DrawingBase 14 | { 15 | protected DrawingBase() 16 | { 17 | //Drawing.OnDraw += OnDraw; 18 | } 19 | protected static Spell[] Spells { get; set; } 20 | 21 | public static class DrawMenu 22 | { 23 | public static readonly MenuBool QBool = 24 | new MenuBool($"{GameObjects.Player.CharacterName}.Qr", "Draw Q range", false); 25 | public static readonly MenuBool WBool = 26 | new MenuBool($"{GameObjects.Player.CharacterName}.Wr", "Draw W range", false); 27 | public static readonly MenuBool EBool = 28 | new MenuBool($"{GameObjects.Player.CharacterName}.Er", "Draw E range", false); 29 | public static readonly MenuBool RBool = 30 | new MenuBool($"{GameObjects.Player.CharacterName}.Rr", "Draw R range", false); 31 | } 32 | 33 | public static MenuBool getMenuBoolOf(SpellSlot slot) 34 | { 35 | MenuBool menuBool = null; 36 | switch (slot) 37 | { 38 | case SpellSlot.Q: 39 | menuBool = DrawMenu.QBool; 40 | break; 41 | case SpellSlot.W: 42 | menuBool = DrawMenu.WBool; 43 | break; 44 | case SpellSlot.E: 45 | menuBool = DrawMenu.EBool; 46 | break; 47 | case SpellSlot.R: 48 | menuBool = DrawMenu.RBool; 49 | break; 50 | } 51 | 52 | return menuBool; 53 | } 54 | 55 | public static void DrawCircle(Vector3 pos, float radius, System.Drawing.Color color) 56 | { 57 | CircleRender.Draw(pos,radius,color.ToSharpDxColor()); 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Lucian/Modes/Extra.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using SharpDX; 5 | using static EzAIO.Champions.Lucian.Configs; 6 | namespace EzAIO.Champions.Lucian.Modes 7 | { 8 | using static ChampionBases; 9 | static class Extra 10 | { 11 | public static bool CastE() 12 | { 13 | switch (ComboMenu.EMode.Index) 14 | { 15 | case 0: 16 | return DynamicCastE(); 17 | case 1: 18 | return E.Cast( 19 | GameObjects.Player.Position.Extend(Game.CursorPos, GameObjects.Player.BoundingRadius)); 20 | case 2: 21 | return E.Cast(GameObjects.Player.Position.Extend(Game.CursorPos, 425f)); 22 | } 23 | 24 | return false; 25 | } 26 | 27 | public static bool CastQ(AfterAttackEventArgs args) 28 | { 29 | if (!ComboMenu.QBool.Enabled) 30 | { 31 | return false; 32 | } 33 | 34 | var target = args.Target as AIHeroClient; 35 | if (target == null) 36 | { 37 | return false; 38 | } 39 | 40 | return Q.CastOnUnit(target); 41 | } 42 | 43 | public static bool CastW(AfterAttackEventArgs args) 44 | { 45 | if (!ComboMenu.WBool.Enabled) 46 | { 47 | return false; 48 | } 49 | 50 | return W.Cast(args.Target.Position); 51 | } 52 | 53 | private static bool DynamicCastE() 54 | { 55 | Vector3 point; 56 | if (GameObjects.Player.Position.IsUnderEnemyTurret() || 57 | GameObjects.Player.Distance(Game.CursorPos) < 58 | GameObjects.Player.GetRealAutoAttackRange()) 59 | { 60 | point = GameObjects.Player.Position.Extend(Game.CursorPos, GameObjects.Player.BoundingRadius); 61 | } 62 | else 63 | { 64 | point = GameObjects.Player.Position.Extend(Game.CursorPos, 475f); 65 | } 66 | 67 | return E.Cast(point); 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Katarina/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Katarina.Configs; 6 | namespace EzAIO.Champions.Katarina.Modes 7 | { 8 | using static ChampionBases; 9 | static class Jungleclear 10 | { 11 | public static void CastQ() 12 | { 13 | if (!JungleclearMenu.QBool.Enabled || !Q.IsReady()) 14 | { 15 | return; 16 | } 17 | 18 | var mob = GameObjects.Jungle.Where(x => x.IsValidTarget(Q.Range)).MaxBy(X => X.MaxHealth); 19 | if (mob == null) 20 | { 21 | return; 22 | } 23 | 24 | Q.CastOnUnit(mob); 25 | } 26 | 27 | public static void CastE() 28 | { 29 | if (Extension.eDelay > Game.Time) 30 | { 31 | return; 32 | } 33 | 34 | if (!JungleclearMenu.EBool.Enabled || !E.IsReady()) 35 | { 36 | return; 37 | } 38 | var mob = GameObjects.Jungle.Where(x => x.IsValidTarget(E.Range)).MaxBy(X => X.MaxHealth); 39 | if (mob == null) 40 | { 41 | return; 42 | } 43 | 44 | var dagger = Extension.Daggers.FirstOrDefault( 45 | x => x.Distance(mob) < 450 && x.DistanceToPlayer() <= E.Range + 50); 46 | if (dagger != null) 47 | { 48 | E.Cast(dagger.Position.Extend(mob.Position, 200)); 49 | } 50 | else 51 | { 52 | E.Cast(mob.Position.Extend(GameObjects.Player.Position, -50)); 53 | } 54 | } 55 | 56 | public static void CastW() 57 | { 58 | if (!JungleclearMenu.WBool.Enabled || !W.IsReady()) 59 | { 60 | return; 61 | } 62 | var mob = GameObjects.Jungle.Where(x => x.IsValidTarget(W.Range)).MaxBy(X => X.MaxHealth); 63 | 64 | if (mob == null) 65 | { 66 | return; 67 | } 68 | 69 | if (W.Cast(mob.Position)) 70 | { 71 | Extension.eDelay = Game.Time + .75f; 72 | } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/DamageIndicator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using EnsoulSharp.SDK; 4 | using SharpDX; 5 | using static EzAIO.Program; 6 | using static EzAIO.Champions.Twitch.Configs; 7 | using static EzAIO.Champions.Twitch.Damage; 8 | namespace EzAIO.Champions.Twitch 9 | { 10 | static class DamageIndicator 11 | { 12 | public static void EChamps() 13 | { 14 | if (!DrawConfig.Edmg.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | foreach (var target in GameObjects.EnemyHeroes.Where(x => x.IsVisible && 20 | !x.IsDead && 21 | Extension.HasPoisonEffect(x, 15000f))) 22 | { 23 | var targetpos = target.HPBarPosition; 24 | var DMGporcent = MathUtil.Clamp((EDamage(target) / target.Health + target.AllShield) * 100, 0,100); 25 | if (DMGporcent != 0) 26 | { 27 | DrawText(TextBold,Math.Round(DMGporcent).ToString()+"%",targetpos.X+50,targetpos.Y-70,(DMGporcent>=100) ? SharpDX.Color.Cyan : SharpDX.Color.White); 28 | } 29 | } 30 | } 31 | 32 | public static void EMobs() 33 | { 34 | if (!DrawConfig.EDmgJG.Enabled) 35 | { 36 | return; 37 | } 38 | foreach (var mobs in GameObjects.Jungle.Where(x => x.IsVisible && 39 | !x.IsDead && Extension.HasPoisonEffect(x, 15000f))) 40 | { 41 | if (mobs == null) 42 | { 43 | return; 44 | } 45 | var mobpos = mobs.HPBarPosition; 46 | var DMGporcent = MathUtil.Clamp((EDamage(mobs) / mobs.Health + mobs.PhysicalShield) * 100, 0, 100); 47 | if (DMGporcent != 0) 48 | { 49 | DrawText(TextBold,Math.Round(DMGporcent).ToString()+"%",mobpos.X+50,mobpos.Y-70,(DMGporcent>=100) ? SharpDX.Color.Cyan : SharpDX.Color.White); 50 | } 51 | 52 | } 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Twitch.Configs; 5 | namespace EzAIO.Champions.Twitch.Modes 6 | { 7 | using static ChampionBases; 8 | static class Combo 9 | { 10 | public static void CastQ() 11 | { 12 | if (ComboMenu.QList.Index != 1 || !Q.IsReady()) 13 | { 14 | return; 15 | } 16 | 17 | var target = GameObjects.EnemyHeroes.Where(x => x.InRange(600)).ToList(); 18 | if (target == null) 19 | { 20 | return; 21 | } 22 | 23 | Q.Cast(); 24 | } 25 | 26 | public static void CastQ(BeforeAttackEventArgs args) 27 | { 28 | if (ComboMenu.QList.Index != 0 || !Q.IsReady()) 29 | { 30 | return; 31 | } 32 | 33 | Q.Cast(); 34 | } 35 | 36 | public static void CastW() 37 | { 38 | if (!ComboMenu.WList.Enabled || !W.IsReady()) 39 | { 40 | return; 41 | } 42 | 43 | var wtaregt = W.GetTarget(); 44 | if (wtaregt == null) 45 | { 46 | return; 47 | } 48 | 49 | if (ComboMenu.WBool.Enabled && GameObjects.Player.IsUnderEnemyTurret()) 50 | { 51 | return; 52 | } 53 | 54 | if (ComboMenu.WRBool.Enabled && Extension.HasFullEffect(GameObjects.Player)) 55 | { 56 | return; 57 | } 58 | 59 | var winput = W.GetPrediction(wtaregt); 60 | if (winput.Hitchance >= HitChance.High) 61 | { 62 | W.Cast(winput.UnitPosition); 63 | } 64 | } 65 | 66 | public static void CastR() 67 | { 68 | if (!ComboMenu.RSliderButton.Enabled && !R.IsReady()) 69 | { 70 | return; 71 | } 72 | 73 | if (GameObjects.Player.CountEnemyHeroesInRange(R.Range) >= ComboMenu.RSliderButton.Value) 74 | { 75 | R.Cast(); 76 | } 77 | } 78 | } 79 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Lucian/Modes/Jungleclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Lucian.Configs; 6 | namespace EzAIO.Champions.Lucian.Modes 7 | { 8 | using static ChampionBases; 9 | static class Jungleclear 10 | { 11 | public static bool CastQ(AfterAttackEventArgs args) 12 | { 13 | if (!JungleclearMenu.QSlider.Enabled) 14 | { 15 | return false; 16 | } 17 | 18 | if (JungleclearMenu.QSlider.Value >= GameObjects.Player.ManaPercent) 19 | { 20 | return false; 21 | } 22 | 23 | var qtarget = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(Q.Range)); 24 | if (qtarget == null) 25 | { 26 | return false; 27 | } 28 | 29 | return Q.CastOnUnit(qtarget); 30 | } 31 | 32 | public static bool CastW(AfterAttackEventArgs args) 33 | { 34 | if (!JungleclearMenu.WSlider.Enabled) 35 | { 36 | return false; 37 | } 38 | 39 | if (JungleclearMenu.WSlider.Value >= GameObjects.Player.ManaPercent) 40 | { 41 | return false; 42 | } 43 | 44 | var wtarget = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(W.Range)); 45 | if (wtarget == null) 46 | { 47 | return false; 48 | } 49 | return W.Cast(args.Target.Position); 50 | } 51 | 52 | public static bool CastE() 53 | { 54 | if (!JungleclearMenu.ESlider.Enabled) 55 | { 56 | return false; 57 | } 58 | 59 | if (JungleclearMenu.ESlider.Value >= GameObjects.Player.ManaPercent) 60 | { 61 | return false; 62 | } 63 | 64 | var etarget = GameObjects.Jungle.FirstOrDefault(x => x.IsValidTarget(E.Range)); 65 | if (etarget == null) 66 | { 67 | return false ; 68 | } 69 | return E.Cast(GameObjects.Player.Position.Extend(Game.CursorPos, GameObjects.Player.BoundingRadius)); 70 | } 71 | } 72 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Jinx.Configs; 5 | using static EzAIO.Champions.Jinx.Jinx; 6 | using static EzAIO.Champions.Jinx.Damage; 7 | namespace EzAIO.Champions.Jinx.Modes 8 | { 9 | using static ChampionBases; 10 | static class Laneclear 11 | { 12 | public static void CastQ() 13 | { 14 | if (!LaneclearMenu.QSliderButton.Enabled || !LaneclearMenu.SwapBool.Enabled) 15 | { 16 | return; 17 | } 18 | if (LaneclearMenu.QSliderButton.Value > Player.ManaPercent) 19 | { 20 | if (Extension.ActivatedRockets) 21 | { 22 | Q.Cast(); 23 | } 24 | return; 25 | } 26 | 27 | var minion = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(Extension.RocketRange) && 28 | Player.GetAutoAttackDamage(x)>=x.Health) 29 | .OrderBy(x => x.MaxHealth).ThenByDescending(x => x.Health).FirstOrDefault(); 30 | if (minion == null || !minion.IsValid) 31 | { 32 | return; 33 | } 34 | 35 | if (Extension.Swap(minion)) 36 | { 37 | Q.Cast(); 38 | } 39 | } 40 | 41 | public static void CastQAOE() 42 | { 43 | if (!LaneclearMenu.QSliderButton.Enabled) 44 | { 45 | return; 46 | } 47 | if (LaneclearMenu.QSliderButton.Value > Player.ManaPercent) 48 | { 49 | if (Extension.ActivatedRockets) 50 | { 51 | Q.Cast(); 52 | } 53 | return; 54 | } 55 | 56 | foreach (var minion in GameObjects.EnemyMinions.Where(x=>x.IsValidTarget(Extension.RocketRange))) 57 | { 58 | if (Extension.KillableMinionsCount(minion) < LaneclearMenu.QCountSlider.Value) 59 | { 60 | continue; 61 | } 62 | 63 | if (!Extension.ActivatedRockets) 64 | { 65 | Q.Cast(); 66 | return; 67 | } 68 | } 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Extension.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using EnsoulSharp; 4 | using EnsoulSharp.SDK; 5 | using SharpDX; 6 | using static EzAIO.Bases.ChampionBases; 7 | 8 | namespace EzAIO.Champions.Draven 9 | { 10 | public class Extension 11 | { 12 | public static readonly List Marks = new List(); 13 | 14 | public class Mark 15 | { 16 | public Mark(GameObject obj, int newtworkId, Vector3 pos, int endTime) 17 | { 18 | this.Object = obj; 19 | this.NewtworkId = newtworkId; 20 | this.Pos = pos; 21 | this.EndTime = endTime; 22 | } 23 | public GameObject Object { get; } 24 | public int NewtworkId { get; } 25 | public Vector3 Pos { get; } 26 | public int EndTime { get; } 27 | } 28 | 29 | public static readonly float MarksBoudingRadius = 150 - GameObjects.Player.BoundingRadius; 30 | public static readonly float[] WBoost = {0f, 1.4f, 1.45f, 1.5f, 1.55f, 1.6f, 1.6f}; 31 | public static float eDelay = 0f; 32 | 33 | public static int GetNumberAxesActives() 34 | { 35 | var buffCount = (int) GameObjects.Player.GetBuffCount("DravenSpinningAttack"); 36 | var markCount = Marks.Count(); 37 | var flyingAxes = GameObjects.AllGameObjects.Count(x => 38 | x.IsValid && x is MissileClient && x.Name.Contains("DravenSpinningAttack")); 39 | return buffCount + markCount + flyingAxes; 40 | } 41 | 42 | public static bool IsMarkNormallyCatchable(Mark mark) 43 | { 44 | return GameObjects.Player.MoveSpeed * (mark.EndTime - Game.Time) >= mark.Object.DistanceToPlayer(); 45 | } 46 | 47 | public static bool IsMarkBoostedCatchable(Mark mark) 48 | { 49 | var boosSpeed = GameObjects.Player.MoveSpeed * WBoost[W.Level]; 50 | return boosSpeed * (mark.EndTime - Game.Time) >= mark.Object.DistanceToPlayer(); 51 | } 52 | 53 | public static bool HasAxeInHand() 54 | { 55 | return GameObjects.Player.HasBuff("DravenSpinningAttack"); 56 | } 57 | 58 | public static bool CanCatchAxe() 59 | { 60 | return Marks.Any(x => x.Object.DistanceToPlayer() < MarksBoudingRadius); 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Menus.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Champions.Ashe.Configs; 3 | using static EzAIO.Bases.DrawingBase; 4 | using static EzAIO.Champions.Ashe.Ashe; 5 | 6 | namespace EzAIO.Champions.Ashe 7 | { 8 | class Menus 9 | { 10 | public Menus() 11 | { 12 | Initialize(); 13 | } 14 | public static void Initialize() 15 | { 16 | var automaticMenu = new Menu("Automatic", "Automatic") 17 | { 18 | AutomaticMenu.Rinmobile, 19 | AutomaticMenu.RrangeSlider, 20 | AutomaticMenu.NoEnemiesSliderButton 21 | }; 22 | var comboMenu = new Menu("Combo", "Combo") 23 | { 24 | ComboMenu.QBool, 25 | ComboMenu.WBool, 26 | ComboMenu.RSemiKeyBind, 27 | new Menu("sep", "W Customization") 28 | { 29 | ComboMenu.DontWBool 30 | } 31 | }; 32 | var harassMenu = new Menu("Harass", "Harass") 33 | { 34 | HarassMenu.QSliderButton, 35 | HarassMenu.WSliderButton 36 | }; 37 | var killstealMenu = new Menu("Killsteal", "Kill Steal") 38 | { 39 | KillstealMenu.WBool, 40 | KillstealMenu.RBool 41 | }; 42 | var laneclearMenu = new Menu("Laneclear", "Lane Clear") 43 | { 44 | LaneclearMenu.QSliderButton 45 | }; 46 | var jungleclearMenu = new Menu("Jungleclear", "Jungle Clear") 47 | { 48 | JungleclearMenu.QSliderButton, 49 | JungleclearMenu.WSliderButton 50 | }; 51 | var drawMenu = new Menu("Draw", "Draw") 52 | { 53 | DrawMenu.WBool, 54 | DrawMenu.EBool, 55 | DrawMenu.RBool 56 | }; 57 | var menuList = new[] 58 | { 59 | automaticMenu, 60 | comboMenu, 61 | harassMenu, 62 | killstealMenu, 63 | laneclearMenu, 64 | jungleclearMenu, 65 | drawMenu 66 | }; 67 | foreach (var menu in menuList) 68 | { 69 | mainMenu.Add(menu); 70 | } 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Ashe.Configs; 5 | using static EzAIO.Champions.Ashe.Ashe; 6 | using static EzAIO.Champions.Ashe.Damage; 7 | namespace EzAIO.Champions.Ashe.Modes 8 | { 9 | using static ChampionBases; 10 | static class Killsteal 11 | { 12 | public static void CastW() 13 | { 14 | if (!KillstealMenu.WBool.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(W.Range) && 20 | WDamage(x)>=x.Health-Player.CalculateDamage(x,DamageType.Physical,1) && 21 | !x.IsInvulnerable)) 22 | { 23 | if (target.DistanceToPlayer() <= Player.GetRealAutoAttackRange()) 24 | { 25 | return; 26 | } 27 | var winpput = W.GetPrediction(target); 28 | if (winpput.Hitchance >= HitChance.High && W.IsInRange(winpput.CastPosition)) 29 | { 30 | W.Cast(winpput.CastPosition); 31 | } 32 | } 33 | } 34 | 35 | public static void CastR() 36 | { 37 | if (!KillstealMenu.RBool.Enabled) 38 | { 39 | return; 40 | } 41 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(AutomaticMenu.RrangeSlider.Value) && 42 | RDamage(x)>=x.Health && 43 | !x.IsInvulnerable)) 44 | { 45 | if (KillstealMenu.WBool.Enabled && WDamage(target) >= target.Health && target.InAutoAttackRange() && W.IsReady()) 46 | { 47 | return; 48 | } 49 | if (target.DistanceToPlayer() <= Player.GetRealAutoAttackRange()) 50 | { 51 | return; 52 | } 53 | var rinput = W.GetPrediction(target); 54 | if (rinput.Hitchance >= HitChance.High && W.IsInRange(rinput.CastPosition)) 55 | { 56 | R.Cast(rinput.CastPosition); 57 | } 58 | } 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Lucian/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Lucian.Configs; 6 | namespace EzAIO.Champions.Lucian.Modes 7 | { 8 | using static ChampionBases; 9 | static class Combo 10 | { 11 | public static void CastE() 12 | { 13 | if (!ComboMenu.Estart.Enabled || 14 | GameObjects.Player.Distance(Game.CursorPos) <= GameObjects.Player.GetRealAutoAttackRange()) 15 | { 16 | return; 17 | } 18 | 19 | var etarget = E.GetTarget(); 20 | if (etarget == null || 21 | etarget.IsInvulnerable || 22 | etarget.DistanceToPlayer() <= GameObjects.Player.GetRealAutoAttackRange(etarget)) 23 | { 24 | return; 25 | } 26 | 27 | var posAfterE = GameObjects.Player.Position.Extend(Game.CursorPos, 425f); 28 | if (posAfterE.IsUnderEnemyTurret() || 29 | posAfterE.CountEnemyHeroesInRange(1000f) >= 3 || 30 | etarget.Distance(posAfterE) >= GameObjects.Player.GetRealAutoAttackRange()) 31 | { 32 | return; 33 | } 34 | 35 | E.Cast(posAfterE); 36 | } 37 | 38 | public static void CastR() 39 | { 40 | if (Q.IsReady() || W.IsReady() || E.IsReady() || Extension.IsCulling()) 41 | { 42 | return; 43 | } 44 | 45 | var rtarget = GameObjects.EnemyHeroes.Where(x => 46 | x.IsValidTarget(R.Range) && 47 | !x.IsInvulnerable).MinBy(o=>o.Health); 48 | if (rtarget == null || 49 | Extension.HasPassive() && 50 | rtarget.DistanceToPlayer() <= GameObjects.Player.GetRealAutoAttackRange(rtarget)) 51 | { 52 | return; 53 | } 54 | 55 | if (ComboMenu.Rbool.Enabled) 56 | { 57 | R.Cast(rtarget); 58 | } 59 | } 60 | 61 | public static void SemiR() 62 | { 63 | if (!ComboMenu.RSemi.Active || !R.IsReady()) 64 | { 65 | return; 66 | } 67 | 68 | var rtraget = R.GetTarget(); 69 | if (rtraget == null) 70 | { 71 | return; 72 | } 73 | 74 | R.Cast(rtraget.Position); 75 | } 76 | } 77 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Jinx.Configs; 5 | using static EzAIO.Champions.Jinx.Jinx; 6 | using static EzAIO.Champions.Jinx.Damage; 7 | namespace EzAIO.Champions.Jinx.Modes 8 | { 9 | using static ChampionBases; 10 | static class Killsteal 11 | { 12 | public static void CastW() 13 | { 14 | if (!KillstealMenu.WSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | if (Player.CountEnemyHeroesInRange(Extension.RocketRange) < KillstealMenu.WSliderButton.Value) 19 | { 20 | return; 21 | } 22 | 23 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(W.Range) && 24 | WDamage(x)>=x.Health-Player.CalculateDamage(x,DamageType.Physical,1) && 25 | !x.IsInvulnerable)) 26 | { 27 | var winput = W.GetPrediction(target); 28 | if (winput.Hitchance >= HitChance.High && W.IsInRange(winput.CastPosition)) 29 | { 30 | W.Cast(winput.CastPosition); 31 | } 32 | } 33 | } 34 | 35 | public static void CastR() 36 | { 37 | if (!KillstealMenu.RSliderButton.Enabled) 38 | { 39 | return; 40 | } 41 | if (Player.CountEnemyHeroesInRange(Extension.RocketRange) > KillstealMenu.RSliderButton.Value) 42 | { 43 | return; 44 | } 45 | 46 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(ComboMenu.RSliderRange.Value) && 47 | RDamage(x)>=x.Health-Player.CalculateDamage(x,DamageType.Physical,1) && 48 | !x.IsInvulnerable)) 49 | { 50 | if (W.IsReady() && WDamage(target) >= target.Health) 51 | { 52 | return; 53 | } 54 | 55 | var rinput = R.GetPrediction(target); 56 | if (rinput.Hitchance >= HitChance.High && R.IsInRange(rinput.CastPosition) && rinput.CollisionObjects.Any(x=>x.IsEnemy)) 57 | { 58 | R.Cast(rinput.CastPosition); 59 | } 60 | } 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | namespace EzAIO.Champions.Kalista.Modes 6 | { 7 | using static Configs; 8 | using static ChampionBases; 9 | using static Damage; 10 | static class Harass 11 | { 12 | public static void CastQ() 13 | { 14 | if (!HarassMenu.QSliderButton.Enabled || !Q.IsReady()) 15 | { 16 | return; 17 | } 18 | 19 | if (HarassMenu.QSliderButton.Value >= GameObjects.Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | if (GameObjects.Player.IsDashing()) 25 | { 26 | return; 27 | } 28 | 29 | var qtarget = TargetSelector.GetTarget(Q.Range,DamageType.Physical); 30 | if (qtarget == null) 31 | { 32 | return; 33 | } 34 | 35 | var qinput = Q.GetPrediction(qtarget); 36 | if (qinput.Hitchance >= HitChance.High) 37 | { 38 | Q.Cast(qinput.CastPosition); 39 | } 40 | } 41 | 42 | public static void CastE() 43 | { 44 | if (!HarassMenu.ESliderButton.Enabled || !E.IsReady()) 45 | { 46 | return; 47 | } 48 | 49 | if (HarassMenu.ESliderButton.Value >= GameObjects.Player.ManaPercent) 50 | { 51 | return; 52 | } 53 | foreach (var enemy in GameObjects.EnemyHeroes.Where(x => 54 | x.IsValidTarget(E.Range) && Extension.HasRendBuff(x, E.Range))) 55 | { 56 | if (enemy == null) 57 | { 58 | return; 59 | } 60 | 61 | foreach (var minion in GameObjects.EnemyMinions.Where(z => 62 | z.IsValidTarget(E.Range) && Extension.HasRendBuff(z, E.Range))) 63 | { 64 | if (minion == null) 65 | { 66 | return; 67 | } 68 | 69 | if (!GameObjects.Player.InAutoAttackRange(enemy) && EDamage(minion) >= 70 | minion.Health - GameObjects.Player.CalculateDamage(minion, DamageType.Physical, 1)) 71 | { 72 | E.Cast(); 73 | } 74 | } 75 | } 76 | } 77 | } 78 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ashe/Configs.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | 3 | namespace EzAIO.Champions.Ashe 4 | { 5 | public static class Configs 6 | { 7 | public static class AutomaticMenu 8 | { 9 | public static readonly MenuBool Rinmobile = 10 | new MenuBool("rInmobile", "Auto R to Inmobile targets",false); 11 | 12 | public static readonly MenuSlider RrangeSlider = 13 | new MenuSlider("rRange", "R custom Range", 1300, 1000, 4000); 14 | 15 | public static readonly MenuSliderButton NoEnemiesSliderButton = 16 | new MenuSliderButton("rEnemies", "Don't R if X Enemies is in W range", 1, 0, 6); 17 | } 18 | public static class ComboMenu 19 | { 20 | public static readonly MenuBool QBool = 21 | new MenuBool("q", "Use Q"); 22 | 23 | public static readonly MenuBool WBool = 24 | new MenuBool("w", "Use W"); 25 | 26 | public static readonly MenuKeyBind RSemiKeyBind = 27 | new MenuKeyBind("rSemi", "R Semi-Automatic Cast", Keys.T, KeyBindType.Press); 28 | 29 | public static readonly MenuBool DontWBool = 30 | new MenuBool("dontW", "Don't cast W while Q is actvie"); 31 | } 32 | public static class HarassMenu 33 | { 34 | public static readonly MenuSliderButton QSliderButton = 35 | new MenuSliderButton("q", "Use Q | If Mana >= x%", 50, 1, 100); 36 | 37 | public static readonly MenuSliderButton WSliderButton = 38 | new MenuSliderButton("w", "Use W | If Mana >= x%", 50, 1, 100); 39 | } 40 | public static class KillstealMenu 41 | { 42 | public static readonly MenuBool WBool = 43 | new MenuBool("w", "Use W"); 44 | 45 | public static readonly MenuBool RBool = 46 | new MenuBool("r", "Use R", false); 47 | } 48 | public static class LaneclearMenu 49 | { 50 | public static readonly MenuSliderButton QSliderButton = 51 | new MenuSliderButton("q", "Use Q | If Mana >= x%",50,1,100); 52 | } 53 | public static class JungleclearMenu 54 | { 55 | public static readonly MenuSliderButton QSliderButton = 56 | new MenuSliderButton("q", "Use Q | If Mana >= x%", 30, 1, 100); 57 | 58 | public static readonly MenuSliderButton WSliderButton = 59 | new MenuSliderButton("w", "Use W | If Mana >= x%", 30, 1, 100); 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Twitch/Menus.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Champions.Twitch.Configs; 3 | using static EzAIO.Bases.DrawingBase; 4 | using static EzAIO.Champions.Twitch.Twitch; 5 | namespace EzAIO.Champions.Twitch 6 | { 7 | class Menus 8 | { 9 | public Menus() 10 | { 11 | Initialize(); 12 | } 13 | 14 | public static void Initialize() 15 | { 16 | var automaticMenu = new Menu("Automatic", "Automatic") 17 | { 18 | AutomaticMenu.Qsilent, 19 | new MenuSeparator("info","^ Twitch back in invisible.") 20 | }; 21 | var comboMenu = new Menu("Combo", "Combo") 22 | { 23 | ComboMenu.QList, 24 | ComboMenu.WList, 25 | ComboMenu.WBool, 26 | ComboMenu.WRBool, 27 | ComboMenu.RSliderButton 28 | }; 29 | var harassMenu = new Menu("Harass", "Harass") 30 | { 31 | HarassMenu.WSliderButton, 32 | HarassMenu.ESliderButton, 33 | HarassMenu.EBool 34 | }; 35 | var killstealMenu = new Menu("Killsteal", "Kill Steal") 36 | { 37 | KillstealMenu.EBool 38 | }; 39 | var laneclearMenu = new Menu("Laneclear", "Lane Clear") 40 | { 41 | LaneclearMenu.ESliderButton, 42 | LaneclearMenu.ESlider 43 | }; 44 | var jungleclearMenu = new Menu("Jungleclear", "Jungle Clear") 45 | { 46 | JungleclearMenu.WSliderButton, 47 | JungleclearMenu.ESliderButton 48 | }; 49 | var drawMenu = new Menu("Draw", "Draw") 50 | { 51 | DrawMenu.WBool, 52 | DrawMenu.EBool, 53 | DrawMenu.RBool, 54 | DrawConfig.Edmg, 55 | DrawConfig.EDmgJG, 56 | DrawConfig.QTime, 57 | DrawConfig.RTime 58 | }; 59 | var menuList = new[] 60 | { 61 | automaticMenu, 62 | comboMenu, 63 | harassMenu, 64 | killstealMenu, 65 | laneclearMenu, 66 | jungleclearMenu, 67 | drawMenu 68 | }; 69 | foreach (var menu in menuList) 70 | { 71 | mainMenu.Add(menu); 72 | } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EnsoulSharp.SDK.Utility; 5 | using EzAIO.Bases; 6 | using static EzAIO.Champions.Draven.Configs; 7 | namespace EzAIO.Champions.Draven.Modes 8 | { 9 | using static ChampionBases; 10 | static class Combo 11 | { 12 | public static void CastQ() 13 | { 14 | if (!ComboMenu.QBoolSliderButton.Enabled) 15 | { 16 | return; 17 | } 18 | 19 | if (Extension.GetNumberAxesActives() >= ComboMenu.QBoolSliderButton.Value) 20 | { 21 | return; 22 | } 23 | 24 | Q.Cast(); 25 | } 26 | 27 | public static void CastW(BeforeAttackEventArgs args) 28 | { 29 | if (!ComboMenu.WBool.Enabled) 30 | { 31 | return; 32 | } 33 | 34 | W.Cast(); 35 | } 36 | 37 | public static void CastW() 38 | { 39 | if (!ComboMenu.WBool.Enabled) 40 | { 41 | return; 42 | } 43 | 44 | if (!GameObjects.EnemyHeroes.Any(x => x.IsValidTarget(1500f) && 45 | x.Distance(Game.CursorPos) <= 250 && 46 | x.DistanceToPlayer() > GameObjects.Player.GetRealAutoAttackRange())) 47 | { 48 | return; 49 | } 50 | 51 | W.Cast(); 52 | } 53 | 54 | public static void CastE(AfterAttackEventArgs args) 55 | { 56 | if (!ComboMenu.EBool.Enabled) 57 | { 58 | return; 59 | } 60 | 61 | var etarget = args.Target as AIHeroClient; 62 | if (etarget == null) 63 | { 64 | return; 65 | } 66 | 67 | var einput = E.GetPrediction(etarget); 68 | if (einput.Hitchance >= HitChance.High) 69 | { 70 | DelayAction.Add((int)Extension.eDelay,()=>E.Cast(einput.UnitPosition)); 71 | } 72 | } 73 | 74 | public static void SemiCastR() 75 | { 76 | if (!ComboMenu.RKey.Active) 77 | { 78 | return; 79 | } 80 | 81 | var target = TargetSelector.GetTarget(R.Range,DamageType.Physical); 82 | var rinput = R.GetPrediction(target); 83 | if (rinput.Hitchance >= HitChance.High) 84 | { 85 | R.Cast(rinput.CastPosition); 86 | } 87 | } 88 | } 89 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using EzAIO.Extras; 6 | using static EzAIO.Champions.Jhin.Damage; 7 | using static EzAIO.Champions.Jhin.Configs; 8 | using static EzAIO.Champions.Jhin.Jhin; 9 | using static EzAIO.Extras.Helps; 10 | namespace EzAIO.Champions.Jhin.Modes 11 | { 12 | using static ChampionBases; 13 | static class Laneclear 14 | { 15 | public static void CastQ() 16 | { 17 | if (!LaneclearMenu.QSliderButton.Enabled) 18 | { 19 | return; 20 | } 21 | 22 | if (LaneclearMenu.QSliderButton.Value >= Player.ManaPercent) 23 | { 24 | return; 25 | } 26 | 27 | var bestMinion = GameObjects.EnemyMinions.FirstOrDefault(x => 28 | x.IsValidTarget(Q.Range) && x.Health < QDamage(x) && 29 | CountInRange(x,300, GameObjects.EnemyMinions) >= LaneclearMenu.QSlider.Value); 30 | if (bestMinion == null) 31 | { 32 | return; 33 | } 34 | 35 | 36 | Q.CastOnUnit(bestMinion); 37 | } 38 | 39 | public static void CastW() 40 | { 41 | if (!LaneclearMenu.WSliderButton.Enabled) 42 | { 43 | return; 44 | } 45 | 46 | if (LaneclearMenu.WSliderButton.Value >= Player.ManaPercent) 47 | { 48 | return; 49 | } 50 | 51 | var minions = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(W.Range)).ToList(); 52 | var farmLine = W.GetLineFarmLocation(minions, W.Width); 53 | if (farmLine.MinionsHit < LaneclearMenu.WSlider.Value) 54 | { 55 | return; 56 | } 57 | 58 | W.Cast(farmLine.Position); 59 | } 60 | 61 | public static void CastE() 62 | { 63 | if (!LaneclearMenu.ESliderButton.Enabled) 64 | { 65 | return; 66 | } 67 | 68 | if (LaneclearMenu.ESliderButton.Value >= Player.ManaPercent) 69 | { 70 | return; 71 | } 72 | var minions = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(E.Range)).ToList(); 73 | var farmPos = E.GetCircularFarmLocation(minions, E.Width); 74 | if (farmPos.MinionsHit < LaneclearMenu.ESlider.Value) 75 | { 76 | return; 77 | } 78 | 79 | E.Cast(farmPos.Position); 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Draven/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using static EzAIO.Champions.Draven.Damage; 4 | using EnsoulSharp.SDK; 5 | using EzAIO.Bases; 6 | using static EzAIO.Champions.Draven.Configs; 7 | namespace EzAIO.Champions.Draven.Modes 8 | { 9 | using static ChampionBases; 10 | class Killsteal 11 | { 12 | public static void Cast() 13 | { 14 | if (E.IsReady()) 15 | { 16 | if (CastE()) 17 | { 18 | return; 19 | } 20 | } 21 | 22 | if (R.IsReady()) 23 | { 24 | CastR(); 25 | } 26 | 27 | } 28 | 29 | public static bool CastE() 30 | { 31 | if (!KillstealMenu.EBool.Enabled) 32 | { 33 | return false; 34 | } 35 | 36 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(E.Range) && 37 | EDamage(x)>=x.Health-GameObjects.Player.CalculateDamage(x,DamageType.Physical,1) && 38 | x.DistanceToPlayer()>GameObjects.Player.GetRealAutoAttackRange() && 39 | !x.IsInvulnerable)) 40 | { 41 | var einput = E.GetPrediction(target); 42 | if (einput.Hitchance >= HitChance.High) 43 | { 44 | return E.Cast(einput.UnitPosition); 45 | } 46 | } 47 | 48 | return false; 49 | } 50 | 51 | public static void CastR() 52 | { 53 | if (!KillstealMenu.RBool.Enabled) 54 | { 55 | return; 56 | } 57 | 58 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(R.Range) && 59 | RDamage(x)>=x.Health-GameObjects.Player.CalculateDamage(x,DamageType.Physical,1) && 60 | x.Distance(Game.CursorPos)>GameObjects.Player.GetRealAutoAttackRange() && 61 | !x.IsInvulnerable)) 62 | { 63 | var rInput = R.GetPrediction(target); 64 | if (rInput.Hitchance >= HitChance.High) 65 | { 66 | R.Cast(rInput.UnitPosition); 67 | } 68 | return; 69 | } 70 | } 71 | } 72 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/Menus.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Champions.Kalista.Configs; 3 | using static EzAIO.Bases.DrawingBase; 4 | using static EzAIO.Champions.Kalista.Kalista; 5 | namespace EzAIO.Champions.Kalista 6 | { 7 | class Menus 8 | { 9 | public Menus() 10 | { 11 | Initialize(); 12 | } 13 | 14 | public static void Initialize() 15 | { 16 | var automaticMenu = new Menu("Automatic", "Automatic") 17 | { 18 | AutomaticMenu.RAllysave, 19 | AutomaticMenu.WDrake, 20 | AutomaticMenu.WBaron, 21 | AutomaticMenu.MinionsChase 22 | }; 23 | var comboMenu = new Menu("Combo", "Combo") 24 | { 25 | ComboMenu.QBool, 26 | }; 27 | var harassMenu = new Menu("Harass", "Harass") 28 | { 29 | HarassMenu.QSliderButton, 30 | HarassMenu.ESliderButton 31 | }; 32 | var killStealMenu = new Menu("Killsteal", "Kill Steal") 33 | { 34 | KillstealMenu.QSBool, 35 | KillstealMenu.EBool 36 | }; 37 | var laneClearMenu = new Menu("Laneclear", "Lane Clear") 38 | { 39 | Laneclear.ESliderButton, 40 | Laneclear.Eminion, 41 | Laneclear.EBool 42 | }; 43 | var lastHitMenu = new Menu("LastHit", "Last Hit") 44 | { 45 | Lasthit.ESliderButton 46 | }; 47 | var jungleclearMenu = new Menu("Jungleclear", "Jungle Clear") 48 | { 49 | Jungleclear.QSliderButton, 50 | Jungleclear.ESliderButton 51 | }; 52 | var drawMenu = new Menu("Draw", "Draw") 53 | { 54 | DrawMenu.QBool, 55 | DrawMenu.WBool, 56 | DrawMenu.EBool, 57 | DrawMenu.RBool, 58 | DrawConfig.Edmg, 59 | DrawConfig.EDmgJG, 60 | DrawConfig.Ecircle 61 | }; 62 | var menuList = new[] 63 | { 64 | automaticMenu, 65 | comboMenu, 66 | harassMenu, 67 | killStealMenu, 68 | laneClearMenu, 69 | lastHitMenu, 70 | jungleclearMenu, 71 | drawMenu 72 | }; 73 | foreach (var menu in menuList) 74 | { 75 | maineMenu.Add(menu); 76 | } 77 | } 78 | } 79 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Damage.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | 5 | namespace EzAIO.Champions.Ezreal 6 | { 7 | using static ChampionBases; 8 | class Damage 9 | { 10 | 11 | private static readonly float[] QBaseDamage = {0f, 20f, 45f, 70f, 95f, 120f, 120f}; 12 | private static readonly float[] WBaseDamage = {0f, 80f, 135f, 190f, 245f, 300f, 300f}; 13 | private static readonly float[] WAPScaling = {0f, .7f, .75f, .80f, .85f, .90f, .90f}; 14 | private static readonly float[] EBaseDamage = {0f, 80f, 130f, 180f, 230f, 280f, 280f}; 15 | private static readonly float[] RBaseDamage = {0f, 350f, 500f, 650f, 650f}; 16 | 17 | public static float QDamage(AIBaseClient target) 18 | { 19 | var qLevel = Q.Level; 20 | var qBaseDamage = QBaseDamage[qLevel] + 21 | (1.3f * GameObjects.Player.TotalAttackDamage + 22 | .15f * GameObjects.Player.TotalMagicalDamage); 23 | return (float)GameObjects.Player.CalculateDamage(target, DamageType.Physical, qBaseDamage); 24 | } 25 | 26 | public static float WDamage(AIBaseClient target) 27 | { 28 | var wLevel = W.Level; 29 | var wBaseDamage = WBaseDamage[wLevel] + 30 | (.6f * GameObjects.Player.TotalAttackDamage + 31 | WAPScaling[wLevel] * GameObjects.Player.TotalMagicalDamage); 32 | return (float)GameObjects.Player.CalculateDamage(target, DamageType.Magical, wBaseDamage); 33 | } 34 | 35 | public static float EDamage(AIBaseClient target) 36 | { 37 | var eLevel = E.Level; 38 | var eBaseDamage = EBaseDamage[eLevel] + 39 | (.5f * GameObjects.Player.TotalAttackDamage + 40 | .75f * GameObjects.Player.TotalMagicalDamage); 41 | return (float) GameObjects.Player.CalculateDamage(target, DamageType.Magical, eBaseDamage); 42 | } 43 | 44 | public static float RDamage(AIBaseClient target) 45 | { 46 | var rLevel = R.Level; 47 | var rBaseDamage = RBaseDamage[rLevel] + 48 | (1f * GameObjects.Player.TotalAttackDamage + 49 | .9f * GameObjects.Player.TotalMagicalDamage); 50 | if (target is AIMinionClient minion && !minion.IsJungle()) 51 | { 52 | rBaseDamage /= 2; 53 | } 54 | 55 | return (float) GameObjects.Player.CalculateDamage(target, DamageType.Magical, rBaseDamage); 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kaisa/Menus.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Champions.Kaisa.Configs; 3 | using static EzAIO.Bases.DrawingBase; 4 | using static EzAIO.Champions.Kaisa.Kaisa; 5 | namespace EzAIO.Champions.Kaisa 6 | { 7 | class Menus 8 | { 9 | public Menus() 10 | { 11 | Initialize(); 12 | } 13 | 14 | public static void Initialize() 15 | { 16 | var miscellaneousMenu = new Menu("Miscellaneous", "Miscellaneous") 17 | { 18 | MiscellaneousMenu.EBool 19 | }; 20 | var comboMenu = new Menu("Combo", "Combo") 21 | { 22 | ComboMenu.QBool, 23 | ComboMenu.WSliderButton, 24 | ComboMenu.WRange, 25 | ComboMenu.WList, 26 | ComboMenu.EBool, 27 | new MenuSeparator("sep1","R is manual") 28 | }; 29 | var harassMenu = new Menu("Harass", "Harass") 30 | { 31 | HarassMenu.QSliderButton, 32 | HarassMenu.WSliderButton 33 | }; 34 | var killstealMenu = new Menu("Killsteal", "Kill Steal") 35 | { 36 | KillstealMenu.WBool 37 | }; 38 | var laneClearMenu = new Menu("Laneclear", "Lane Clear") 39 | { 40 | LaneclearMenu.QSliderButton, 41 | LaneclearMenu.ESliderButton, 42 | new Menu("custom", "Customization") 43 | { 44 | LaneclearMenu.QCount 45 | } 46 | }; 47 | var jungleclearMenu = new Menu("Jungleclear", "Jungle Clear") 48 | { 49 | JungleclearMenu.QSliderButton, 50 | JungleclearMenu.WSliderButton, 51 | JungleclearMenu.ESliderButton 52 | }; 53 | var structureclearMenu = new Menu("Structureclear", "Structure Clear") 54 | { 55 | StructureclearMenu.ESliderButton, 56 | StructureclearMenu.ERange 57 | }; 58 | var drawMenu = new Menu("Draw", "Draw") 59 | { 60 | DrawMenu.QBool, 61 | DrawMenu.WBool, 62 | DrawMenu.RBool 63 | }; 64 | var menuList = new[] 65 | { 66 | miscellaneousMenu, 67 | comboMenu, 68 | harassMenu, 69 | killstealMenu, 70 | laneClearMenu, 71 | jungleclearMenu, 72 | structureclearMenu, 73 | drawMenu 74 | }; 75 | foreach (var menu in menuList) 76 | { 77 | mainMenu.Add(menu); 78 | } 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Modes/Harass.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EnsoulSharp.SDK.MenuUI; 4 | using EzAIO.Bases; 5 | 6 | namespace EzAIO.Champions.Ezreal.Modes 7 | { 8 | using static Ezreal; 9 | using static ChampionBases; 10 | static class Harass 11 | { 12 | internal static void CastQ() 13 | { 14 | if (!mainMenu["Harass"].GetValue("q").Enabled || !Q.IsReady()) 15 | { 16 | return; 17 | } 18 | 19 | if (mainMenu["Harass"].GetValue("q").Value >= GameObjects.Player.ManaPercent) 20 | { 21 | return; 22 | } 23 | 24 | var priorityTarget = GameObjects.EnemyHeroes.FirstOrDefault(x => Extension.HasEssenceFlux(x, Q.Range)); 25 | if (priorityTarget != null) 26 | { 27 | var qinpupt = Q.GetPrediction(priorityTarget); 28 | if (qinpupt.Hitchance >= HitChance.High) 29 | { 30 | Q.Cast(qinpupt.CastPosition); 31 | } 32 | } 33 | 34 | foreach (var target in GameObjects.EnemyHeroes.Where(x=>x.IsValidTarget(Q.Range) && 35 | !Q.GetPrediction(x).CollisionObjects.Any())) 36 | { 37 | if (target == null) 38 | { 39 | continue; 40 | } 41 | 42 | var qinput = Q.GetPrediction(target); 43 | if (qinput.Hitchance >= HitChance.High) 44 | { 45 | Q.Cast(qinput.CastPosition); 46 | } 47 | 48 | } 49 | } 50 | 51 | internal static void CastW() 52 | { 53 | if (!mainMenu["Harass"].GetValue("w").Enabled || !W.IsReady()) 54 | { 55 | return; 56 | } 57 | 58 | if (!Q.IsReady() && 59 | GameObjects.Player.CountEnemyHeroesInRange(GameObjects.Player.GetRealAutoAttackRange()) == 0) 60 | { 61 | return; 62 | } 63 | 64 | if (mainMenu["Harass"].GetValue("w").Value >= GameObjects.Player.ManaPercent) 65 | { 66 | return; 67 | } 68 | 69 | var wtarget = W.GetTarget(); 70 | if (wtarget == null) 71 | { 72 | return; 73 | } 74 | 75 | var winput = W.GetPrediction(wtarget); 76 | if (winput.Hitchance >= HitChance.High) 77 | { 78 | W.Cast(winput.CastPosition); 79 | } 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Damage.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp; 2 | using EnsoulSharp.SDK; 3 | using EzAIO.Bases; 4 | using static EzAIO.Champions.Jhin.Jhin; 5 | using static EzAIO.Champions.Jhin.Extension; 6 | namespace EzAIO.Champions.Jhin 7 | { 8 | using static ChampionBases; 9 | class Damage 10 | { 11 | private static readonly float[] QBaseDamage = {0f, 45f, 70f, 95f, 120f, 145f, 145f}; 12 | private static readonly float[] QMultiplier = {0f, .35f, .425f, .5f, .575f, .65f, .65f}; 13 | private static readonly float[] WBaseDamage = {0f, 50f, 85f, 120f, 155f, 190f, 190f}; 14 | private static readonly float[] EBaseDamage = {0f, 20f, 80f, 140f, 200f, 260f, 260f}; 15 | private static readonly float[] RBaseDamage = {0f, 50f, 125f, 200f, 200f}; 16 | 17 | public static float QDamage(AIBaseClient target) 18 | { 19 | var qLevel = Q.Level; 20 | var qBaseDamage = QBaseDamage[qLevel] + QMultiplier[qLevel] * Player.TotalAttackDamage + 21 | .6f * Player.TotalMagicalDamage; 22 | return (float) Player.CalculateDamage(target, DamageType.Physical, qBaseDamage); 23 | } 24 | 25 | public static float WDamage(AIBaseClient target) 26 | { 27 | var wLevel = W.Level; 28 | var wBaseDamage = WBaseDamage[wLevel] + .5f * Player.TotalAttackDamage; 29 | return (float) Player.CalculateDamage(target, DamageType.Physical, wBaseDamage); 30 | } 31 | 32 | public static float EDamage(AIBaseClient target) 33 | { 34 | var eLevel = E.Level; 35 | var eBaseDamage = EBaseDamage[eLevel] + 1.2f * Player.TotalAttackDamage + 36 | 1f * Player.TotalMagicalDamage; 37 | if (!(target is AIHeroClient) || target.RHBCAU()) 38 | { 39 | eBaseDamage *= .65f; 40 | } 41 | 42 | return (float) Player.CalculateDamage(target, DamageType.Magical, eBaseDamage); 43 | } 44 | 45 | public static float RShot(AIBaseClient target) 46 | { 47 | var rLevel = R.Level; 48 | var rShotDamage = RBaseDamage[rLevel] + .2f * Player.TotalAttackDamage; 49 | rShotDamage *= (target.MaxHealth - target.Health)*2.5f; 50 | return (float) Player.CalculateDamage(target, DamageType.Physical, rShotDamage * (Extension.Has4Shot() ? 2 : 1)); 51 | } 52 | 53 | public static float RDamage(AIBaseClient target) 54 | { 55 | var rLevel = R.Level; 56 | var rBaseDamage = RBaseDamage[rLevel] + .2f * Player.TotalAttackDamage; 57 | rBaseDamage *= (target.MaxHealth - target.Health) * 2.5f * 5; 58 | return (float) Player.CalculateDamage(target, DamageType.Physical, rBaseDamage); 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Ezreal/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp.SDK; 3 | using EnsoulSharp.SDK.MenuUI; 4 | using EzAIO.Bases; 5 | 6 | namespace EzAIO.Champions.Ezreal.Modes 7 | { 8 | using static Ezreal; 9 | using static ChampionBases; 10 | static class Combo 11 | { 12 | 13 | internal static void CastQ() 14 | { 15 | if(!mainMenu["Combo"].GetValue("q").Enabled || !Q.IsReady()) 16 | { 17 | return; 18 | } 19 | var qtarget = Q.GetTarget(); 20 | if (qtarget == null) 21 | { 22 | return; 23 | } 24 | 25 | if (qtarget.DistanceToPlayer() < GameObjects.Player.GetRealAutoAttackRange(qtarget)) 26 | { 27 | return; 28 | } 29 | var priorityTarget = GameObjects.EnemyHeroes.FirstOrDefault(x => Extension.HasEssenceFlux(x, Q.Range)); 30 | if (priorityTarget != null) 31 | { 32 | var qinpupt = Q.GetPrediction(priorityTarget); 33 | if (qinpupt.Hitchance >= HitChance.High && Q.IsInRange(qinpupt.CastPosition)) 34 | { 35 | Q.Cast(qinpupt.CastPosition); 36 | } 37 | } 38 | var qinput = Q.GetPrediction(qtarget); 39 | if (qinput.Hitchance >= HitChance.High && Q.IsInRange(qinput.CastPosition)) 40 | { 41 | Q.Cast(qinput.CastPosition); 42 | } 43 | } 44 | 45 | internal static void CastW() 46 | { 47 | if (!mainMenu["Combo"].GetValue("w").Enabled || !W.IsReady()) 48 | { 49 | return; 50 | } 51 | 52 | var wtarget = W.GetTarget(); 53 | if (wtarget == null) 54 | { 55 | return; 56 | } 57 | 58 | if (wtarget.DistanceToPlayer() < GameObjects.Player.GetRealAutoAttackRange(wtarget)) 59 | { 60 | return; 61 | } 62 | 63 | var winput = W.GetPrediction(wtarget); 64 | if (winput.Hitchance >= HitChance.High && W.IsInRange(winput.CastPosition)) 65 | { 66 | W.Cast(winput.CastPosition); 67 | } 68 | 69 | } 70 | 71 | internal static void SemiR() 72 | { 73 | if (!mainMenu["Combo"].GetValue("rsemiautomatic").Active || !R.IsReady()) 74 | { 75 | return; 76 | } 77 | 78 | var rtarget = R.GetTarget(); 79 | var rinput = R.GetPrediction(rtarget); 80 | if(rinput.Hitchance>=HitChance.High && R.IsInRange(rinput.CastPosition)) 81 | { 82 | R.Cast(rinput.CastPosition); 83 | } 84 | } 85 | } 86 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Modes/Killsteal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Jhin.Damage; 6 | using static EzAIO.Champions.Jhin.Configs; 7 | using static EzAIO.Champions.Jhin.Jhin; 8 | namespace EzAIO.Champions.Jhin.Modes 9 | { 10 | using static ChampionBases; 11 | static class Killsteal 12 | { 13 | public static void Cast() 14 | { 15 | if (Q.IsReady() && KillstealMenu.QBool.Enabled) 16 | { 17 | CastQ(); 18 | } 19 | 20 | if (W.IsReady() && KillstealMenu.WBool.Enabled) 21 | { 22 | CastW(); 23 | } 24 | 25 | if (R.IsReady() && Extension.IsUltShooting() && KillstealMenu.RShoot.Enabled) 26 | { 27 | CastR(); 28 | } 29 | } 30 | 31 | public static void CastQ() 32 | { 33 | foreach (var target in GameObjects.EnemyHeroes.Where(x => x.IsValidTarget(Q.Range) && 34 | QDamage(x) >= x.Health - 35 | Player.CalculateDamage(x, DamageType.Physical, 36 | 1) && 37 | !x.IsInvulnerable)) 38 | { 39 | Q.CastOnUnit(target); 40 | } 41 | } 42 | 43 | public static void CastW() 44 | { 45 | foreach (var target in GameObjects.EnemyHeroes.Where(x => x.IsValidTarget(W.Range) && 46 | WDamage(x) >= x.Health - 47 | Player.CalculateDamage(x, DamageType.Physical, 48 | 1) && 49 | !x.IsInvulnerable)) 50 | { 51 | var winput = W.GetPrediction(target); 52 | if (winput.Hitchance >= HitChance.High && W.IsInRange(winput.CastPosition)) 53 | { 54 | W.Cast(winput.CastPosition); 55 | } 56 | } 57 | } 58 | 59 | public static void CastR() 60 | { 61 | if (!R.IsReady()) 62 | { 63 | return; 64 | } 65 | foreach (var target in Extension.EnemiesInsideCone().Where(x => 66 | RDamage(x) >= x.Health - Player.CalculateDamage(x, DamageType.Physical, 1))) 67 | { 68 | var rinput = Jhin.RShot.GetPrediction(target); 69 | if (rinput.Hitchance >= HitChance.High && Jhin.RShot.IsInRange(rinput.CastPosition)) 70 | { 71 | Jhin.RShot.Cast(rinput.CastPosition); 72 | } 73 | } 74 | } 75 | } 76 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Menus.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Champions.Jinx.Configs; 3 | using static EzAIO.Bases.DrawingBase; 4 | using static EzAIO.Champions.Jinx.Jinx; 5 | 6 | namespace EzAIO.Champions.Jinx 7 | { 8 | class Menus 9 | { 10 | public Menus() 11 | { 12 | Initialize(); 13 | } 14 | 15 | public static void Initialize() 16 | { 17 | var automaticMenu = new Menu("Automatic", "Automatic") 18 | { 19 | AutomaticMenu.WCCBool, 20 | AutomaticMenu.ECCBool, 21 | AutomaticMenu.ETeleportBool 22 | }; 23 | var comboMenu = new Menu("Combo", "Combo") 24 | { 25 | ComboMenu.QBool, 26 | ComboMenu.WBool, 27 | ComboMenu.EnemiesBool, 28 | ComboMenu.PBool, 29 | ComboMenu.EKey, 30 | ComboMenu.Rkey, 31 | ComboMenu.RSliderRange, 32 | ComboMenu.RSafeBool 33 | }; 34 | ComboMenu.EKey.AddPermashow(); 35 | ComboMenu.Rkey.AddPermashow(); 36 | var harassMenu = new Menu("Harass", "Harass") 37 | { 38 | HarassMenu.QSliderButton, 39 | HarassMenu.WSliderButton, 40 | HarassMenu.EnemiesBool 41 | }; 42 | var killstealMenu = new Menu("Killsteal", "Kill Steal") 43 | { 44 | KillstealMenu.WSliderButton, 45 | KillstealMenu.RSliderButton 46 | }; 47 | var laneclearMenu = new Menu("Laneclear", "Lane Clear") 48 | { 49 | LaneclearMenu.QSliderButton, 50 | LaneclearMenu.SwapBool, 51 | new Menu("customization", "Customization") 52 | { 53 | LaneclearMenu.QCountSlider 54 | } 55 | }; 56 | var lasthitMenu = new Menu("Lasthit", "Last Hit") 57 | { 58 | LasthitMenu.QSliderButton 59 | }; 60 | var jungleclearMenu = new Menu("Jungleclear", "Jungle CLear") 61 | { 62 | JungleclearMenu.QSliderButton, 63 | JungleclearMenu.WSliderButton 64 | }; 65 | var drawMenu = new Menu("Draw", "Draw") 66 | { 67 | DrawConfig.QRRange, 68 | DrawMenu.WBool, 69 | DrawMenu.EBool, 70 | DrawMenu.RBool, 71 | }; 72 | var menuList = new[] 73 | { 74 | automaticMenu, 75 | comboMenu, 76 | harassMenu, 77 | killstealMenu, 78 | laneclearMenu, 79 | lasthitMenu, 80 | jungleclearMenu, 81 | drawMenu 82 | }; 83 | foreach (var menu in menuList) 84 | { 85 | mainMenu.Add(menu); 86 | } 87 | 88 | } 89 | } 90 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jhin/Menus.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Champions.Jhin.Configs; 3 | using static EzAIO.Bases.DrawingBase; 4 | using static EzAIO.Champions.Jhin.Jhin; 5 | 6 | namespace EzAIO.Champions.Jhin 7 | { 8 | class Menus 9 | { 10 | public Menus() 11 | { 12 | Initialize(); 13 | } 14 | public static void Initialize() 15 | { 16 | var automaticMenu = new Menu("Automatic", "Automatic") 17 | { 18 | AutomaticMenu.ECCBool, 19 | AutomaticMenu.ETeleportBool 20 | }; 21 | var comboMenu = new Menu("Combo", "Combo") 22 | { 23 | ComboMenu.QBool, 24 | ComboMenu.QReloadBool, 25 | ComboMenu.WBool, 26 | ComboMenu.WRangeBool, 27 | ComboMenu.WCCBool, 28 | ComboMenu.EBool, 29 | ComboMenu.EReloadBool, 30 | ComboMenu.RBool, 31 | ComboMenu.RCursor, 32 | }; 33 | var harassMenu = new Menu("Harass", "Harass") 34 | { 35 | HarassMenu.QSliderButton 36 | }; 37 | var killstealMenu = new Menu("Killsteal", "Kill Steal") 38 | { 39 | KillstealMenu.QBool, 40 | KillstealMenu.WBool, 41 | KillstealMenu.RShoot 42 | }; 43 | var laneclearMenu = new Menu("Laneclear", "Lane Clear") 44 | { 45 | LaneclearMenu.QSliderButton, 46 | LaneclearMenu.WSliderButton, 47 | LaneclearMenu.ESliderButton, 48 | new Menu("Customization", "Customization") 49 | { 50 | LaneclearMenu.QSlider, 51 | LaneclearMenu.WSlider, 52 | LaneclearMenu.ESlider 53 | } 54 | }; 55 | var jungleclearMenu = new Menu("Jungleclear", "Jungle Clear") 56 | { 57 | JungleclearMenu.QSliderButton, 58 | JungleclearMenu.ESliderButton 59 | }; 60 | var lasthitMenu = new Menu("Lasthit", "Last Hit") 61 | { 62 | LasthitMenu.QSliderButton, 63 | LasthitMenu.QReloadBool 64 | }; 65 | var drawMenu = new Menu("Draw", "Draw") 66 | { 67 | DrawMenu.QBool, 68 | DrawMenu.WBool, 69 | DrawMenu.EBool, 70 | DrawMenu.RBool, 71 | 72 | }; 73 | var menuList = new[] 74 | { 75 | automaticMenu, 76 | comboMenu, 77 | harassMenu, 78 | killstealMenu, 79 | laneclearMenu, 80 | jungleclearMenu, 81 | lasthitMenu, 82 | drawMenu 83 | }; 84 | foreach (var menu in menuList) 85 | { 86 | mainMenu.Add(menu); 87 | } 88 | } 89 | } 90 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Tristana/Menus.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK.MenuUI; 2 | using static EzAIO.Champions.Tristana.Configs; 3 | using static EzAIO.Bases.DrawingBase; 4 | using static EzAIO.Champions.Tristana.Tristana; 5 | namespace EzAIO.Champions.Tristana 6 | { 7 | class Menus 8 | { 9 | public Menus() 10 | { 11 | Initialize(); 12 | } 13 | public static void Initialize() 14 | { 15 | var automaticMenu = new Menu("Automatic", "Automatic") 16 | { 17 | //AutomaticMenu.AntiGrabBool, 18 | AutomaticMenu.RPeelSliderButton 19 | }; 20 | var comboMenu = new Menu("Combo", "Combo") 21 | { 22 | ComboMenu.QBool, 23 | ComboMenu.EBool, 24 | ComboMenu.RSemiCastBool 25 | }; 26 | ComboMenu.RSemiCastBool.AddPermashow(); 27 | var harassMenu = new Menu("Harass", "Harass") 28 | { 29 | HarassMenu.QSliderButton, 30 | HarassMenu.ESliderButton 31 | }; 32 | var killstealMenu = new Menu("Killsteal", "Kill Steal") 33 | { 34 | KillstealMenu.RBool 35 | }; 36 | var laneclearMenu = new Menu("Laneclear", "Lane Clear") 37 | { 38 | LaneclearMenu.QSliderButton, 39 | LaneclearMenu.ESliderButton, 40 | new Menu("customization","Customization") 41 | { 42 | LaneclearMenu.EMinionSlider 43 | } 44 | }; 45 | var lasthitMenu = new Menu("Lasthit", "Last Hit") 46 | { 47 | LasthitMenu.QSliderButton 48 | }; 49 | var jungleclearMenu = new Menu("Jungleclear", "Jungle Clear") 50 | { 51 | JungleClearMenu.QSliderButton, 52 | JungleClearMenu.ESliderButton 53 | }; 54 | var structureclearMenu = new Menu("Structureclear", "Structure Clear") 55 | { 56 | StructureclearMenu.QSliderButton, 57 | StructureclearMenu.ESliderButton, 58 | new Menu("customization","Customization") 59 | { 60 | StructureclearMenu.NoEnemiesRange, 61 | } 62 | }; 63 | var drawMenu = new Menu("Draw", "Draw") 64 | { 65 | DrawMenu.WBool, 66 | DrawMenu.EBool, 67 | DrawMenu.RBool 68 | }; 69 | var menuLsit = new[] 70 | { 71 | automaticMenu, 72 | comboMenu, 73 | harassMenu, 74 | killstealMenu, 75 | laneclearMenu, 76 | lasthitMenu, 77 | jungleclearMenu, 78 | structureclearMenu, 79 | drawMenu 80 | }; 81 | foreach (var menu in menuLsit) 82 | { 83 | mainMenu.Add(menu); 84 | } 85 | } 86 | } 87 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Jinx/Modes/Combo.cs: -------------------------------------------------------------------------------- 1 | using EnsoulSharp.SDK; 2 | using EzAIO.Bases; 3 | using static EzAIO.Champions.Jinx.Configs; 4 | using static EzAIO.Champions.Jinx.Jinx; 5 | namespace EzAIO.Champions.Jinx.Modes 6 | { 7 | using static ChampionBases; 8 | static class Combo 9 | { 10 | public static void CastQ() 11 | { 12 | if (!ComboMenu.QBool.Enabled) 13 | { 14 | return; 15 | } 16 | 17 | var target = TargetSelector.GetTarget(Extension.RocketRange,DamageType.Physical); 18 | if (target == null) 19 | { 20 | return; 21 | } 22 | 23 | if (Extension.Swap(target)) 24 | { 25 | Q.Cast(); 26 | } 27 | } 28 | 29 | public static void CastW() 30 | { 31 | if (!ComboMenu.WBool.Enabled) 32 | { 33 | return; 34 | } 35 | 36 | if (ComboMenu.PBool.Enabled && Extension.ActivatedPassive) 37 | { 38 | return; 39 | } 40 | 41 | if (ComboMenu.EnemiesBool.Enabled && Player.CountEnemyHeroesInRange(Extension.RocketRange) > 0) 42 | { 43 | return; 44 | } 45 | 46 | var target = W.GetTarget(); 47 | if (target == null) 48 | { 49 | return; 50 | } 51 | 52 | var winput = W.GetPrediction(target); 53 | if (winput.Hitchance >= HitChance.High && Q.IsInRange(winput.CastPosition)) 54 | { 55 | W.Cast(winput.CastPosition); 56 | } 57 | } 58 | 59 | public static void CastE() 60 | { 61 | if (!ComboMenu.EKey.Enabled) 62 | { 63 | return; 64 | } 65 | 66 | var target = E.GetTarget(); 67 | if (target == null) 68 | { 69 | return; 70 | } 71 | 72 | var einput = E.GetPrediction(target); 73 | if (einput.Hitchance >= HitChance.High && E.IsInRange(einput.CastPosition)) 74 | { 75 | E.Cast(einput.CastPosition); 76 | } 77 | } 78 | 79 | public static void SemiCastR() 80 | { 81 | if (!ComboMenu.Rkey.Active) 82 | { 83 | return; 84 | } 85 | 86 | if (ComboMenu.RSafeBool.Enabled && Player.CountEnemyHeroesInRange(Extension.RocketRange) > 0) 87 | { 88 | return; 89 | } 90 | 91 | var target = R.GetTarget(); 92 | if (target == null) 93 | { 94 | return; 95 | } 96 | 97 | var rinput = R.GetPrediction(target); 98 | if (rinput.Hitchance >= HitChance.High && R.IsInRange(rinput.CastPosition)) 99 | { 100 | R.Cast(rinput.CastPosition); 101 | } 102 | } 103 | } 104 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Kalista/DamageIndicator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using EnsoulSharp.SDK; 4 | using SharpDX; 5 | using static EzAIO.Program; 6 | using static EzAIO.Bases.DrawingBase; 7 | using static EzAIO.Champions.Kalista.Damage; 8 | using static EzAIO.Bases.ChampionBases; 9 | using static EzAIO.Champions.Kalista.Configs; 10 | using Color = System.Drawing.Color; 11 | 12 | namespace EzAIO.Champions.Kalista 13 | { 14 | static class DamageIndicator 15 | { 16 | public static void EChamps() 17 | { 18 | if (!DrawConfig.Edmg.Enabled) 19 | { 20 | return; 21 | } 22 | 23 | foreach (var target in GameObjects.EnemyHeroes.Where(x => x.IsVisible && 24 | !x.IsDead && Extension.HasRendBuff(x, 15000f))) 25 | { 26 | var targetpos = target.HPBarPosition; 27 | var DMGporcent = MathUtil.Clamp((EDamage(target) / target.Health + target.PhysicalShield) * 100, 0, 28 | 100); 29 | if (DMGporcent != 0) 30 | { 31 | DrawText(TextBold,Math.Round(DMGporcent).ToString()+"%",targetpos.X+50,targetpos.Y-70,(DMGporcent>=100) ? SharpDX.Color.Cyan : SharpDX.Color.White); 32 | } 33 | } 34 | } 35 | 36 | public static void EMobs() 37 | { 38 | if (!DrawConfig.EDmgJG.Enabled) 39 | { 40 | return; 41 | } 42 | 43 | foreach (var mobs in GameObjects.Jungle.Where(x => x.IsVisible && 44 | !x.IsDead && Extension.HasRendBuff(x, 15000f))) 45 | { 46 | if (mobs == null) 47 | { 48 | return; 49 | } 50 | var mobpos = mobs.HPBarPosition; 51 | var DMGporcent = MathUtil.Clamp((EDamage(mobs) / mobs.Health + mobs.PhysicalShield) * 100, 0, 100); 52 | if (DMGporcent != 0) 53 | { 54 | DrawText(TextBold,Math.Round(DMGporcent).ToString()+"%",mobpos.X+50,mobpos.Y-70,(DMGporcent>=100) ? SharpDX.Color.Cyan : SharpDX.Color.White); 55 | } 56 | 57 | } 58 | } 59 | 60 | public static void eCircle() 61 | { 62 | if (!DrawConfig.Ecircle.Enabled) 63 | { 64 | return; 65 | } 66 | 67 | foreach (var minion in GameObjects.EnemyMinions.Where(x => 68 | x.IsValidTarget(E.Range) && Extension.HasRendBuff(x, 3000f))) 69 | { 70 | if (minion == null) 71 | { 72 | return; 73 | } 74 | 75 | if (EDamage(minion) >= 76 | minion.Health - GameObjects.Player.CalculateDamage(minion, DamageType.Physical, 1)) 77 | { 78 | DrawCircle(minion.Position,20,Color.Cyan); 79 | } 80 | } 81 | } 82 | } 83 | } -------------------------------------------------------------------------------- /EzAIO/Champions/Katarina/Modes/Laneclear.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using EnsoulSharp; 3 | using EnsoulSharp.SDK; 4 | using EzAIO.Bases; 5 | using static EzAIO.Champions.Katarina.Configs; 6 | using static EzAIO.Champions.Katarina.Damage; 7 | namespace EzAIO.Champions.Katarina.Modes 8 | { 9 | using static ChampionBases; 10 | static class Laneclear 11 | { 12 | public static void CastQ() 13 | { 14 | if (!LaneclearMenu.QBool.Enabled || !Q.IsReady()) 15 | { 16 | return; 17 | } 18 | 19 | var minion = GameObjects.EnemyMinions.FirstOrDefault(x => x.IsValidTarget(Q.Range)); 20 | if (minion == null) 21 | { 22 | return; 23 | } 24 | 25 | Q.CastOnUnit(minion); 26 | } 27 | 28 | public static void CastW() 29 | { 30 | if (!LaneclearMenu.WSliderButton.Enabled || !W.IsReady()) 31 | { 32 | return; 33 | } 34 | 35 | if (LaneclearMenu.WSliderButton.Value > GameObjects.GetMinions(300).Count()) 36 | { 37 | return; 38 | } 39 | 40 | if (W.Cast()) 41 | { 42 | Extension.eDelay = Game.Time + 1.2f; 43 | } 44 | } 45 | 46 | public static void CastQLast() 47 | { 48 | if (!LasthitMenu.QBool.Enabled || !Q.IsReady()) 49 | { 50 | return; 51 | } 52 | 53 | var target = GameObjects.EnemyMinions.Where(x => x.IsValidTarget(Q.Range) && 54 | QDamage(x) >= x.Health - 55 | GameObjects.Player.CalculateDamage(x, DamageType.Magical, 56 | 1)).OrderByDescending(x => x.MagicalShield) 57 | .FirstOrDefault(); 58 | if (target == null) 59 | { 60 | return; 61 | } 62 | 63 | Q.CastOnUnit(target); 64 | } 65 | 66 | public static void CastE() 67 | { 68 | if (Extension.eDelay > Game.Time) 69 | { 70 | return; 71 | } 72 | 73 | if (!LaneclearMenu.ESliderButton.Enabled || !E.IsReady()) 74 | { 75 | return; 76 | } 77 | 78 | var dagger = Extension.Daggers.Where(x => 79 | (GameObjects.EnemyMinions.Count(t => t.IsValidTarget(450,false,x.Position)) > LaneclearMenu.ESliderButton.Value) && 80 | x.DistanceToPlayer() <= E.Range + 50) 81 | .OrderByDescending(x => (GameObjects.EnemyMinions.Count(t => t.IsValidTarget(450)))).FirstOrDefault(); 82 | if (dagger == null) 83 | { 84 | return; 85 | } 86 | 87 | if (LaneclearMenu.ETurretBool.Enabled && (GameObjects.Player.Position.IsUnderEnemyTurret() || dagger.Position.IsUnderEnemyTurret())) 88 | { 89 | return; 90 | } 91 | 92 | E.Cast(dagger.Position); 93 | } 94 | } 95 | } --------------------------------------------------------------------------------