Example #1
0
        internal float Get(GameObject from, GameObject target)
        {
            if (IsDisposing)
            {
                return(0);
            }

            Tuple <float, float> output;

            if (CachedValues.TryGetValue(new KeyValuePair <int, int>(from.NetworkId, target.NetworkId), out output))
            {
                if (Game.Time * 1000 - output.Item1 < RefreshRate)
                {
                    return(output.Item2);
                }

                CachedValues[new KeyValuePair <int, int>(from.NetworkId, target.NetworkId)] = new Tuple <float, float>(
                    Game.Time * 1000, from.Distance(target));
            }
            else
            {
                CachedValues[new KeyValuePair <int, int>(from.NetworkId, target.NetworkId)] = new Tuple <float, float>(
                    Game.Time * 1000, from.Distance(target));
            }
            return(CachedValues[new KeyValuePair <int, int>(from.NetworkId, target.NetworkId)].Item2);
        }
Example #2
0
        private static void CheckKeyBindings()
        {
            if (main_menu["taliyah.pullenemy"].GetValue <MenuKeyBind>().Active || main_menu["taliyah.pushenemy"].GetValue <MenuKeyBind>().Active)
            {
                Variables.Orbwalker.Orbwalk();
                if (!pull_push_enemy && Variables.TargetSelector.Selected.Target != null && Variables.TargetSelector.Selected.Target.IsValidTarget(W.Range))
                {
                    Vector3 push_position = ObjectManager.Player.ServerPosition;

                    if (main_menu["taliyah.pushenemy"].GetValue <MenuKeyBind>().Active)
                    {
                        if (selectedGObj != null && selectedGObj.Distance(ObjectManager.Player) < 1000)
                        {
                            push_position = selectedGObj.Position;
                        }
                        else
                        {
                            push_position = Variables.TargetSelector.Selected.Target.ServerPosition + (Variables.TargetSelector.Selected.Target.ServerPosition - ObjectManager.Player.ServerPosition).Normalized() * 50f;
                        }
                    }
                    var pred = W.GetPrediction(Variables.TargetSelector.Selected.Target);
                    if (pred.Hitchance >= HitChance.High)
                    {
                        pull_push_enemy = true;
                        W.Cast(pred.UnitPosition, push_position);
                        DelayAction.Add(250, () => pull_push_enemy = false);
                    }
                }
            }
        }
Example #3
0
        private static void CheckKeyBindings()
        {
            if (!pull_push_enemy && TargetSelector.SelectedTarget != null && TargetSelector.SelectedTarget.IsValidTarget(W.Range))
            {
                Vector3 push_position = ObjectManager.Player.ServerPosition;

                if (main_menu["taliyah.pullenemy"].Cast <KeyBind>().CurrentValue || main_menu["taliyah.pushenemy"].Cast <KeyBind>().CurrentValue)
                {
                    if (main_menu["taliyah.pushenemy"].Cast <KeyBind>().CurrentValue)
                    {
                        if (selectedGObj != null && selectedGObj.Distance(ObjectManager.Player) < 1000)
                        {
                            push_position = selectedGObj.Position;
                        }
                        else
                        {
                            push_position = TargetSelector.SelectedTarget.ServerPosition + (TargetSelector.SelectedTarget.ServerPosition - ObjectManager.Player.ServerPosition).Normalized() * 50f;
                        }
                    }
                    var pred = W.GetPrediction(TargetSelector.SelectedTarget);
                    if (pred.Hitchance >= HitChance.High)
                    {
                        pull_push_enemy = true;
                        W.Cast(pred.UnitPosition);
                        DelayAction.Add(250, () => { ObjectManager.Player.Spellbook.CastSpell(SpellSlot.W, push_position, false); pull_push_enemy = false; });
                    }
                }
            }
        }
Example #4
0
 private static void GameObject_OnCreate(GameObject sender, EventArgs args)
 {
     if (sender.IsAlly && sender is Obj_AI_Base && sender.Name.ToLower().Contains("ward") && sender.Distance(_Player) < 600 && _jumpPos.Distance(sender) < 200 && WardjumpActive)
     {
         Program.W.Cast((Obj_AI_Base) sender);
     }
 }
