public static void WardTrickLogic() { if (Q.IsReady() && Player.Mana >= Q.ManaCost) { SkyLv_Jax.WardPos = Game.CursorPos; Obj_AI_Minion WardObject; if (Game.CursorPos.Distance(Player.Position) <= 700) { WardObject = ObjectManager.Get <Obj_AI_Minion>().Where(Ward => Ward.Distance(Game.CursorPos) < 200 && !Ward.IsDead && Ward.Name.ToLower().Contains("ward")).FirstOrDefault(); } else { Vector3 DWpos = Game.CursorPos - Player.ServerPosition; DWpos.Normalize(); SkyLv_Jax.WardPos = Player.ServerPosition + DWpos * (600); WardObject = ObjectManager.Get <Obj_AI_Minion>().Where(Ward => Ward.Distance(SkyLv_Jax.WardPos) < 200 && !Ward.IsDead && Ward.Name.ToLower().Contains("ward")).FirstOrDefault(); } if (WardObject == null) { if (!SkyLv_Jax.WardPos.IsWall()) { InventorySlot WardSlot = Items.GetWardSlot(); Items.UseItem((int)WardSlot.Id, SkyLv_Jax.WardPos); } } else if (WardObject != null) { Q.CastOnUnit(WardObject); } } }
public static void FleeMode(Vector2 Position, float MinimumRange, float MaximumRange, bool WardTrick = false, List <AIHeroClient> ignore = null) { if (!Q.IsReady() || Player.Mana < Q.ManaCost) { return; } Vector2 PlayerPosition = Player.ServerPosition.To2D(); Obj_AI_Base BestDashingTarget = null; Vector2 BestLocaltion = PlayerPosition + (Vector2.Normalize(Position - PlayerPosition) * (Player.MoveSpeed * 0.35f)); float BestDistance = Position.Distance(PlayerPosition) - 50; foreach (Obj_AI_Base PotancialTarget in ObjectManager.Get <Obj_AI_Base>().Where(target => !target.IsDead && target.IsTargetable && target.IsValidTarget())) { float RealQRange = MaximumRange + PotancialTarget.BoundingRadius; float DistanceToEnemy = Player.Distance(PotancialTarget); //Declaring Minimum And Maximum Range => if (DistanceToEnemy > MinimumRange && DistanceToEnemy < RealQRange) { Vector2 PositionAfterQ = PotancialTarget.ServerPosition.To2D(); float DistanceQ = Position.Distance(PositionAfterQ); if (BestDistance > DistanceQ) { BestDashingTarget = PotancialTarget; BestDistance = DistanceQ; BestLocaltion = PositionAfterQ; } } } if (BestDashingTarget != null) { Q.CastOnUnit(BestDashingTarget); return; } if (BestDashingTarget == null) { if (WardTrick) { SkyLv_Jax.WardPos = Game.CursorPos; Obj_AI_Minion WardObject; if (Game.CursorPos.Distance(Player.Position) <= 700) { WardObject = ObjectManager.Get <Obj_AI_Minion>().Where(Ward => Ward.Distance(Game.CursorPos) < 200 && !Ward.IsDead).MinOrDefault(i => i.Distance(Game.CursorPos)); } else { Vector3 DWpos = Game.CursorPos - Player.ServerPosition; DWpos.Normalize(); SkyLv_Jax.WardPos = Player.ServerPosition + DWpos * (600); WardObject = ObjectManager.Get <Obj_AI_Minion>().Where(Ward => Ward.Distance(SkyLv_Jax.WardPos) < 200 && !Ward.IsDead).MinOrDefault(i => i.Distance(Game.CursorPos)); } if (WardObject == null) { if (!SkyLv_Jax.WardPos.IsWall()) { InventorySlot WardSlot = Items.GetWardSlot(); Items.UseItem((int)WardSlot.Id, SkyLv_Jax.WardPos); } } else if (WardObject != null) { Q.CastOnUnit(WardObject); return; } } } }