Пример #1
0
        static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args)
        {
            if (Orbwalker.ActiveModesFlags != Orbwalker.ActiveModes.None && target != null && target.IsValidTarget())
            {
                if (!Q.IsReady() && !W.IsReady() && CanCastHydra())
                {
                    Hydra.Cast();
                }
                if (!Q.IsReady() && !W.IsReady() && CanCastTitan())
                {
                    Titan.Cast();
                }
                lastAA = Core.GameTickCount;
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                {
                    if ((Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)))
                    {
                        if (QNum == 2 && W.IsReady())
                        {
                            var target2 = (ComboTarget != null && ComboTarget.IsValidTarget(WRange)) ? ComboTarget :
                                          TargetSelector.GetTarget(WRange, DamageType.Physical, null, true);
                            if (target2 != null && target2.IsValidTarget() && !CanCastHydra())
                            {
                                Player.CastSpell(SpellSlot.W);
                                return;
                            }
                            if (CanCastHydra())
                            {
                                Hydra.Cast();
                            }
                        }
                    }
                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                    {
                        if (QNum == 2 && W.IsReady())
                        {
                            var target2 = (JCTarget != null && JCTarget.IsValidTarget(WRange)) ? JCTarget : EntityManager.MinionsAndMonsters.GetJungleMonsters(null, WRange, true).FirstOrDefault();
                            if (target2 != null && target2.IsValidTarget() && !CanCastHydra())
                            {
                                Player.CastSpell(SpellSlot.W);
                                return;
                            }
                            if (CanCastHydra())
                            {
                                Hydra.Cast();
                            }
                        }
                    }


                    if (target.IsValidTarget(Q.Range) && target.IsValid && !target.IsDead && !target.IsZombie)
                    {
                        if (QNum != 2 || !W.IsReady())
                        {
                            Player.CastSpell(SpellSlot.Q, target.Position);
                        }
                    }
                }
            }
        }
Пример #2
0
        private static void Obj_AI_Base_OnSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && TrapEnemyCast.CurrentValue < 2 && sender.IsEnemy && sender is AIHeroClient && sender.IsValidTarget(750))
            {
                if (Environment.TickCount - LastTrapTime > WDelay.CurrentValue)
                {
                    if (TrapEnemyCast.CurrentValue == 0)
                    {
                        if (W.Cast(sender.Position))
                        {
                            LastTrapTime = Environment.TickCount;
                            return;
                        }
                    }
                    else
                    {
                        var EndPosition = Hero.Position + (sender.Position - Hero.Position).Normalized() * ((sender.Position - Hero.Position).Length() + 50);
                        if (W.Cast(EndPosition))
                        {
                            LastTrapTime = Environment.TickCount;
                            return;
                        }
                    }
                }
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) && TrapEnemyCastHarass.CurrentValue < 2 && sender.IsEnemy && sender is AIHeroClient && sender.IsValidTarget(750))
            {
                if (Environment.TickCount - LastTrapTime > WDelay.CurrentValue)
                {
                    if (TrapEnemyCastHarass.CurrentValue == 0)
                    {
                        if (W.Cast(sender.Position))
                        {
                            LastTrapTime = Environment.TickCount;
                            return;
                        }
                    }
                    else
                    {
                        var EndPosition = Hero.Position + (sender.Position - Hero.Position).Normalized() * ((sender.Position - Hero.Position).Length() + 50);
                        if (W.Cast(EndPosition))
                        {
                            LastTrapTime = Environment.TickCount;
                            return;
                        }
                    }
                }
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && sender.IsEnemy && sender is AIHeroClient && sender.IsValidTarget(1250))
            {
                if (SafeQHarass.CurrentValue && Hero.ManaPercent > SafeQHarassMana.CurrentValue && Hero.CountEnemyChampionsInRange(800) == 0)
                {
                    if (Q.Cast(sender.Position))
                    {
                        return;
                    }
                }
            }

            if (QInCombo.CurrentValue && args.SData.Name.Contains("CaitlynHeadshotMissile") && args.Target is AIHeroClient && args.Target.IsValid)
            {
                var flDistance = (args.Target.Position - Hero.Position).Length();
                if (flDistance < Q.Range)
                {
                    if (flDistance > 650 || Hero.Level < ShortQDisableLevel.CurrentValue)
                    {
                        var target = TargetSelector.GetTarget(Q.Range, DamageType.Physical);

                        if (target == null)
                        {
                            return;
                        }

                        if (Q.CastMinimumHitchance(target, 80))
                        {
                            return;
                        }
                    }
                }
            }

            if (WAfterE.CurrentValue && args.SData.Name.Contains("CaitlynEntrapment"))
            {
                if (ComboTarget != null && ComboTarget.IsValidTarget())
                {
                    var EstimatedEnemyPos = Prediction.Position.PredictUnitPosition(ComboTarget, (int)0.5);

                    if (W.Cast((Vector3)EstimatedEnemyPos))
                    {
                        return;
                    }
                }
            }
        }
