public void CastE(Obj_AI_Base target, Vector3 position) { if (target != null && E.IsReady) { var distance = MyHero.Distance(position); if (distance <= E.Range) { var startPosition = position.To2D(); var endPosition = (MyHero.Position + (position - MyHero.Position).Normalized() * QE.Range).To2D(); var travelTimeToBall = E.CastDelay + (int)(1000 * distance / E.Speed); QE.CastDelay = travelTimeToBall; var pred = QE.GetPrediction(target, new CustomSettings { SourcePosition = position }); QE.CachedPredictions.Clear(); if (pred.HitChancePercent >= QE.HitChancePercent) { if (pred.CastPosition.To2D().Distance(startPosition, endPosition, true, true) <= Math.Pow(QE.Width + target.BoundingRadius, 2)) { var castPositionInRange = MyHero.Position + (pred.CastPosition - MyHero.Position).Normalized() * 100; QE.Cast(castPositionInRange); } } } } }
private void CastQ(Obj_AI_Base target) { PredictionResult prediction; if (ObjectManager.Player.Distance(target) < Q1.Range) { var oldrange = Q1.Range; Q1.Range = Q2.Range; prediction = Q1.GetPrediction(target, true); Q1.Range = oldrange; } else if (ObjectManager.Player.Distance(target) < Q2.Range) { var oldrange = Q2.Range; Q2.Range = Q3.Range; prediction = Q2.GetPrediction(target, true); Q2.Range = oldrange; } else if (ObjectManager.Player.Distance(target) < Q3.Range) { prediction = Q3.GetPrediction(target, true); } else { return; } if (prediction.HitChance >= HitChance.High) { if (ObjectManager.Player.ServerPosition.Distance(prediction.CastPosition) <= Q1.Range + Q1.Width()) { Vector3 p; if (ObjectManager.Player.ServerPosition.Distance(prediction.CastPosition) > 300) { p = prediction.CastPosition - 100 * (prediction.CastPosition.To2D() - ObjectManager.Player.ServerPosition.To2D()).Normalized() .To3D(); } else { p = prediction.CastPosition; } Q1.Cast(p); } else if (ObjectManager.Player.ServerPosition.Distance(prediction.CastPosition) <= ((Q1.Range + Q2.Range) / 2)) { var p = ObjectManager.Player.ServerPosition.To2D().Extend(prediction.CastPosition.To2D(), Q1.Range - 100); if (!CheckQCollision(target, prediction.UnitPosition, p.To3D())) { Q1.Cast(p.To3D()); } } else { var p = ObjectManager.Player.ServerPosition.To2D() + Q1.Range * (prediction.CastPosition.To2D() - ObjectManager.Player.ServerPosition.To2D()).Normalized (); if (!CheckQCollision(target, prediction.UnitPosition, p.To3D())) { Q1.Cast(p.To3D()); } } } }
private void CastER(Obj_AI_Base target) // copied from ScienceARK { PredictionResult prediction; if (ObjectManager.Player.Distance(target) < E1.Range) { var oldrange = E1.Range; E1.Range = E2.Range; prediction = E1.GetPrediction(target, true); E1.Range = oldrange; } else if (ObjectManager.Player.Distance(target) < E2.Range) { var oldrange = E2.Range; E2.Range = E3.Range; prediction = E2.GetPrediction(target, true); E2.Range = oldrange; } else if (ObjectManager.Player.Distance(target) < E3.Range) { prediction = E3.GetPrediction(target, true); } else { return; } if (prediction.HitChance >= HitChance.High) { if (ObjectManager.Player.ServerPosition.Distance(prediction.CastPosition) <= E1.Range + E1.Width()) { Vector3 p; if (ObjectManager.Player.ServerPosition.Distance(prediction.CastPosition) > 300) { p = prediction.CastPosition - 100 * (prediction.CastPosition.To2D() - ObjectManager.Player.ServerPosition.To2D()).Normalized() .To3D(); } else { p = prediction.CastPosition; } R.Cast(); E1.Cast(p); } else if (ObjectManager.Player.ServerPosition.Distance(prediction.CastPosition) <= ((E1.Range + E1.Range) / 2)) { var p = ObjectManager.Player.ServerPosition.To2D() .Extend(prediction.CastPosition.To2D(), E1.Range - 100); { R.Cast(); E1.Cast(p.To3D()); } } else { var p = ObjectManager.Player.ServerPosition.To2D() + E1.Range * (prediction.CastPosition.To2D() - ObjectManager.Player.ServerPosition.To2D()).Normalized (); { R.Cast(); E1.Cast(p.To3D()); } } } }
private void CastSpell(SpellBase QWER, AIHeroClient target, int HitChanceNum) { QWER.CastIfHitchanceEquals(target, (EloBuddy.SDK.Enumerations.HitChance)HitChanceNum, true); return; //HitChance 0 - 2 // example CastSpell(Q, ts, 2); var poutput = QWER.GetPrediction(target); var col = poutput.CollisionObjects.Count(ColObj => ColObj.IsEnemy && ColObj.IsMinion && !ColObj.IsDead); if (target.IsDead || col > 0 || target.Path.Count() > 1) { return; } if ((target.Path.Count() == 0 && target.Position == target.ServerPosition) || target.HasBuff("Recall")) { QWER.Cast(poutput.CastPosition); return; } if (HitChanceNum == 0) { QWER.Cast(target); } else if (HitChanceNum == 1) { if ((int)poutput.HitChance > 4) { QWER.Cast(poutput.CastPosition); } } else if (HitChanceNum == 2) { List <Vector2> waypoints = target.GetWaypoints(); if (waypoints.Last().To3D().Distance(poutput.CastPosition) > QWER.Width() && (int)poutput.HitChance == 5) { if (waypoints.Last().To3D().Distance(player.Position) <= target.Distance(player.Position) || (target.Path.Count() == 0 && target.Position == target.ServerPosition)) { if (player.Distance(target.ServerPosition) < QWER.Range - (poutput.CastPosition.Distance(target.ServerPosition) + target.BoundingRadius)) { QWER.Cast(poutput.CastPosition); } } else if ((int)poutput.HitChance == 5) { QWER.Cast(poutput.CastPosition); } } } else if (HitChanceNum == 3) { List <Vector2> waypoints = target.GetWaypoints(); float SiteToSite = ((target.MoveSpeed * QWER.CastDelay) + (player.Distance(target.ServerPosition) / QWER.Speed()) - QWER.Width()) * 6; float BackToFront = ((target.MoveSpeed * QWER.CastDelay) + (player.Distance(target.ServerPosition) / QWER.Speed())); if (player.Distance(waypoints.Last().To3D()) < SiteToSite || player.Distance(target.Position) < SiteToSite) { QWER.CastIfHitchanceEquals(target, EloBuddy.SDK.Enumerations.HitChance.High, true); } else if ((target.ServerPosition.Distance(waypoints.Last().To3D()) > SiteToSite || Math.Abs(player.Distance(waypoints.Last().To3D()) - player.Distance(target.Position)) > BackToFront)) { if (waypoints.Last().To3D().Distance(player.Position) <= target.Distance(player.Position)) { if (player.Distance(target.ServerPosition) < QWER.Range - (poutput.CastPosition.Distance(target.ServerPosition))) { QWER.Cast(poutput.CastPosition); } } else { QWER.Cast(poutput.CastPosition); } } } else if (HitChanceNum == 4 && (int)poutput.HitChance > 4) { List <Vector2> waypoints = target.GetWaypoints(); float SiteToSite = ((target.MoveSpeed * QWER.CastDelay) + (player.Distance(target.ServerPosition) / QWER.Speed()) - QWER.Width()) * 6; float BackToFront = ((target.MoveSpeed * QWER.CastDelay) + (player.Distance(target.ServerPosition) / QWER.Speed())); if (player.Distance(waypoints.Last().To3D()) < SiteToSite || player.Distance(target.Position) < SiteToSite) { QWER.CastIfHitchanceEquals(target, EloBuddy.SDK.Enumerations.HitChance.High, true); } else if ((target.ServerPosition.Distance(waypoints.Last().To3D()) > SiteToSite || Math.Abs(player.Distance(waypoints.Last().To3D()) - player.Distance(target.Position)) > BackToFront)) { if (waypoints.Last().To3D().Distance(player.Position) <= target.Distance(player.Position)) { if (player.Distance(target.ServerPosition) < QWER.Range - (poutput.CastPosition.Distance(target.ServerPosition))) { QWER.Cast(poutput.CastPosition); } } else { QWER.Cast(poutput.CastPosition); } } } }