//Copied from Fluxy's YasouBuddy - He is a god and so is his yasou addon. public static Vector3 ExtendVector3(this Vector3 vector, Vector3 direction, float distance) { if (vector.To2D().Distance(direction.To2D()) == 0) { return vector; } var edge = direction.To2D() - vector.To2D(); edge.Normalize(); var v = vector.To2D() + edge * distance; return new Vector3(v.X, v.Y, vector.Z); }
public static bool IsSafe(Vector3 Position) { if((Position.UnderTurret(true) && !ObjectManager.Player.UnderTurret(true)) || (PositioningVariables.EnemiesClose.Count() > 1 && iSRGeometry.GetEnemyPoints().Contains(Position.To2D()))) { return false; } return true; }
public static List<Vector2> GetMinionsPredictedPositions(List<Obj_AI_Base> minions, float delay, float width, float speed, Vector3 from, float range, bool collision, SkillshotType stype, Vector3 rangeCheckFrom = new Vector3()) { from = from.To2D().IsValid() ? from : ObjectManager.Player.ServerPosition; return (from minion in minions select Prediction.GetPrediction( new PredictionInput { Unit = minion, Delay = delay, Radius = width, Speed = speed, From = @from, Range = range, Collision = collision, Type = stype, RangeCheckFrom = rangeCheckFrom }) into pos where pos.Hitchance >= HitChance.High select pos.UnitPosition.To2D()).ToList(); }
internal static float Distance(this Obj_AI_Base unit, Vector3 point, bool squared = false) { return unit.ServerPosition.To2D().Distance(point.To2D(), squared); }
private static bool CheckQCollision(Obj_AI_Base target, Vector3 targetPosition, Vector3 castPosition) { var direction = (castPosition.To2D() - ObjectManager.Player.ServerPosition.To2D()).Normalized(); var firstBouncePosition = castPosition.To2D(); var secondBouncePosition = firstBouncePosition + direction * 0.4f * ObjectManager.Player.ServerPosition.To2D().Distance(firstBouncePosition); var thirdBouncePosition = secondBouncePosition + direction * 0.6f * firstBouncePosition.Distance(secondBouncePosition); //TODO: WALL COLL if (thirdBouncePosition.Distance(targetPosition.To2D()) < SpellManager.Q1.Width + target.BoundingRadius) { var minion = EntityManager.MinionsAndMonsters.EnemyMinions.FirstOrDefault(m => m.IsValidTarget(2000)); if (minion != null) { var predictedPos = SpellManager.Q2.GetPrediction(minion); if (predictedPos.UnitPosition.To2D().Distance(secondBouncePosition) < SpellManager.Q2.Width + minion.BoundingRadius) { return true; } } } if (!(secondBouncePosition.Distance(targetPosition.To2D()) < SpellManager.Q1.Width + target.BoundingRadius) && !(thirdBouncePosition.Distance(targetPosition.To2D()) < SpellManager.Q1.Width + target.BoundingRadius)) return true; { //Check the first one var minion = EntityManager.MinionsAndMonsters.EnemyMinions.FirstOrDefault(m => m.IsValidTarget(2000)); if (minion == null) return false; var predictedPos = SpellManager.Q1.GetPrediction(minion); if (predictedPos.UnitPosition.To2D().Distance(firstBouncePosition) < SpellManager.Q1.Width + minion.BoundingRadius) { return true; } } return false; }
public static List<Vector2> GetMinionsPredictedPositions(List<Obj_AI_Base> minions, float delay, float width, float speed, Vector3 from, float range, bool collision, SkillshotType stype, Vector3 rangeCheckFrom = new Vector3()) { var result = new List<Vector2>(); from = from.To2D().IsValid() ? from : ObjectManager.Player.ServerPosition; foreach (var minion in minions) { var pos = Prediction.GetPrediction(new PredictionInput { Unit = minion, Delay = delay, Radius = width, Speed = speed, From = from, Range = range, Collision = collision, Type = stype, RangeCheckFrom = rangeCheckFrom }); if (pos.Hitchance >= HitChance.High) { result.Add(pos.UnitPosition.To2D()); } } return result; }
public static Vector3 WallQpos(AIHeroClient target) { if (target == null) { return new Vector3(); } for (var i = 100; i < 900; i += 100) { var qPos = new Vector3( Prediction.Position.PredictUnitPosition(target, 250).To3D().X + i, Prediction.Position.PredictUnitPosition(target, 250).To3D().Y + i, Prediction.Position.PredictUnitPosition(target, 250).To3D().Z); if ( NavMesh.GetCollisionFlags(qPos.To2D() .RotateAroundPoint((Vector2) qPos, 20)).HasFlag(CollisionFlags.Building) || NavMesh.GetCollisionFlags(qPos.To2D() .RotateAroundPoint((Vector2) qPos, 20)).HasFlag(CollisionFlags.Wall)) return qPos; } return new Vector3(); }
static void MoveTo(Vector3 position) { var pointToMoveTo = Player.ServerPosition + 250 * (position.To2D() - Player.ServerPosition.To2D()).Normalized().To3D(); Player.IssueOrder(GameObjectOrder.MoveTo, pointToMoveTo); }
private void Cast_Inverted_E(Vector3 position) { if (!E.IsReady()) return; var pos = ObjectManager.Player.ServerPosition.To2D().Extend(position.To2D(), -300).To3D(); E.Cast(pos, UsePackets()); }
public static Vector2? GetFirstWallPoint(Vector3 from, Vector3 to, float step = 25) { return GetFirstWallPoint(from.To2D(), to.To2D(), step); }