Пример #3
0
        private void DoTheRDance()
        {
            //Added a very basic line combo.
            Obj_AI_Hero ComboTarget;

            if (getDeathmarkedTarget() == null)
            {
                PositionBeforeR = Vector3.Zero;
                var ts = new TargetSelector(R.Range, TargetSelector.TargetingMode.LessCast);
                ComboTarget = ts.Target;
                if (!ComboTarget.IsValidTarget())
                {
                    return;
                }
                PositionBeforeR = player.ServerPosition;
                R.Cast(ComboTarget);
            }
            else
            {
                getDeathmarkedTarget();
            }
            safetySwap();
            ComboTarget = getDeathmarkedTarget();
            //LXOrbwalker.(ComboTarget); setForcedTarget with lxorbwalker
            LXOrbwalker.ForcedTarget = ComboTarget; // could work idk
            Vector3 tgPos         = ComboTarget.ServerPosition;
            Vector2 bestShadowPos = getBestShadowPos(PositionBeforeR, tgPos);

            if (bestShadowPos == Vector2.Zero)
            {
                return;
            }
            W.Cast(bestShadowPos);
            ZedShadow WSh = WShadow;
            ZedShadow RSh = RShadow;

            if (WSh == null || RShadow == null)
            {
                Game.PrintChat("Something went wrong");
                return;
            }
            PredictionOutput customQPredictionW = Prediction.GetPrediction(new PredictionInput {
                Unit           = ComboTarget,
                Delay          = Q.Delay,
                Radius         = Q.Width,
                From           = WSh.shadowPosition,
                Range          = Q.Range,
                Collision      = false,
                Type           = Q.Type,
                RangeCheckFrom = player.ServerPosition,
                Aoe            = false
            });
            PredictionOutput customQPredictionR = Prediction.GetPrediction(new PredictionInput {
                Unit           = ComboTarget,
                Delay          = Q.Delay,
                Radius         = Q.Width,
                From           = RSh.shadowPosition,
                Range          = Q.Range,
                Collision      = false,
                Type           = Q.Type,
                RangeCheckFrom = player.ServerPosition,
                Aoe            = false
            });
            bool isPlayerERangeW = getEnemiesInRange(WSh.shadowPosition, E.Range).Contains(ComboTarget);
            bool isPlayerERangeR = getEnemiesInRange(RSh.shadowPosition, E.Range).Contains(ComboTarget);

            if (customQPredictionW.Hitchance >= customHitchance || customQPredictionR.Hitchance >= customHitchance)
            {
                Q.Cast(ComboTarget);
            }
            if (isPlayerERangeR || isPlayerERangeW)
            {
                E.Cast();
            }
            if (isChampKill && canBackToShadow() && isMenuEnabled(menu, "SwapRKill"))
            {
                if (isMenuEnabled(menu, "SafeRBack") && safeBack(RSh))
                {
                    R.Cast();
                }
                else
                {
                    R.Cast();
                }
            }
        }
Пример #4
0
        private static void AfterAttack(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            if (args.SData.Name == "ItemTitanicHydraCleave")
            {
                // because we want another auto after this
                Orbwalker.ResetAutoAttack();
                return;
            }
            if (!args.IsAutoAttack())
            {
                return;
            }
            Utils.Debug("ondos " + Core.GameTickCount);
            var target = args.Target as AttackableUnit;

            if (Orbwalker.ActiveModesFlags != Orbwalker.ActiveModes.None && target != null && target.IsValidTarget())
            {
                if (!Q.IsReady() && !W.IsReady() && CanCastHydra())
                {
                    Hydra.Cast();
                }
                if (Cooldown(Player.Spells[0]) > 1.0f && !W.IsReady() && CanCastTitan())
                {
                    Titan.Cast();
                }
                lastAA = Core.GameTickCount;
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                {
                    if ((Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)))
                    {
                        if (QNum >= 1 && W.IsReady())
                        {
                            var target2 = (ComboTarget != null && ComboTarget.IsValidTarget(WRange)) ? ComboTarget :
                                          TargetSelector.GetTarget(WRange, DamageType.Physical, null, true);
                            if (target2 != null && target2.IsValidTarget() && CanCastTitan())
                            {
                                Titan.Cast();
                                Player.IssueOrder(GameObjectOrder.AttackUnit, target2);
                                return;
                            }
                            if (target2 != null && target2.IsValidTarget() && !CanCastHydra())
                            {
                                Player.CastSpell(SpellSlot.W);
                                return;
                            }
                            if (CanCastHydra())
                            {
                                Hydra.Cast();
                                return;
                            }
                            if (R.IsReady() && R.Name != R1)
                            {
                                var enemy = EntityManager.Heroes.Enemies.FirstOrDefault(h => (h.Distance(Player.Instance) < R.Range - 50) && RDamage(h) > h.Health && h.IsValidTarget());
                                if (enemy != null)
                                {
                                    forceR2  = true;
                                    R2Target = enemy;
                                    Core.DelayAction(() => forceR2 = false, 750);
                                }
                            }
                        }
                    }
                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                    {
                        if (QNum >= 1 && W.IsReady())
                        {
                            var target2 = (JCTarget != null && JCTarget.IsValidTarget(WRange)) ? JCTarget : EntityManager.MinionsAndMonsters.GetJungleMonsters(null, WRange, true).FirstOrDefault();
                            if (target2 != null && target2.IsValidTarget() && CanCastTitan())
                            {
                                Titan.Cast();
                                Player.IssueOrder(GameObjectOrder.AttackUnit, target2);
                                return;
                            }
                            if (target2 != null && target2.IsValidTarget() && !CanCastHydra())
                            {
                                Player.CastSpell(SpellSlot.W);
                                return;
                            }
                            if (CanCastHydra())
                            {
                                Hydra.Cast();
                            }
                        }
                    }


                    if (Mode != Orbwalker.ActiveModes.None && target.IsValidTarget(Q.Range) && target.IsValid && !target.IsDead && !target.IsZombie)
                    {
                        if (Q.IsReady())
                        {
                            Player.CastSpell(SpellSlot.Q, target.Position);
                            return;
                        }
                    }
                    if (Cooldown(Player.Spells[0]) > 1.0f && W.IsReady() && Player.Instance.CountEnemiesInRange(WRange) > 0)
                    {
                        Player.CastSpell(SpellSlot.W);
                        return;
                    }
                }
            }
        }