private static void AIHeroClient_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!getKeyBindItem(wSpells, "WSpells") || !W.IsReady()) { return; } var unit = sender as AIHeroClient; if (unit == null || !unit.IsValid || !unit.IsEnemy) { return; } // spell handled by evade if (SpellDatabase.GetByName(args.SData.Name) != null) { Console.WriteLine("EVADE PROCESS SPELL RETURN"); return; } Console.WriteLine("({0}) {1}", args.Slot, args.SData.Name); if (!SpellBlock.Contains(unit, args)) { return; } var castUnit = unit; var type = args.SData.TargettingType; Console.WriteLine( "PassiveType: {0} Range: {1} Radius: {2}", type, args.SData.CastRange, args.SData.CastRadius); Console.WriteLine("Distance: " + args.End.DistanceToPlayer()); if (!unit.LSIsValidTarget() || getBoxItem(wSpells, "WMode") == 1) { var target = TargetSelector.SelectedTarget; if (target == null || !target.LSIsValidTarget(W.Range)) { target = TargetSelector.GetTarget(W.Range, DamageType.Physical); } if (target != null && target.LSIsValidTarget(W.Range)) { castUnit = target; } } if (type.IsSkillShot()) { if (unit.ChampionName.Equals("Bard") && args.End.DistanceToPlayer() < 300) { LeagueSharp.Common.Utility.DelayAction.Add(400 + (int)(unit.LSDistance(Player) / 7f), () => CastW(castUnit)); } else if (unit.ChampionName.Equals("Riven") && args.End.DistanceToPlayer() < 260) { Console.WriteLine("RIVEN"); CastW(castUnit); } else if (args.End.DistanceToPlayer() < 60) { CastW(castUnit); } } if (type.IsTargeted() && args.Target != null) { if (!args.Target.IsMe || (args.Target.Name.Equals("Barrel") && args.Target.DistanceToPlayer() > 200 && args.Target.DistanceToPlayer() < 400)) { return; } if (getCheckBoxItem(wSpells, "WTurret") && Player.UnderTurret(true)) { return; } if (unit.ChampionName.Equals("Nautilus") || (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R))) { var d = unit.DistanceToPlayer(); var travelTime = d / args.SData.MissileSpeed; var delay = travelTime * 1000 - W.Delay + 150; Console.WriteLine("TT: " + travelTime + " " + delay); LeagueSharp.Common.Utility.DelayAction.Add((int)delay, () => CastW(castUnit)); return; } CastW(castUnit); } else if (type.Equals(SpellDataTargetType.LocationAoe) && args.End.DistanceToPlayer() < args.SData.CastRadius) { // annie moving tibbers if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R)) { return; } CastW(castUnit); } else if (type.Equals(SpellDataTargetType.Cone) && args.End.DistanceToPlayer() < args.SData.CastRadius) { CastW(castUnit); } else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self)) { var d = args.End.LSDistance(Player.ServerPosition); var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius; Console.WriteLine(d + " " + " " + p); if (d < p) { Console.WriteLine("CAST"); CastW(castUnit); } } }
private static void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!Menu.Item("WSpells").IsActive() || !W.IsReady()) { return; } var unit = sender as Obj_AI_Hero; if (unit == null || !unit.IsValid || !unit.IsEnemy) { return; } if (Menu.Item("WSmart").IsActive() && (Player.HasBuff("BlackShield") || Player.HasBuff("itemmagekillerveil"))) { return; } // spell handled by evade if (SpellDatabase.GetByName(args.SData.Name) != null) { Console.WriteLine("EVADE PROCESS SPELL RETURN"); return; } Console.WriteLine("({0}) {1}", args.Slot, args.SData.Name); if (!SpellBlock.Contains(unit, args)) { return; } var castUnit = unit; var type = args.SData.TargettingType; Console.WriteLine( "PassiveType: {0} Range: {1} Radius: {2}", type, args.SData.CastRange, args.SData.CastRadius); Console.WriteLine("Distance: " + args.End.DistanceToPlayer()); if (!unit.IsValidTarget() || Menu.Item("WMode").GetValue <StringList>().SelectedIndex == 1) { var target = TargetSelector.GetSelectedTarget(); if (target == null || !target.IsValidTarget(W.Range)) { target = TargetSelector.GetTargetNoCollision(W); } if (target != null && target.IsValidTarget(W.Range)) { castUnit = target; } } if (type.IsSkillShot()) { if (unit.ChampionName.Equals("Bard") && args.End.DistanceToPlayer() < 300) { Utility.DelayAction.Add(400 + (int)(unit.Distance(Player) / 7f), () => CastW(castUnit)); } else if (unit.ChampionName.Equals("Riven") && args.End.DistanceToPlayer() < 260) { //Console.WriteLine("RIVEN"); CastW(castUnit); } else if (args.End.DistanceToPlayer() < 60) { CastW(castUnit); } } if (type.IsTargeted() && args.Target != null) { if (!args.Target.IsMe || (args.Target.Name.Equals("Barrel") && args.Target.DistanceToPlayer() > 200 && args.Target.DistanceToPlayer() < 400)) { return; } if (Menu.Item("WTurret").IsActive() && Player.UnderTurret(true)) { return; } if (unit.ChampionName.Equals("Nautilus") || (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R))) { var d = unit.DistanceToPlayer(); var travelTime = d / args.SData.MissileSpeed; var delay = travelTime * 1000 - W.Delay + 150; //Console.WriteLine("TT: " + travelTime + " " + delay); Utility.DelayAction.Add((int)delay, () => CastW(castUnit)); return; } CastW(castUnit); } else if (type.Equals(SpellDataTargetType.LocationAoe) && args.End.DistanceToPlayer() < args.SData.CastRadius) { // annie moving tibbers if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R)) { return; } CastW(castUnit); } else if (type.Equals(SpellDataTargetType.Cone) && args.End.DistanceToPlayer() < args.SData.CastRadius) { CastW(castUnit); } else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self)) { var d = args.End.Distance(Player.ServerPosition); var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius; //Console.WriteLine(d + " " + " " + p); if (d < p) { //Console.WriteLine("CAST"); CastW(castUnit); } } }
private static void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender == null || !sender.IsValid) { return; } if (sender.IsMe) { var slot = Player.GetSpellSlot(args.SData.Name); if (slot.Equals(SpellSlot.E)) { Orbwalking.ResetAutoAttackTimer(); } return; } var autoW = Menu.Item("WSpells").IsActive() && W.IsReady(); if (!autoW) { return; } var unit = sender as Obj_AI_Hero; var castUnit = unit; var type = args.SData.TargettingType; var blockableSpell = unit != null && unit.IsEnemy && SpellBlock.Contains(unit, args); if (!blockableSpell) { //Console.WriteLine("RETURN"); return; } //Console.WriteLine(type); if (!unit.IsValidTarget() || Menu.Item("WMode").GetValue <StringList>().SelectedIndex == 1) { var target = TargetSelector.GetSelectedTarget(); if (target == null || !target.IsValidTarget(W.Range)) { target = TargetSelector.GetTargetNoCollision(W); } if (target != null && target.IsValidTarget(W.Range)) { castUnit = target; } } if (type.IsTargeted() && args.Target != null && args.Target.IsMe) { if (Menu.Item("WTurret").IsActive() && Player.UnderTurret(true)) { return; } CastW(castUnit); } else if (unit.ChampionName.Equals("Riven") && unit.Distance(Player) < 400) { CastW(castUnit); } else if (unit.ChampionName.Equals("Bard") && type.Equals(SpellDataTargetType.Location) && args.End.Distance(Player.ServerPosition) < 300) { Utility.DelayAction.Add(400 + (int)(unit.Distance(Player) / 7f), () => CastW(castUnit)); } else if (args.SData.IsAutoAttack() && args.Target != null && args.Target.IsMe) { CastW(castUnit); } else if (type.Equals(SpellDataTargetType.SelfAoe) && unit.Distance(Player.ServerPosition) < args.SData.CastRange + args.SData.CastRadius / 2) { CastW(castUnit); } else if (type.Equals(SpellDataTargetType.Self)) { // this probably isn't needed if ((unit.ChampionName.Equals("Kalista") && Player.Distance(unit) < 350)) { CastW(castUnit); } // need to look into this if (unit.ChampionName.Equals("Zed") && Player.Distance(unit) < 300) { Utility.DelayAction.Add(200, () => CastW(castUnit)); } } }