private void TryR2Cast() { /*check min hits (by default 1) => doesnt influence the combo*/ if (!RivenMenu.Combo["onlyR2ToKs"].Cast <CheckBox>().CurrentValue) { UltimatePrediction.CheckUltimateHits(); return; } /*kill only*/ var pred = Prediction.Position.PredictUnitPosition(GetTarget, (int)(Spells.R2.CastDelay + GetTarget.Distance(Player.Instance) / Spells.R2.Speed * 1000)); Spells.ForceR2(me.Position.Extend(pred, 100)); }
public static void CheckUltimateHits() { int maxHitCount = 0; Vector2 bestEndVec = Vector2.Zero; Geometry.Polygon BestCone = null; for (int i = 0; i < 360; i += 20) { var endVec = PointOnCircle(i); Geometry.Polygon Cone = CreateUltimateCone(endVec); int currentHits = EntityManager.Heroes.Enemies.Where(x => x.IsValid && !x.IsDead && !x.IsZombie).Count( x => { var pred = Prediction.Position.PredictUnitPosition(x, (int)(Spells.R2.CastDelay + x.Distance(Player.Instance) / Spells.R2.Speed * 1000)); bool inside = Cone.IsInside(pred); return(inside); }); if (currentHits > maxHitCount) { maxHitCount = currentHits; bestEndVec = endVec; BestCone = Cone; } } if (BestCone != null && maxHitCount >= RivenMenu.Combo["minR2Hits"].Cast <Slider>().CurrentValue) { Spells.ForceR2(Player.Instance.Position.Extend(bestEndVec, 100)); } }