Example #5
0
 private void OnCreateObj(GameObject obj, EventArgs args)
 {
     if (obj.Name != "missile" && obj.IsEnemy && obj.Distance(ObjectManager.Player.ServerPosition) < 900)
     {
         //J4 wall E
         if (obj.Name.ToLower() == "jarvanivwall")
         {
             var enemyJ4 = ValidTargets.First(h => h.CharData.BaseSkinName.Contains("Jarvan"));
             if (enemyJ4 != null && enemyJ4.IsValidTarget())
             {
                 this.CastE(enemyJ4.ServerPosition);
             }
         }
         if (obj.Name.ToLower().Contains("soraka_base_e_rune.troy") &&
             GameObjects.EnemyHeroes.Count(e => e.IsHPBarRendered && e.Distance(obj.Position) < 300) > 0)
         {
             this.Q.Cast(obj.Position);
         }
         var rengo = GameObjects.EnemyHeroes.FirstOrDefault(e => e.CharData.BaseSkinName == "Rengar");
         if (rengo != null)
         {
             //rengar ult
             if (obj.Name == "Rengar_LeapSound.troy")
             {
                 CastE(obj.Position);
             }
             //rengar passive brush jump (atm the object pos is the brush where it came from so
             //                                  we're just gonna assume he's gonna jump on us)
             if (obj.Position.Distance(ObjectManager.Player.Position) < 725 && (obj.Name == "Rengar_Base_P_Buf_Max.troy" || obj.Name == "Rengar_Base_P_Leap_Grass.troy"))
             {
                 CastE(ObjectManager.Player.ServerPosition);
             }
         }
     }
 }
Example #6
0
        private void OnCreateObj(GameObject obj, EventArgs args)
        {
            if (obj.Name != "missile" && obj.IsEnemy && obj.Distance(ObjectManager.Player.ServerPosition) < 900)
            {
                //J4 wall E
                if (obj.Name.ToLower() == "jarvanivwall")
                {
                    var enemyJ4 = ValidTargets.First(h => h.CharData.BaseSkinName.Contains("Jarvan"));
                    if (enemyJ4 != null && enemyJ4.LSIsValidTarget())
                    {
                        E.Cast(enemyJ4.ServerPosition);
                    }
                }

                /*if (obj.Name.ToLower().Contains("soraka_base_e_rune.troy") && EntityManager.Heroes.Enemies.Count(e => e.IsHPBarRendered && e.Distance(obj.Position) < 300) > 0)
                 * {
                 *  Q.Cast(obj.Position);
                 * }*/
                if (EntityManager.Heroes.Allies.All(h => h.CharData.BaseSkinName != "Rengar"))
                {
                    if (obj.Name == "Rengar_LeapSound.troy")
                    {
                        E.Cast(obj.Position);
                    }
                    if (obj.Name == "Rengar_Base_P_Buf_Max.troy" || obj.Name == "Rengar_Base_P_Leap_Grass.troy")
                    {
                        E.Cast(ObjectManager.Player.ServerPosition);
                    }
                }
            }
        }
Example #7
0
        public static bool Team(this GameObject obj, int value)
        {
            switch (value)
            {
            case 0:
                return(true);

            case 1:
                return(Game.MapId.Equals(GameMapId.SummonersRift) ? obj.Distance(ObjectsManager.Fturret) > 12000 : obj.Distance(ObjectsManager.Fturret) > 8000);

            case 2:
                return(Game.MapId.Equals(GameMapId.SummonersRift) ? obj.Distance(ObjectsManager.Fturret) < 12000 : obj.Distance(ObjectsManager.Fturret) < 8000);

            default:
                return(true);
            }
        }
Example #8
0
 //Number of enemies within the given distance of the given target. This method takes into account each enemy's combat reach.
 public static IEnumerable <GameObject> EnemiesWithinOf(double distance, GameObject target)
 {
     if (target == null)
     {
         return(new List <GameObject>());
     }
     return(Combat.Enemies.Where(e => target.Distance(e) <= distance + e.CombatReach));
 }
