Beispiel #1
0
        private void onProcessSpell(GameObject sender, EventArgs args)
        {
            var theSpell = (Obj_SpellMissile)sender;

            if (sender.IsMe && theSpell.SData.Name == "ZedUltMissile")
            {
                RShadow = new ZedShadow {
                    shadowPosition = player.ServerPosition,
                    WR             = RWEnum.R,
                    gameTick       = Environment.TickCount,
                    sender         = sender,
                    shadowObj      = CheckForClones(RWEnum.R)
                };
                ROut = true;
            }
            if (sender.IsMe && theSpell.SData.Name == "ZedShadowDashMissile")
            {
                WShadow = new ZedShadow {
                    shadowPosition = CheckForClones(RWEnum.W).ServerPosition,
                    WR             = RWEnum.W,
                    gameTick       = Environment.TickCount,
                    sender         = sender,
                    shadowObj      = CheckForClones(RWEnum.W)
                };
                WOut = true;
            }
            if (sender.Name.Contains("Zed_Base_R_buf_tell.troy"))
            {
                isChampKill     = true;
                deathMarkTarget = null;
            }
        }
Beispiel #2
0
        private bool safeBack(ZedShadow shadow)
        {
            Vector3 shadowPos     = shadow.shadowPosition;
            Vector3 playerPos     = player.ServerPosition;
            int     nearShadowPos = getEnemiesInRange(shadowPos, 500f).Count;
            int     nearPlayerPos = getEnemiesInRange(playerPos, 500f).Count;

            if (nearPlayerPos > nearShadowPos)
            {
                return(true);
            }
            return(false);
        }
Beispiel #3
0
        private void onDeleteObject(GameObject sender, EventArgs args)
        {
            GameObject theObject = sender;

            if (theObject.IsValid && theObject == WShadow.shadowObj)
            {
                WShadow = null;
                WOut    = false;
            }
            if (theObject.IsValid && theObject == RShadow.shadowObj)
            {
                RShadow = null;
                ROut    = false;
            }
            if (sender.Name.Contains("Zed_Base_R_buf_tell.troy"))
            {
                isChampKill     = false;
                deathMarkTarget = null;
            }
        }
Beispiel #4
0
 private bool safeBack(ZedShadow shadow)
 {
     Vector3 shadowPos = shadow.shadowPosition;
     Vector3 playerPos = player.ServerPosition;
     int nearShadowPos = getEnemiesInRange(shadowPos, 500f).Count;
     int nearPlayerPos = getEnemiesInRange(playerPos, 500f).Count;
     if (nearPlayerPos > nearShadowPos)
         return true;
     return false;
 }
Beispiel #5
0
        private void onProcessSpell(GameObject sender, EventArgs args)
        {
            var theSpell = (Obj_SpellMissile) sender;

            if (sender.IsMe && theSpell.SData.Name == "ZedUltMissile") {
                RShadow = new ZedShadow {
                    shadowPosition = player.ServerPosition,
                    WR = RWEnum.R,
                    gameTick = Environment.TickCount,
                    sender = sender,
                    shadowObj = CheckForClones(RWEnum.R)
                };
                ROut = true;
            }
            if (sender.IsMe && theSpell.SData.Name == "ZedShadowDashMissile") {
                WShadow = new ZedShadow {
                    shadowPosition = CheckForClones(RWEnum.W).ServerPosition,
                    WR = RWEnum.W,
                    gameTick = Environment.TickCount,
                    sender = sender,
                    shadowObj = CheckForClones(RWEnum.W)
                };
                WOut = true;
            }
            if (sender.Name.Contains("Zed_Base_R_buf_tell.troy")) {
                isChampKill = true;
                deathMarkTarget = null;
            }
        }
Beispiel #6
0
        private void onDeleteObject(GameObject sender, EventArgs args)
        {
            GameObject theObject = sender;

            if (theObject.IsValid && theObject == WShadow.shadowObj) {
                WShadow = null;
                WOut = false;
            }
            if (theObject.IsValid && theObject == RShadow.shadowObj) {
                RShadow = null;
                ROut = false;
            }
            if (sender.Name.Contains("Zed_Base_R_buf_tell.troy")) {
                isChampKill = false;
                deathMarkTarget = null;
            }
        }
Beispiel #7
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();
                }
            }
        }