Esempio n. 1
0
 private void Game_OnUpdate(EventArgs args)
 {
     if (zedMenu.GetParamBool("koreanzed.miscmenu.pot.active") &&
         ObjectManager.Player.HealthPercent
         < zedMenu.GetParamSlider("koreanzed.miscmenu.pot.when") &&
         !ObjectManager.Player.HasBuff("RegenerationPotion") &&
         !ObjectManager.Player.InShop())
     {
         ItemData.Health_Potion.GetItem().Cast();
     }
 }
Esempio n. 2
0
        public bool CanHarass(List <ZedSpell> spellList)
        {
            float total = 0F;

            foreach (ZedSpell zedSpell in spellList)
            {
                total += zedSpell.ManaCost;
            }

            return((((ObjectManager.Player.Mana - total) / ObjectManager.Player.MaxMana) * 100)
                   > zedMenu.GetParamSlider("koreanzed.harasmenu.saveenergy"));
        }
Esempio n. 3
0
        private void Harass()
        {
            actionQueue.ExecuteNextAction(harasQueue);

            shadows.Harass();

            float maxRange = float.MaxValue;

            if (!energy.ReadyToHaras)
            {
                return;
            }

            List <Obj_AI_Hero> blackList = zedMenu.GetBlockList(BlockListType.Harass);

            if ((w.UseOnHarass && w.IsReady() && w.Instance.ToggleState == 0) &&
                (player.HealthPercent
                 > zedMenu.GetParamSlider("koreanzed.harasmenu.wusage.dontuselowlife") &&
                 HeroManager.Enemies.Count(
                     hero => !hero.IsDead && !hero.IsZombie && player.Distance(hero) < 2000F)
                 < zedMenu.GetParamSlider("koreanzed.harasmenu.wusage.dontuseagainst")))
            {
                if (q.UseOnHarass)
                {
                    if (q.UseOnHarass && q.IsReady() && (player.Mana > q.ManaCost + w.ManaCost))
                    {
                        switch ((ShadowHarassTrigger)zedMenu.GetParamStringList("koreanzed.harasmenu.wusage.trigger"))
                        {
                        case ShadowHarassTrigger.MaxRange:
                            maxRange = Math.Min(maxRange, q.Range + w.Range);
                            break;

                        case ShadowHarassTrigger.MaxDamage:
                            maxRange = Math.Min(maxRange, w.Range + e.Range);
                            break;
                        }

                        Obj_AI_Hero target = TargetSelector.GetTarget(maxRange, q.DamageType, true, blackList);

                        if (target != null)
                        {
                            shadows.Cast(target);
                            actionQueue.EnqueueAction(harasQueue, () => true, () => shadows.Harass(), () => false);
                        }
                    }
                }

                if (e.UseOnHarass && e.IsReady() && (player.Mana > e.ManaCost + w.ManaCost))
                {
                    maxRange = Math.Min(maxRange, e.Range + w.Range);
                    Obj_AI_Hero target = TargetSelector.GetTarget(maxRange, e.DamageType, true, blackList);

                    if (target != null)
                    {
                        shadows.Cast(target);
                        actionQueue.EnqueueAction(harasQueue,
                                                  () => true,
                                                  () => shadows.Harass(),
                                                  () => false);
                    }
                }
            }

            if (q.UseOnHarass && energy.ReadyToHaras)
            {
                maxRange = Math.Min(maxRange, q.Range);
                Obj_AI_Hero target = TargetSelector.GetTarget(maxRange, q.DamageType, true, blackList);

                if (target != null)
                {
                    PredictionOutput predictionOutput = q.GetPrediction(target);

                    bool checkColision = zedMenu.GetParamBool("koreanzed.harasmenu.checkcollisiononq");

                    if (predictionOutput.Hitchance >= HitChance.High &&
                        (!checkColision ||
                         !q.GetCollision(
                             player.Position.To2D(),
                             new List <Vector2>()
                    {
                        predictionOutput.CastPosition.To2D()
                    }).Any()))
                    {
                        q.Cast(predictionOutput.CastPosition);
                    }
                }
            }

            if (e.UseOnHarass && energy.ReadyToHaras)
            {
                if (TargetSelector.GetTarget(e.Range, e.DamageType) != null)
                {
                    e.Cast();
                }
            }

            LastHit();
        }
Esempio n. 4
0
        public void LaneClear(ActionQueue actionQueue, ActionQueueList laneClearQueue)
        {
            Obj_AI_Base shadow = GetShadows().FirstOrDefault();

            if (!energy.ReadyToLaneClear || shadow == null)
            {
                return;
            }

            if (e.UseOnLaneClear && e.IsReady())
            {
                int extendedWillHit = MinionManager.GetMinions(shadow.Position, e.Range).Count();
                int shortenWillHit  = MinionManager.GetMinions(e.Range).Count;
                int param           = zedMenu.GetParamSlider("koreanzed.laneclearmenu.useeif");

                if (extendedWillHit >= param || shortenWillHit >= param)
                {
                    actionQueue.EnqueueAction(
                        laneClearQueue,
                        () => true,
                        () => e.Cast(),
                        () => !e.IsReady());
                    //Console.WriteLine("shadow lc e 1");
                    return;
                }
            }

            if (q.UseOnLaneClear && q.IsReady())
            {
                int     extendedWillHit      = 0;
                Vector3 extendedFarmLocation = Vector3.Zero;
                foreach (Obj_AI_Base objAiBase in MinionManager.GetMinions(shadow.Position, q.Range))
                {
                    var colisionList = q.GetCollision(
                        shadow.Position.To2D(),
                        new List <Vector2>()
                    {
                        objAiBase.Position.To2D()
                    },
                        w.Delay);

                    if (colisionList.Count > extendedWillHit)
                    {
                        extendedFarmLocation =
                            colisionList.OrderByDescending(c => c.Distance(shadow.Position)).FirstOrDefault().Position;
                        extendedWillHit = colisionList.Count;
                    }
                }

                var shortenFarmLocation = q.GetLineFarmLocation(MinionManager.GetMinions(q.Range));

                int shortenWillHit = shortenFarmLocation.MinionsHit;
                int param          = zedMenu.GetParamSlider("koreanzed.laneclearmenu.useqif");

                if (CanCast && shadow.Position != Vector3.Zero && extendedWillHit >= param)
                {
                    actionQueue.EnqueueAction(
                        laneClearQueue,
                        () => CanCast,
                        () => Cast(shadow.Position),
                        () => !CanCast);
                    //Console.WriteLine("shadow lc w 2");
                    actionQueue.EnqueueAction(
                        laneClearQueue,
                        () => w.Instance.ToggleState != 0,
                        () => q.Cast(extendedFarmLocation),
                        () => !q.IsReady());
                    //Console.WriteLine("shadow lc q 3");
                    return;
                }
                else if (shortenWillHit >= param)
                {
                    actionQueue.EnqueueAction(
                        laneClearQueue,
                        () => q.IsReady(),
                        () => q.Cast(shortenFarmLocation.Position),
                        () => !q.IsReady());
                    //Console.WriteLine("shadow lc q 4");
                    return;
                }
            }
        }