Example #9
0
        /// <summary>
        /// I have tried to do this the smart/elegant/good way using a simple equation, but it doesnt f*****g work.
        /// So here it is, hacked and done really weirdly and maybe even badly but it should work more reliably
        /// Also possibly more intensive too
        /// </summary>
        /// <param name="source"></param>
        /// <param name="target"></param>
        /// <param name="timeToImpact"></param>
        /// <returns></returns>
        private static Location GetStupidInterceptLocation(GameObject source, GameObject target, out int timeToImpact)
        {
            int       sourceVelocity = GetMaximumSpeed(source);
            LocationF targetVelocity = target.GetVelocity();

            //Before we do any calculations, we do some simple, non-intensive checks to make sure we can actually intercept the target before getting the location to intercept

            //We can not move! Interception is impossible
            if (sourceVelocity == 0)
            {
                timeToImpact = -1;
                return(target.GetLocation());
            }

            if (targetVelocity.Magnitude() == 0) //target is not moving, we will never get him
            {
                timeToImpact = source.Distance(target) / sourceVelocity;
                return(target.GetLocation());
            }

            if (!IsHeadingTowards(target, source.GetLocation(), 0f)) //if the target isn't heading towards us
            {
                timeToImpact = source.Distance(target) / sourceVelocity;
                return(target.GetLocation());
            }

            for (int i = 0; i < 4000; i++)
            {
                Location possibleLocation = target.GetLocation().Add(targetVelocity.GetIntLocation().Multiply(i));

                float sourceTimeToLocation = source.Distance(possibleLocation) / sourceVelocity;
                float targetTimeToLocation = target.Distance(possibleLocation) / targetVelocity.Magnitude();

                if (Mathf.Abs(sourceTimeToLocation - targetTimeToLocation) < 1)
                {
                    timeToImpact = Mathf.RoundToInt(sourceTimeToLocation);
                    return(possibleLocation);
                }
            }

            //Failed to find intercept point, just head to target
            timeToImpact = source.Distance(target) / sourceVelocity;
            return(target.GetLocation());
        }
Example #10
0
        public int GetArrivalTime(Vector3 position)
        {
            var result = CastDelay;

            if (Speed != int.MaxValue)
            {
                result += (int)(1000 * SourceObject.Distance(position) / Speed);
            }
            return(result);
        }
Example #11
0
        public static int GetRHits(this Vector2 castPosition, GameObject targetEnemy)
        {
            var positions =
                EntityManager.Heroes.Enemies.Where(hero => !hero.IsDead && hero.IsValidTarget(SpellManager.R.Range))
                    .Select(hero => Prediction.Position.PredictUnitPosition(hero, 1000).To3D())
                    .ToList();

            return targetEnemy.Distance(castPosition) > SpellManager.R.Range
                       ? 0
                       : positions.Count(enemyPos => castPosition.Distance(enemyPos) <= SpellManager.R.Radius);
        }
Example #12
0
        public static int GetRHits(this Vector2 castPosition, GameObject targetEnemy)
        {
            var positions =
                EntityManager.Heroes.Enemies.Where(hero => !hero.IsDead && hero.IsValidTarget(SpellManager.R.Range))
                .Select(hero => Prediction.Position.PredictUnitPosition(hero, 1000).To3D())
                .ToList();

            return(targetEnemy.Distance(castPosition) > SpellManager.R.Range
                       ? 0
                       : positions.Count(enemyPos => castPosition.Distance(enemyPos) <= SpellManager.R.Radius));
        }
Example #13
0
 public override void OnDeleteObject(GameObject obj)
 {
     if (Missile != null && _missileDeleted && !string.IsNullOrEmpty(SpellData.ToggleParticleName))
     {
         var r = new Regex(SpellData.ToggleParticleName);
         if (r.Match(obj.Name).Success&& obj.Distance(Position, true) <= 100 * 100)
         {
             IsValid = false;
         }
     }
 }
