private static float ComboDamage(AIHeroClient target) { if (target != null) { float TotalDamage = 0; if (DemSpells.Q.IsLearned && DemSpells.Q.IsReady()) { TotalDamage += QDamage(target); } if (DemSpells.W.IsLearned && DemSpells.W.IsReady()) { TotalDamage += WDamage(target); } if (DemSpells.E.IsLearned && DemSpells.E.IsReady()) { TotalDamage += (float)((myhero.GetAutoAttackDamage(target) * (int)slider(combo, "AAMIN")) + (new float[] { 0, 1.4f, 1.55f, 1.7f, 1.85f, 2 }[DemSpells.E.Level] *myhero.TotalAttackDamage)); } if (DemSpells.R.IsLearned && DemSpells.R.IsReady()) { TotalDamage += (float)PassiveManager.GetPassiveDamage(target, 4); } else { TotalDamage += (float)PassiveManager.GetPassiveDamage(target, PassiveManager.GetPassiveCount(target)); } if (tiamat.IsOwned() && tiamat.IsReady() && tiamat.IsInRange(target.Position)) { TotalDamage += myhero.GetItemDamage(target, tiamat.Id); } if (rhydra.IsOwned() && rhydra.IsReady() && rhydra.IsInRange(target.Position)) { TotalDamage += myhero.GetItemDamage(target, rhydra.Id); } /* if (thydra.IsOwned() && thydra.IsReady()) * { TotalDamage += myhero.GetItemDamage(target, thydra.Id); }*/ if (cutl.IsOwned() && cutl.IsReady() && cutl.IsInRange(target.Position)) { TotalDamage += myhero.GetItemDamage(target, cutl.Id); } if (blade.IsOwned() && blade.IsReady() && blade.IsInRange(target.Position)) { TotalDamage += myhero.GetItemDamage(target, blade.Id); } return(TotalDamage); } return(0); }
private static void Harass() { var target = TargetSelector.GetTarget(1200, DamageType.Physical, Player.Instance.Position); if (target != null && target.IsValidTarget()) { var qpred = DemSpells.Q.GetPrediction(target); var wpred = DemSpells.W.GetPrediction(target); if (check(harass, "HQ") && DemSpells.Q.IsReady() && DemSpells.Q.IsInRange(target.Position)) { if (Extensions.CountEnemiesInRange(target, 650) <= slider(harass, "HQMAX")) { switch (comb(pred, "QPREDMODE")) { case 0: PassiveManager.castQhelper(target); break; case 1: DemSpells.Q.Cast(target.Position); break; } } } if (check(harass, "HW") && DemSpells.W.IsReady() && DemSpells.W.IsInRange(target.Position) && !target.IsZombie && !target.IsInvulnerable) { switch (comb(pred, "WPREDMODE")) { case 0: if (wpred.HitChancePercent >= slider(pred, "WPred")) { DemSpells.W.Cast(wpred.CastPosition); } break; case 1: DemSpells.W.Cast(target.Position); break; } } } }
private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { var unit = sender as AIHeroClient; /* * Credits => JokerArt */ if (unit == null || !unit.IsValid) { return; } if (unit.IsMe && args.Slot.Equals(SpellSlot.E)) { Orbwalker.ResetAutoAttack(); return; } if (!unit.IsEnemy || !check(blocking, "BLOCK") || !DemSpells.W.IsReady()) { return; } if (Evade.SpellDatabase.GetByName(args.SData.Name) != null && !check(blocking, "evade")) { return; } if (!SpellBlock.Contains(unit, args)) { return; } if (args.End.Distance(Player.Instance) == 0) { return; } if (check(blocking, "RANGE") && unit.Distance(myhero.Position) > DemSpells.W.Range) { return; } var castUnit = unit; var type = args.SData.TargettingType; if (!unit.IsValidTarget()) { var target = TargetSelector.GetTarget(DemSpells.W.Range, DamageType.Mixed); if (target == null || !target.IsValidTarget(DemSpells.W.Range)) { target = TargetSelector.SelectedTarget; } if (target != null && target.IsValidTarget(DemSpells.W.Range)) { castUnit = target; } } if (unit.ChampionName.Equals("Caitlyn") && args.Slot == SpellSlot.Q) { Core.DelayAction(() => CastW(castUnit), ((int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500) + 250); } if (unit.ChampionName.Equals("Cassiopeia")) { switch (args.Slot) { case SpellSlot.Q: if (Prediction.Position.PredictUnitPosition(myhero, 400).Distance(args.Target.Position) <= 75) { Core.DelayAction(() => CastW(castUnit), 300); } break; case SpellSlot.E: if (args.Target.IsMe) { Core.DelayAction(() => CastW(castUnit), ((int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500)); } break; case SpellSlot.R: if (Prediction.Position.PredictUnitPosition(myhero, 500).Distance(args.Target.Position) <= 875 && PassiveManager.AngleBetween(myhero.Position.To2D(), unit.Position.To2D(), unit.Direction.To2D()) <= 85) { Core.DelayAction(() => CastW(castUnit), 400); } break; } } if (unit.ChampionName.Equals("Blitzcrank") && args.Slot == SpellSlot.R && unit.Distance(myhero.Position) < 600) { CastW(castUnit); } if (unit.ChampionName.Equals("Pantheon") && args.Slot == SpellSlot.W && args.Target.IsMe) { Core.DelayAction(() => CastW(castUnit), 50); } if (unit.ChampionName.Equals("Darius") && args.Slot == SpellSlot.Q && unit.Distance(myhero.Position) < 420) { Core.DelayAction(() => CastW(castUnit), 700); } if (unit.ChampionName.Equals("Jax") && args.Slot == SpellSlot.E && unit.Distance(myhero.Position) < 187.5f && Prediction.Position.PredictUnitPosition(myhero, 1000).Distance(unit.ServerPosition) < 187.5f) { Core.DelayAction(() => CastW(castUnit), 1100); } if (unit.ChampionName.Equals("Malphite") && args.Slot == SpellSlot.R && myhero.Position.Distance(args.End) < 300) { Core.DelayAction(() => CastW(castUnit), ((int)(args.Start.Distance(Player.Instance) / 700 * 1000) - (int)(args.End.Distance(Player.Instance) / 700) - 500) + 100); } if (unit.ChampionName.Equals("Morgana") && args.Slot == SpellSlot.R && unit.Distance(myhero.Position) < 1050 && Prediction.Position.PredictUnitPosition(myhero, 1000).Distance(unit.ServerPosition) < 1050) { Core.DelayAction(() => CastW(castUnit), 3000); } if (unit.ChampionName.Equals("KogMaw") && args.Slot == SpellSlot.R && myhero.Position.Distance(args.End) < 240) { Core.DelayAction(() => CastW(castUnit), 1200); } if (unit.ChampionName.Equals("Taric") && args.Slot == SpellSlot.E && Prediction.Position.PredictUnitPosition(myhero, 1000).Distance(unit.ServerPosition) < 575) { var loc = new EloBuddy.SDK.Geometry.Polygon.Rectangle(args.Start, args.End, 140); if (loc.IsInside(Prediction.Position.PredictUnitPosition(myhero, 1000)) || loc.Points.Where(x => x.Distance(Prediction.Position.PredictUnitPosition(myhero, 1000)) < myhero.BoundingRadius).Any()) { Core.DelayAction(() => CastW(castUnit), 900); } } if (unit.ChampionName.Equals("Ziggs") && args.Slot == SpellSlot.R && myhero.Position.Distance(args.End) < 550) { Core.DelayAction(() => CastW(castUnit), ((int)(args.Start.Distance(Player.Instance) / 2800 * 1000) - (int)(args.End.Distance(Player.Instance) / 2800) - 500) + 900); } if (unit.ChampionName.Equals("Karthus") && (args.Slot == SpellSlot.R || args.Slot == SpellSlot.Q)) { switch (args.Slot) { case SpellSlot.R: Core.DelayAction(() => CastW(castUnit), 2900); break; case SpellSlot.Q: if (Prediction.Position.PredictUnitPosition(myhero, 450).Distance(args.Target.Position) < 100) { Core.DelayAction(() => CastW(castUnit), 450); } break; } } if (unit.ChampionName.Equals("Shen") && args.Slot == SpellSlot.E && args.End.Distance(myhero.Position) < 100) { Core.DelayAction(() => CastW(castUnit), ((int)(args.Start.Distance(Player.Instance) / 1600 * 1000) - (int)(args.End.Distance(Player.Instance) / 1600) - 500) + 250); } if (unit.ChampionName.Equals("Zyra")) { Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500); } if (unit.ChampionName.Equals("Amumu") && args.Slot == SpellSlot.R && unit.Distance(myhero.Position) <= 550) { CastW(castUnit); } if (args.End.Distance(Player.Instance) < 250) { if (unit.ChampionName.Equals("Bard") && args.End.Distance(Player.Instance) < 300) { Core.DelayAction(() => CastW(castUnit), (int)(unit.Distance(Player.Instance) / 7f) + 400); } else if (unit.ChampionName.Equals("Ashe")) { Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)args.End.Distance(Player.Instance)); return; } else if (unit.ChampionName.Equals("Varus") || unit.ChampionName.Equals("TahmKench") || unit.ChampionName.Equals("Lux")) { if (unit.ChampionName.Equals("Lux") && args.Slot == SpellSlot.R) { Core.DelayAction(() => CastW(castUnit), 400); } Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500); } else if (unit.ChampionName.Equals("Amumu")) { if (sender.Distance(Player.Instance) < 1100) { Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500); } } } if (args.Target != null && type.Equals(SpellDataTargetType.Unit)) { if (!args.Target.IsMe || (args.Target.Name.Equals("Barrel") && args.Target.Distance(Player.Instance) > 200 && args.Target.Distance(Player.Instance) < 400)) { return; } if (unit.ChampionName.Equals("Nautilus") || (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R))) { var d = unit.Distance(Player.Instance); var travelTime = d / 3200; var delay = Math.Floor(travelTime * 1000) + 900; Console.WriteLine("TT: " + travelTime + " Delay: " + delay); Core.DelayAction(() => CastW(castUnit), (int)delay); return; } CastW(castUnit); } if (type.Equals(SpellDataTargetType.Unit)) { if (unit.ChampionName.Equals("Bard") && args.End.Distance(Player.Instance) < 300) { Core.DelayAction(() => CastW(castUnit), 400 + (int)(unit.Distance(Player.Instance) / 7f)); } else if (unit.ChampionName.Equals("Riven") && args.End.Distance(Player.Instance) < 260) { CastW(castUnit); } else { CastW(castUnit); } } else if (type.Equals(SpellDataTargetType.LocationAoe) && args.End.Distance(Player.Instance) < args.SData.CastRadius) { if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R)) { return; } CastW(castUnit); } else if (type.Equals(SpellDataTargetType.Cone) && args.End.Distance(Player.Instance) < args.SData.CastRadius) { CastW(castUnit); } else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self)) { var d = args.End.Distance(Player.Instance.ServerPosition); var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius; if (d < p) { CastW(castUnit); } } }
private static void Misc() { var target = TargetSelector.GetTarget(1000, DamageType.Magical, Player.Instance.Position); if (check(misc, "skinhax")) { myhero.SetSkinId((int)misc["skinID"].Cast <ComboBox>().CurrentValue); } if (check(misc, "AUTOPOT") && (!myhero.HasBuff("RegenerationPotion") || !myhero.HasBuff("ItemMiniRegenPotion")) && myhero.HealthPercent <= slider(misc, "POTMIN")) { if (Item.HasItem(potion.Id) && Item.CanUseItem(potion.Id)) { potion.Cast(); } else if (Item.HasItem(biscuit.Id) && Item.CanUseItem(biscuit.Id)) { biscuit.Cast(); } } if (target != null) { var qpred = DemSpells.Q.GetPrediction(target); var wpred = DemSpells.W.GetPrediction(target); if (check(misc, "ksQ") && DemSpells.Q.IsLearned && DemSpells.Q.IsReady() && target.IsValidTarget(DemSpells.Q.Range) && !target.IsZombie && !target.IsInvulnerable && QDamage(target) > target.Health && slider(pred, "QPred") >= qpred.HitChancePercent) { switch (comb(pred, "QPREDMODE")) { case 0: PassiveManager.castQhelper(target); break; case 1: DemSpells.Q.Cast(target.Position); break; } } if (check(misc, "ksW") && DemSpells.W.IsLearned && DemSpells.W.IsReady() && target.IsValidTarget(DemSpells.W.Range) && !target.IsZombie && !target.IsInvulnerable && WDamage(target) > target.Health) { switch (comb(pred, "WPREDMODE")) { case 0: if (wpred.HitChancePercent >= slider(pred, "WPred")) { DemSpells.W.Cast(wpred.CastPosition); } break; case 1: DemSpells.W.Cast(target.Position); break; } } if (check(misc, "autoign") && ignt.IsReady() && ignt.IsInRange(target) && myhero.GetSummonerSpellDamage(target, DamageLibrary.SummonerSpells.Ignite) > target.Health) { ignt.Cast(target); } } }
private static void Combo() { var target = TargetSelector.GetTarget(1200, DamageType.Physical, Player.Instance.Position); if (target != null && target.IsValidTarget() && !target.IsInvulnerable) { var WPred = DemSpells.W.GetPrediction(target); PassiveManager.castAutoAttack(target); ItemManager(target); if (check(combo, "CQ") && DemSpells.Q.IsReady() && DemSpells.Q.IsInRange(target.Position)) { if (target.IsUnderHisturret()) { return; } switch (comb(pred, "QPREDMODE")) { case 0: PassiveManager.castQhelper(target); break; case 1: DemSpells.Q.Cast(target.Position); break; } } if (check(combo, "CW") && DemSpells.W.IsReady() && DemSpells.W.IsInRange(target.Position)) { switch (comb(pred, "WPREDMODE")) { case 0: if (slider(pred, "WPred") <= WPred.HitChancePercent) { DemSpells.W.Cast(WPred.CastPosition); } break; case 1: DemSpells.W.Cast(target.Position); break; } } if (check(combo, "CE") && DemSpells.E.IsReady() && target.Distance(myhero.Position) < DemSpells.E.Range) { DemSpells.E.Cast(); } if (check(combo, "CR") && DemSpells.R.IsReady() && target.Distance(myhero.Position) < DemSpells.R.Range && myhero.HealthPercent >= slider(combo, "CRMIN") && ComboDamage(target) > target.Health) { if ((ComboDamage(target) - PassiveManager.GetPassiveDamage(target, 4) > target.Health) || (ignt.IsReady() && myhero.GetSummonerSpellDamage(target, DamageLibrary.SummonerSpells.Ignite) > target.Health)) { return; } if (check(combo, "CRTURRET")) { var ClosestTurret = EntityManager.Turrets.Enemies.Where(x => x.IsTargetable).OrderBy(x => x.Distance(myhero.Position)).FirstOrDefault(); if (ClosestTurret.Distance(target.Position) > 900) { DemSpells.R.Cast(target); } } else { DemSpells.R.Cast(target); } } if (check(combo, "Cignt") && ignt.IsReady() && ignt.IsInRange(target.Position)) { if (target.Health > ComboDamage(target) && myhero.GetSummonerSpellDamage(target, DamageLibrary.SummonerSpells.Ignite) > target.Health && !check(misc, "autoign")) { ignt.Cast(target); } else if (target.Health > ComboDamage(target)) { if ((ComboDamage(target) + (myhero.GetSummonerSpellDamage(target, DamageLibrary.SummonerSpells.Ignite) - 5)) > target.Health) { ignt.Cast(target); } } } } }