Example #14
0
 public bool CheckIfCloseToObjectByDistance(GameObject obj1, GameObject obj2, int distance)
 {
     if (obj1.Distance(obj2) <= distance)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #15
0
        /// <summary>
        /// How many turns will it take this gameObject to arrive to target?
        /// </summary>
        /// <param name="source"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        public static int TimeToArrive(this GameObject source, MapObject target, bool includeSizes = false)
        {
            int distance = source.Distance(target);

            if (includeSizes)
            {
                distance -= source.GetSize();
                if (target is GameObject)
                {
                    distance -= ((GameObject)target).GetSize();
                }
            }

            return(distance / source.GetMaxSpeed());
        }
Example #16
0
        private static void OnCreate(GameObject sender, EventArgs Args)
        {
            if (Menu["Vayne_E"]["Gapcloser"] && E.IsReady())
            {
                var Rengar = GameObjects.EnemyHeroes.Find(heros => heros.ChampionName.Equals("Rengar"));
                var Khazix = GameObjects.EnemyHeroes.Find(heros => heros.ChampionName.Equals("Khazix"));

                if (Rengar != null && Menu["Vayne_E"]["AntiRengar"])
                {
                    if (sender.Name == ("Rengar_LeapSound.troy") && sender.Distance(Me) < E.Range)
                    {
                        E.CastOnUnit(Rengar);
                    }
                }

                if (Khazix != null && Menu["Vayne_E"]["AntiKhazix"])
                {
                    if (sender.Name == ("Khazix_Base_E_Tar.troy") && sender.Distance(Me) <= 300)
                    {
                        E.CastOnUnit(Khazix);
                    }
                }
            }
        }
Example #17
0
        private static void AttackableUnit_OnLeaveVisiblityClient(GameObject sender, EventArgs args)
        {//클라이언트 시야에서 사라질때
            var senderHero = sender as AIHeroClient;

            if (senderHero != null &&   //sender가 챔피언이면
                senderHero.IsEnemy)     //sender가 적이면
            {
                if (Config.Auto.AutoE.UseEBush &&
                    SpellManager.E.IsReady() &&
                    sender.Distance(GameObjects.Player) <= 1125 &&
                    NavMesh.IsWallOfGrass(sender.Position, 1))
                {
                    SpellManager.E.Cast(sender.Position);
                }
            }
        }
        public static int TurnsToReach(this GameObject obj, MapObject destination)
        {
            int speed = obj.GetMaxSpeed();

            if (obj is Portal)
            {
                speed = GameState.Game.LavaGiantMaxSpeed;
            }
            if (speed == 0)
            {
                return(0);
            }
            double turns = 1.0 * obj.Distance(destination) / speed;

            return((int)System.Math.Ceiling(turns));
        }
Example #19
0
        private void GetToSafety(GameObject allyTurret, bool runToGrass = true)
        {
            if (allyTurret == null)
            {
                Console.WriteLine("CANT GET OUT, ALLY TURRET IS NULL");
                return;
            }

            BotData.SetDanger();

            if (runToGrass)
            {
                var nearestGrass = WallExtension.NearestGrass(Global.Player, 800);

                if (!nearestGrass.IsZero)
                {
                    lastGrassVector    = nearestGrass;
                    lastFoundGrassTick = Environment.TickCount;
                }

                if (!lastGrassVector.IsZero &&
                    Global.Player.Distance(lastGrassVector) < Global.Player.Distance(allyTurret.ServerPosition))
                {
                    DebugConsole.WriteLine($"Running to: GRASS (SAFETY)", MessageState.Debug);
                    BotData.SetNewMovePosition(Global.Player.ServerPosition.Extend(lastGrassVector, 600), false);
                    return;
                }
                return;
            }

            var allyHero2 = GameObjects.AllyHeroes.FirstOrDefault(x => !x.IsMe && x.IsValidTarget(1800, true) && !x.UnderEnemyTURRET());

            if (allyTurret.Distance(Global.Player) <= 3500 || allyHero2 == null)
            {
                DebugConsole.WriteLine($"Running to: ALLY TURRET (SAFETY)", MessageState.Debug);
                var pos = allyTurret.ServerPosition.Extend(Global.Player.GetFountainPos(), 800);
                BotData.SetNewMovePosition(pos);
            }

            if (allyHero2 != null)
            {
                DebugConsole.WriteLine($"Running to: ALLY HERO (SAFETY)", MessageState.Debug);
                var pos = Global.Player.ServerPosition.Extend(allyHero2.ServerPosition, 800);
                BotData.SetNewMovePosition(pos, true, 700);
            }
        }
Example #20
0
 void GameObject_OnCreate(GameObject sender, EventArgs args)
 {
     if (sender.Name == "BlobDrop" || sender.Name.Contains("Zac_Base_P_Chunk") || sender.Name.Contains("Zac_Base_W_Chunk_Splat"))
     {
         this.Blobs.Add(sender);
         if (sender.Distance(ObjectManager.Player) < 35)
         {
             this.DelayOnUpdate = Variables.TickCount;
         }
     }
     else
     {
         if (sender.Name.Contains("Zac"))
         {
             Game.PrintChat(sender.Name);
         }
     }
 }
Example #21
0
 public static float GetDistanceSqr(this GameObject target1, GameObject target2)
 {
     if (!CachedDistanceSqr.ContainsKey(target1.NetworkId))
     {
         CachedDistanceSqr.Add(target1.NetworkId, new Dictionary <int, float>());
     }
     if (!CachedDistanceSqr[target1.NetworkId].ContainsKey(target2.NetworkId))
     {
         CachedDistanceSqr[target1.NetworkId].Add(target2.NetworkId, target1.Distance(target2, true));
     }
     if (!CachedDistanceSqr.ContainsKey(target2.NetworkId))
     {
         CachedDistanceSqr.Add(target2.NetworkId, new Dictionary <int, float>());
     }
     if (!CachedDistanceSqr[target2.NetworkId].ContainsKey(target1.NetworkId))
     {
         CachedDistanceSqr[target2.NetworkId].Add(target1.NetworkId, CachedDistanceSqr[target1.NetworkId][target2.NetworkId]);
     }
     return(CachedDistanceSqr[target1.NetworkId][target2.NetworkId]);
 }
Example #22
0
        public override void OnCreateObject(GameObject obj)
        {
            var minion = obj as Obj_AI_Minion;

            if (SpawnObject == null && minion != null)
            {
                if (minion.BaseSkinName == SpellData.MissileSpellName)
                {
                    // Force skillshot to be removed
                    IsValid = false;
                }
            }

            if (SpawnObject != null)
            {
                if (Utils.GetGameObjectName(obj) == SpellData.ToggleParticleName &&
                    obj.Distance(SpawnObject, true) <= 300.Pow())
                {
                    IsValid = false;
                }
            }
        }
Example #23
0
        public static void NavigateToUnitLos(GameObject unit, float distance)
        {
            if (RoutineManager.IsAnyDisallowed(CapabilityFlags.Movement))
            {
                return;
            }

            if (unit == null)
            {
                return;
            }

            if (!MovementManager.IsMoving && !unit.InView())
            {
                Core.Me.Face(Core.Me.CurrentTarget);
            }

            if (AvoidanceManager.Avoids.Any(r => r.IsPointInAvoid(unit.Location)))
            {
                return;
            }

            if (unit.Distance(Core.Me) > distance)
            {
                Navigator.MoveTo(new MoveToParameters(unit.Location));
            }

            if (Core.Me.Distance(Core.Me.CurrentTarget.Location) <= distance && unit.InView() && unit.InLineOfSight())
            {
                if (MovementManager.IsMoving)
                {
                    Navigator.PlayerMover.MoveStop();
                }
            }
            else
            {
                Navigator.MoveTo(new MoveToParameters(unit.Location));
            }
        }
        private void OnCreateObj(GameObject sender, EventArgs args)
        {
#if DEBUG
            if (sender != null && sender.IsValid() && sender.Distance(ObjectManager.Player.Position) < 2500 &&
                !sender.Name.Contains("missile"))
            {
                Console.WriteLine(sender.Name + " => " + sender.ObjectType + " @ " + sender.Position);
            }
#endif


            if (sender != null && sender.IsValid())
            {
                if (sender.Name.Contains("SRU_Baron")) //Set Cooldown to 0
                {
                    _lastBaronKill = 0;
                }

                if (sender.Name.Contains("SRU_Dragon")) //Set Cooldown to 0
                {
                    _lastDrakeKill = 0;
                }


                if (sender.Name.Contains("CampRespawn")) //Check which one //FALLBACK FOR ANIMATIONS
                {
                    var pos = sender.Position;
                    if (pos == _baronPos)
                    {
                        _lastBaronKill = (int)Math.Round(Game.Time);
                    }
                    else if (pos == _drakePos)
                    {
                        _lastDrakeKill = (int)Math.Round(Game.Time);
                    }
                }
            }
        }
Example #25
0
 /// <summary>
 ///     Gets the distance between two GameObjects
 /// </summary>
 /// <param name="source">The Source</param>
 /// <param name="target">The Target</param>
 /// <returns>The distance between the two objects</returns>
 public static float Distance(this GameObject source, GameObject target)
 {
     return(source.Distance(target.Position));
 }
Example #26
0
 /// <summary>
 ///     Gets the distance between a <see cref="GameObject" /> and a <see cref="Vector3" />
 /// </summary>
 /// <param name="source">The Source</param>
 /// <param name="position">The Position</param>
 /// <returns>The distance between a <see cref="GameObject" /> and a <see cref="Vector3" /></returns>
 public static float Distance(this GameObject source, Vector3 position)
 {
     return(source.Distance(position.ToVector2()));
 }
Example #27
0
 public static void GameObject_OnCreate(GameObject sender, EventArgs args)
 {
     if (sender.IsAlly && sender is Obj_AI_Base && sender.Name.ToLower().Contains("ward") && sender.Distance(_Player) < 600 && _jumpPos.Distance(sender) < 200)
     {
         SpellsManager.E.Cast((Obj_AI_Base)sender);
     }
 }
Example #28
0
        private static void AddReticleToAxe(GameObject obj)
        {
            var a = Axes.Where(m => m.MissileIsValid && m.Reticle == null).OrderBy(m => obj.Distance(m.Missile.EndPosition, true)).FirstOrDefault();

            if (a != null)
            {
                a.AddReticle(obj);
            }
        }
Example #29
0
 private static void GameObject_OnCreate(GameObject sender, EventArgs args)
 {
     if (sender.IsAlly && sender is Obj_Ward && sender.Distance(_Player) < 600 && _jumpPos.Distance(sender) < 200 && WardjumpActive)
     {
         Program.W.Cast((Obj_Ward) sender);
     }
 }
Example #30
0
        private void OnCombo()
        {
            bool useQ = Menu["combo"]["useq"].Enabled;
            bool useW = Menu["combo"]["usew"].Enabled;
            bool useE = Menu["combo"]["usee"].Enabled;
            bool useR = Menu["combo"]["user"].Enabled;

            if (meow != null && !meow.IsDead && meow.IsValid)
            {
                if (meow.Distance(Player) <= Menu["combo"]["pickup"].As <MenuSlider>().Value)
                {
                    Orbwalker.Move(meow.ServerPosition);
                }
            }
            if (R.Ready && useR)
            {
                var target = GetBestEnemyHeroTargetInRange(400);

                if (target.IsValidTarget())
                {
                    if (target != null && target.Health < Player.GetSpellDamage(target, SpellSlot.Q) + Player.GetSpellDamage(target, SpellSlot.E) + Player.GetSpellDamage(target, SpellSlot.R) && target.Health > Menu["combo"]["waste"].As <MenuSlider>().Value)
                    {
                        if (!R.IsCharging)
                        {
                            R.StartCharging(target.ServerPosition);
                        }
                        if (R.IsCharging && target.Distance(Player) < 400)
                        {
                            R.Cast(target.ServerPosition);
                        }
                    }
                }
            }
            if (E.Ready && useE)
            {
                var target = GetBestEnemyHeroTargetInRange(E.Range);

                if (target.IsValidTarget())
                {
                    if (target != null)
                    {
                        if (Menu["combo"]["wall"].Enabled)
                        {
                            for (var i = 0; i < 7; i++)
                            {
                                var test = Player.ServerPosition.Extend(target.ServerPosition, Player.Distance(target) + 70 * i);
                                DelayAction.Queue(150, () =>
                                {
                                    if (IsWall(test, true))
                                    {
                                        E.CastOnUnit(target);
                                    }
                                });
                            }

                            if (Menu["combo"]["ignore"].Enabled && target.Health < Player.GetSpellDamage(target, SpellSlot.Q) + Player.GetSpellDamage(target, SpellSlot.E))
                            {
                                E.CastOnUnit(target);
                            }
                        }
                        if (!Menu["combo"]["wall"].Enabled)
                        {
                            E.CastOnUnit(target);
                        }
                    }
                }
            }
            if (Q.Ready && useQ)
            {
                var target = GetBestEnemyHeroTargetInRange(Q.Range);

                if (target.IsValidTarget())
                {
                    if (target.IsValidTarget(Q.Range))
                    {
                        if (target != null)
                        {
                            Q.Cast(target);
                        }
                    }
                }
            }
            if (W.Ready && useW)
            {
                var target = GetBestEnemyHeroTargetInRange(W.Range);

                if (target.IsValidTarget())
                {
                    if (target.IsValidTarget(W.Range))
                    {
                        if (target != null)
                        {
                            W.Cast();
                        }
                    }
                }
            }
        }
Example #31
0
        public override void OnCreateObject(GameObject obj)
        {
            var minion = obj as Obj_AI_Minion;

            if (SpawnObject == null && minion != null)
            {
                if (minion.BaseSkinName == SpellData.MissileSpellName)
                {
                    // Force skillshot to be removed
                    IsValid = false;
                }
            }

            if (SpawnObject != null)
            {
                if (Utils.GetGameObjectName(obj) == SpellData.ToggleParticleName &&
                    obj.Distance(SpawnObject, true) <= 300.Pow())
                {
                    IsValid = false;
                }
            }
        }
Example #32
0
 private static void AddReticleToAxe(GameObject obj)
 {
     var a = Axes.Where(m => m.MissileIsValid && m.Reticle == null).OrderBy(m => obj.Distance(m.Missile.EndPosition, true)).FirstOrDefault();
     if (a != null)
     {
         a.AddReticle(obj);
     }
 }
Example #33
0
 private void OnCreateObj(GameObject obj, EventArgs args)
 {
     if (obj.Name != "missile" && obj.IsEnemy && obj.Distance(ObjectManager.Player.ServerPosition) < 900)
     {
         //J4 wall E
         if (obj.Name.ToLower() == "jarvanivwall")
         {
             var enemyJ4 = ValidTargets.First(h => h.CharData.BaseSkinName.Contains("Jarvan"));
             if (enemyJ4 != null && enemyJ4.LSIsValidTarget())
                 E.Cast(enemyJ4.ServerPosition);
         }
         /*if (obj.Name.ToLower().Contains("soraka_base_e_rune.troy") && EntityManager.Heroes.Enemies.Count(e => e.IsHPBarRendered && e.Distance(obj.Position) < 300) > 0)
         {
             Q.Cast(obj.Position);
         }*/
         if (EntityManager.Heroes.Allies.All(h => h.CharData.BaseSkinName != "Rengar"))
         {
             if (obj.Name == "Rengar_LeapSound.troy")
             {
                 E.Cast(obj.Position);
             }
             if (obj.Name == "Rengar_Base_P_Buf_Max.troy" || obj.Name == "Rengar_Base_P_Leap_Grass.troy")
             {
                 E.Cast(ObjectManager.Player.ServerPosition);
             }
         }
     }
 }
Example #34
0
 public static void GameObject_OnCreate(GameObject sender, System.EventArgs args)
 {
     if (sender != null && SpellsManager.W1 && W.IsReady() && sender.Distance(user) <= W.Range && SpellsManager.Wtimer > 1000 && !sender.IsDead && sender.IsAlly && SpellsManager.W1
         && sender.isWard() && W.IsInRange((Obj_AI_Minion)sender) && (RMenu.keybind("bubba") || JumperMenu.keybind("normal") || MiscMenu.keybind("wardjump")))
     {
         SpellsManager.W((Obj_AI_Base)sender, true);
         WardJump.lastward = Core.GameTickCount;
     }
 }
Example #35
0
        private float GetPairScore(KeyValuePair <int, GameObject> pair, Location elfLocation)
        {
            GameObject enemyGameObject             = pair.Value;
            float      distFromBuildLocationCircle = elfLocation.DistanceF(enemyGameObject) - distanceTarget;

            if (distFromBuildLocationCircle >= GetMaxRangeFromEnemyGameObjectCircle())
            {
                return(0);
            }

            float factor1;

            if (distFromBuildLocationCircle <= 0)
            {
                factor1 = Mathf.Pow(GetMaxRangeFromEnemyGameObjectCircle(), 1.1f) + 1 / factor1Normalization;
            }
            else
            {
                factor1 = Mathf.Pow(GetMaxRangeFromEnemyGameObjectCircle() - distFromBuildLocationCircle, 1.1f);
            }
            float factor2 = Mathf.InverseLerp(0, (GetMonitorAreaRadius() - Constants.Game.LavaGiantAttackRange - Constants.Game.CastleSize), enemyGameObject.Distance(monitorArea.GetCenter()) - Constants.Game.LavaGiantAttackRange - Constants.Game.CastleSize);

            return(factor1 * factor2);
        }
 public override void OnDeleteObject(GameObject obj)
 {
     if (Missile != null && MissileDeleted && !string.IsNullOrEmpty(SpellData.ToggleParticleName))
     {
         var r = new Regex(SpellData.ToggleParticleName);
         if (r.Match(obj.Name).Success && obj.Distance(Position, true) <= 100*100)
         {
             IsValid = false;
         }
     }
 }
 private static void GameObject_OnCreate(GameObject sender, EventArgs args)
 {
     if (sender.IsAlly && sender is Obj_AI_Base && sender.Name.ToLower().Contains("ward") && sender.Distance(_Player) < 600 && _jumpPos.Distance(sender) < 200 && WardjumpActive)
     {
         Program.E.Cast((Obj_AI_Base)sender);
     }
 }
Example #38
0
        public static void RenderArrowFromPlayer(GameObject target)
        {
            if (target == null)
            {
                return;
            }

            var extended = Global.Player.ServerPosition.Extend(target.ServerPosition, target.Distance(Global.Player));

            Render.WorldToScreen(extended, out var extendedVector2);
            Render.WorldToScreen(Global.Player.Position, out var playerV2);

            var arrowLine1 = extendedVector2 + (playerV2 - extendedVector2).Normalized().Rotated(40 * (float)Math.PI / 180) * 65;
            var arrowLine2 = extendedVector2 + (playerV2 - extendedVector2).Normalized().Rotated(-40 * (float)Math.PI / 180) * 65;

            Render.Line(extendedVector2, arrowLine1, Color.White);
            Render.Line(extendedVector2, arrowLine2, Color.White);
            Render.Line(playerV2, extendedVector2, Color.Orange);
        }
Example #39
0
 private void OnCreateObj(GameObject obj, EventArgs args)
 {
     if (obj.Name != "missile" && obj.IsEnemy && obj.Distance(ObjectManager.Player.ServerPosition) < 900)
     {
         //J4 wall E
         if (obj.Name.ToLower() == "jarvanivwall")
         {
             var enemyJ4 = ValidTargets.First(h => h.CharData.BaseSkinName.Contains("Jarvan"));
             if (enemyJ4 != null && enemyJ4.IsValidTarget())
             this.CastE(enemyJ4.ServerPosition);
         }
         /*if (obj.Name.ToLower().Contains("soraka_base_e_rune.troy") &&
             GameObjects.EnemyHeroes.Count(e => e.IsHPBarRendered && e.Distance(obj.Position) < 200) > 0)
         {
             this.Q.Cast(obj.Position);
         }*/
         var rengo = GameObjects.EnemyHeroes.FirstOrDefault(e => e.CharData.BaseSkinName == "Rengar");
         if (rengo != null)
         {
             //rengar ult
             if (obj.Name == "Rengar_LeapSound.troy")
             {
                 CastE(obj.Position);
             }
             //rengar passive brush jump (atm the object pos is the brush where it came from so
             //                                  we're just gonna assume he's gonna jump on us)
             if (obj.Position.Distance(ObjectManager.Player.Position) < 725 && (obj.Name == "Rengar_Base_P_Buf_Max.troy" || obj.Name == "Rengar_Base_P_Leap_Grass.troy"))
             {
                 CastE(ObjectManager.Player.ServerPosition);
             }
         }
     }
 }
Example #40
0
 private static void Obj_AI_Base_OnDelete(GameObject sender, EventArgs args)
 {
     if (sender.Name == "Zed_Base_Clone_idle.troy")
     {
         if (wClone != null && sender.Distance(wClone) <= 25 || (Environment.TickCount - wTick) >= 4500)
             wClone = null;
         if (rClone != null && sender.Distance(rClone) <= 25 || (Environment.TickCount - rTick) >= 7500)
         {
             rClone = null;
             rTarg = null;
             combo = 0;
         }
     }
 }