Beispiel #1
0
        /// <summary>
        ///     Called on spell cast.
        /// </summary>
        /// <param name="args">The <see cref="SpellbookLocalCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            switch (Orbwalker.Mode)
            {
            case OrbwalkingMode.Combo:
                switch (args.Slot)
                {
                case SpellSlot.W:
                    if (SpellClass.E.Ready &&
                        UtilityClass.Player.MP <
                        SpellSlot.W.GetManaCost() +
                        SpellSlot.E.GetManaCost())
                    {
                        args.Execute = false;
                    }
                    else
                    {
                        LastWTime = Game.ClockTime;
                    }

                    break;
                }

                break;
            }
        }
 /// <summary>
 ///     Called on spell cast.
 /// </summary>
 /// <param name="args">The <see cref="SpellbookLocalCastSpellEventArgs" /> instance containing the event data.</param>
 private static void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
 {
     /*
      * if (sender.IsMe() && args.Slot == SpellSlot.Q)
      * {
      *  LastRTime = Game.ClockTime;
      * }*/
 }
Beispiel #3
0
        /// <summary>
        ///     Fired on spell cast.
        /// </summary>

        /// <param name="args">The <see cref="SpellbookCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            if (sender.IsMe() &&
                UtilityClass.Player.HasBuff("akaliwstealth") &&
                MenuClass.Miscellaneous["staystealthsp"].As <MenuBool>().Enabled)
            {
                args.Process = false;
            }
        }
Beispiel #4
0
        public static void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            if (!Enumerations.SpellSlots.Contains(args.Slot))
            {
                return;
            }

            if (Q.IsCharging && args.Slot != SpellSlot.Q)
            {
                args.Execute = false;
            }
        }
        /// <summary>
        ///     Fired on spell cast.
        /// </summary>

        /// <param name="args">The <see cref="SpellbookCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            if (sender.IsMe())
            {
                if (args.Slot == SpellSlot.R &&
                    !IsUltimateShooting())
                {
                    Orbwalker.MovingEnabled = false;
                }
                else if (IsUltimateShooting())
                {
                    args.Process = false;
                }
            }
        }
Beispiel #6
0
        /// <summary>
        ///     Fired on spell cast.
        /// </summary>

        /// <param name="args">The <see cref="SpellbookCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            if (sender.IsMe() &&
                args.Slot == SpellSlot.W &&
                !IsHoldingForceOfWillObject())
            {
                if (Game.TickCount - UtilityClass.LastTick >= 300)
                {
                    UtilityClass.LastTick = Game.TickCount;
                    HoldedSphere          = args.Target;
                }
                else
                {
                    args.Process = false;
                }
            }
        }
Beispiel #7
0
        /// <summary>
        ///     Fired on spell cast.
        /// </summary>
        /// <param name="args">The <see cref="SpellbookLocalCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            switch (args.Slot)
            {
            case SpellSlot.Q:
                var safeQ = MenuClass.Q["customization"]["safeq"];
                if (safeQ != null &&
                    UtilityClass.Player.EnemyHeroesCount(UtilityClass.Player.GetAutoAttackRange()) > safeQ.Value)
                {
                    args.Execute = false;
                }

                break;

            case SpellSlot.W:
                if (ObjectCache.AllGameObjects.Any(m =>
                                                   m.Distance(args.End) <= SpellClass.W.Width &&
                                                   m.Name.Equals("caitlyn_Base_yordleTrap_idle_green")))
                {
                    args.Execute = false;
                }

                break;

            case SpellSlot.E:
                var safeE = MenuClass.E["customization"]["safee"];
                if (safeE != null &&
                    UtilityClass.Player.Position.Extend(args.End, -400f)
                    .EnemyHeroesCount(UtilityClass.Player.GetAutoAttackRange()) > safeE.Value)
                {
                    args.Execute = false;
                }

                if (Game.TickCount - UtilityClass.LastTick >= 1000 &&
                    Orbwalker.Mode == OrbwalkingMode.None &&
                    MenuClass.Miscellaneous["reversede"].Enabled)
                {
                    UtilityClass.LastTick = Game.TickCount;
                    SpellClass.E.Cast(UtilityClass.Player.Position.Extend(Hud.CursorPositionUnclipped,
                                                                          -SpellClass.E.Range));
                }

                break;
            }
        }
Beispiel #8
0
        /// <summary>
        ///     Fired on spell cast.
        /// </summary>

        /// <param name="args">The <see cref="SpellbookCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            if (IsUltimateShooting() &&
                args.Slot != SpellSlot.R)
            {
                args.Execute = false;
            }

            switch (args.Slot)
            {
            case SpellSlot.E:
                var target = Orbwalker.GetOrbwalkingTarget() as AIHeroClient;
                if (target != null &&
                    target.HasBuff("jhinetrapslow"))
                {
                    args.Execute = false;
                }
                break;
            }
        }
Beispiel #9
0
        /// <summary>
        ///     Fired on spell cast.
        /// </summary>

        /// <param name="args">The <see cref="SpellbookCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            if (sender.IsMe())
            {
                switch (args.Slot)
                {
                case SpellSlot.E:
                case SpellSlot.Q:
                    if (!IsChargingPiercingArrow())
                    {
                        if (Game.TickCount - LastCastedWeaving < 1000)
                        {
                            args.Process = false;
                        }
                        else
                        {
                            if (SpellClass.W.Ready &&

                                /*
                                 * TODO: maybe search for mode.stringname in order to not make this snippet look cancerous.
                                 *      Orbwalker.Mode != OrbwalkingMode.None &&
                                 *      MenuClass.Spells["w"][Orbwalker.Mode.StringName.ToLower()].As<MenuBool>.Enabled
                                 */
                                ((Orbwalker.Mode == OrbwalkingMode.Combo && MenuClass.Spells["w"]["combo"].As <MenuBool> .Enabled) ||
                                 (Orbwalker.Mode == OrbwalkingMode.Mixed && MenuClass.Spells["w"]["harass"].As <MenuBool> .Enabled) ||
                                 (Orbwalker.Mode == OrbwalkingMode.Laneclear && MenuClass.Spells["w"]["laneclear"].As <MenuBool> .Enabled) ||
                                 (Orbwalker.Mode == OrbwalkingMode.LastHit && MenuClass.Spells["w"]["lasthit"].As <MenuBool> .Enabled)))
                            {
                                SpellClass.W.Cast();
                            }
                            else
                            {
                                LastCastedWeaving = Game.TickCount;
                            }
                        }
                    }
                    break;
                }
            }
        }
Beispiel #10
0
        /// <summary>
        ///     Called on spell cast.
        /// </summary>
        /// <param name="sender">The Spellbook.</param>
        /// <param name="args">The <see cref="SpellbookCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            if (sender.IsMe())
            {
                switch (args.Slot)
                {
                case SpellSlot.Recall:
                    if (MenuClass.Miscellaneous["stealthrecall"].As <MenuBool>().Enabled)
                    {
                        SpellClass.Q.Cast();
                    }
                    break;

                case SpellSlot.W:
                    if (UtilityClass.Player.HasBuff("TwitchFullAutomatic") &&
                        MenuClass.Spells["w"]["customization"]["dontwinr"].As <MenuBool>().Enabled)
                    {
                        args.Process = false;
                    }
                    break;
                }
            }
        }
Beispiel #11
0
        /// <summary>
        ///     Fired on spell cast.
        /// </summary>
        /// <param name="args">The <see cref="SpellbookLocalCastSpellEventArgs" /> instance containing the event data.</param>
        public void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            if (!MenuClass.Miscellaneous["blockr"].Enabled)
            {
                return;
            }

            /*
             * switch (args.Slot)
             * {
             *      case SpellSlot.Q:
             *              LastECastTime = 0;
             *              break;
             *
             *      case SpellSlot.W:
             *      case SpellSlot.R:
             *              if (GetBall() == null ||
             *                  Game.TickCount - LastECastTime < 500)
             *              {
             *                      args.Execute = false;
             *              }
             *              break;
             * }*/

            if (GetBall() != null &&
                args.Slot == SpellSlot.R)
            {
                var validTargets = ObjectCache.EnemyHeroes.Where(t =>
                                                                 !Invulnerable.Check(t, DamageType.Magical, false) &&
                                                                 t.IsValidTarget(SpellClass.R.Width - SpellClass.R.Delay * t.BoundingRadius, GetBall().Position));
                if (!validTargets.Any())
                {
                    args.Execute = false;
                }
            }
        }
Beispiel #12
0
        /// <summary>
        ///     Fired on spell cast.
        /// </summary>
        /// <param name="args">The <see cref="SpellbookLocalCastSpellEventArgs" /> instance containing the event data.</param>
        public static void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            var slot = args.Slot;

            if (UtilityClass.SpellSlots.Contains(slot))
            {
                /// <summary>
                ///     The 'Preserve Mana' Logic.
                /// </summary>
                var championSpellManaCosts = UtilityClass.ManaCostArray
                                             .FirstOrDefault(v => v.Key == UtilityClass.Player.CharName).Value;
                if (championSpellManaCosts != null)
                {
                    var spellbook = UtilityClass.Player.Spellbook;
                    var data      = UtilityClass.PreserveManaData;

                    var spell      = spellbook.GetSpell(slot);
                    var menuOption = MenuClass.PreserveMana[slot.ToString().ToLower()];
                    if (menuOption != null && menuOption.Enabled)
                    {
                        var registeredSpellData = data.FirstOrDefault(d => d.Key == slot).Value;
                        var actualSpellData     = championSpellManaCosts[slot][spell.Level - 1];

                        if (data.ContainsKey(slot) &&
                            registeredSpellData != actualSpellData)
                        {
                            data.Remove(slot);
                            Logging.Log($"Preserve Mana List: Removed {slot} (Updated ManaCost).");
                        }

                        if (!data.ContainsKey(slot) && spell.Level > 0)
                        {
                            data.Add(slot, actualSpellData);
                            Logging.Log($"Preserve Mana List: Added {slot}, Cost: {actualSpellData}.");
                        }
                    }
                    else
                    {
                        if (data.ContainsKey(slot))
                        {
                            data.Remove(slot);
                            Logging.Log($"Preserve Mana List: Removed {slot} (Disabled).");
                        }
                    }

                    var sum = data
                              .Where(s => MenuClass.PreserveMana[s.Key.ToString().ToLower()].Enabled)
                              .Sum(s => s.Value);
                    if (sum <= 0)
                    {
                        return;
                    }

                    var spellCost =
                        championSpellManaCosts[slot][UtilityClass.Player.Spellbook.GetSpell(slot).Level - 1];
                    var mana = UtilityClass.Player.MP;
                    if (!data.Keys.Contains(slot) && mana - spellCost < sum)
                    {
                        args.Execute = false;
                    }
                }

                /// <summary>
                ///     The 'Preserve Spells' Logic.
                /// </summary>
                switch (Orbwalker.Mode)
                {
                case OrbwalkingMode.Combo:
                case OrbwalkingMode.Harass:
                    var target = Orbwalker.GetOrbwalkingTarget() as AIHeroClient;
                    if (target != null)
                    {
                        if (target.GetRealHealth(DamageType.Physical) <=
                            UtilityClass.Player.GetAutoAttackDamage(target) *
                            MenuClass.PreserveSpells[args.Slot.ToString().ToLower()].Value)
                        {
                            args.Execute = false;
                        }
                    }

                    break;
                }
            }
        }
Beispiel #13
0
        /*
         * private static void OnPostAttack(OnPostAttackEventArgs args)
         * {
         *      if (!LocalPlayer.Instance.IsMelee || args.Target.IsStructure())
         *      {
         *              return;
         *      }
         *
         *      // Hydra casting
         *      if (BaseMenu.Root["hydra"] != null)
         *      {
         *              var slot = LocalPlayer.Instance.InventorySlots.FirstOrDefault(i => Enumerations.Hydras.Contains((ItemID)i.ItemID));
         *              if (slot != null)
         *              {
         *                      CastHydra(slot);
         *              }
         *      }
         * }
         */

        /*
         * private static void CastHydra(InventorySlot slot)
         * {
         *      var hydraMenu = BaseMenu.Root["general"]["hydra"];
         *      var hydra = LocalPlayer.Instance.GetItem((ItemID)slot.ItemID);
         *      if (hydra != null)
         *      {
         *              switch (Orbwalker.Mode)
         *              {
         *                      case OrbwalkingMode.Combo when !hydraMenu["combo"].Enabled:
         *                              return;
         *                      case OrbwalkingMode.Harass when !hydraMenu["mixed"].Enabled:
         *                              return;
         *                      case OrbwalkingMode.LaneClear when !hydraMenu["laneclear"].Enabled:
         *                              return;
         *                      case OrbwalkingMode.LastHit when !hydraMenu["lasthit"].Enabled:
         *                              return;
         *                      case OrbwalkingMode.None when !hydraMenu["manual"].Enabled:
         *                              return;
         *              }
         *
         *              var hydraSpellSlot = hydra.Slot;
         *              if (hydraSpellSlot != SpellSlot.Unknown &&
         *                  LocalPlayer.Instance.Spellbook.GetSpellState(hydraSpellSlot).HasFlag(SpellState.Ready))
         *              {
         *                      Spellbook.CastSpell(hydraSpellSlot);
         *              }
         *      }
         * }
         */

        private static void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            var slot = args.Slot;

            if (Enumerations.SpellSlots.Contains(slot))
            {
                var championSpellManaCosts = Utilities.ManaCostArray.FirstOrDefault(v => v.Key == LocalPlayer.Instance.CharName).Value;
                if (championSpellManaCosts != null)
                {
                    var spellbook = LocalPlayer.Instance.Spellbook;
                    var data      = Utilities.PreserveManaData;

                    var spell            = spellbook.GetSpell(slot);
                    var preserveManaMenu = BaseMenu.Root["general"]["preservemana"];
                    var menuOption       = preserveManaMenu[slot.ToString().ToLower()];
                    if (menuOption != null &&
                        menuOption.Enabled)
                    {
                        var registeredSpellData = data.FirstOrDefault(d => d.Key == slot).Value;
                        var actualSpellData     = championSpellManaCosts[slot][spell.Level - 1];

                        if (data.ContainsKey(slot) &&
                            registeredSpellData != actualSpellData)
                        {
                            data.Remove(slot);
                            Logging.Log($"Preserve Mana List: Removed {slot} (Updated ManaCost).");
                        }

                        if (spell.Level > 0 &&
                            !data.ContainsKey(slot))
                        {
                            data.Add(slot, actualSpellData);
                            Logging.Log($"Preserve Mana List: Added {slot}, Cost: {actualSpellData}.");
                        }
                    }
                    else
                    {
                        if (data.ContainsKey(slot))
                        {
                            data.Remove(slot);
                            Logging.Log($"Preserve Mana List: Removed {slot} (Disabled).");
                        }
                    }

                    var sum = data
                              .Where(s => preserveManaMenu[s.Key.ToString().ToLower()].Enabled)
                              .Sum(s => s.Value);
                    if (sum <= 0)
                    {
                        return;
                    }

                    var spellCost = championSpellManaCosts[slot][LocalPlayer.Instance.Spellbook.GetSpell(slot).Level - 1];
                    if (!data.Keys.Contains(slot) &&
                        LocalPlayer.Instance.MP - spellCost < sum)
                    {
                        args.Execute = false;
                    }
                }

                switch (Orbwalker.Mode)
                {
                case OrbwalkingMode.Combo:
                case OrbwalkingMode.Harass:
                    var target = Orbwalker.GetOrbwalkingTarget() as AIHeroClient;
                    if (target != null &&
                        target.GetRealHealth(DamageType.Physical) <=
                        LocalPlayer.Instance.GetAutoAttackDamage(target) * BaseMenu.Root["general"]["preservespells"][args.Slot.ToString().ToLower()].Value)
                    {
                        args.Execute = false;
                    }
                    break;
                }
            }
        }
Beispiel #14
0
        private static void OnLocalCastSpell(SpellbookLocalCastSpellEventArgs args)
        {
            var slot = args.Slot;

            if (!Utilities.SpellSlots.Contains(slot) || LocalPlayer.Instance.MaxMP <= 200)
            {
                return;
            }

            // Preserve Spells Logic, works fine.
            var menuValue = General.PreserveSpellsMenu.GetSlotValue(slot);

            if (menuValue > 0)
            {
                switch (Orbwalker.Mode)
                {
                case OrbwalkingMode.Combo:
                case OrbwalkingMode.Harass:
                    var target = Orbwalker.GetOrbwalkingTarget() as AIHeroClient;
                    if (target != null &&
                        target.GetRealHealth(DamageType.Physical) <=
                        LocalPlayer.Instance.GetAutoAttackDamage(target) * menuValue)
                    {
                        args.Execute = false;
                        Logging.Log(
                            $"Preserve Spells Logic: Denied {args.Slot} usage because {target.CharName} is killable within {menuValue} autos.");
                    }

                    break;
                }
            }
            // end of preserve spells logic

            // Start of Preserve Mana Logic

            // Dictionary to fill with data.
            var data = Utility.Utilities.PreserveManaData;

            // If menuoption is disabled, just return, and if the spell was before being preserved, remove it from the list.
            var menuOptionEnabled = General.PreserveManaMenu.IsSlotEnabled(slot);

            if (!menuOptionEnabled && data.ContainsKey(slot))
            {
                data.Remove(slot);
                Logging.Log($"Preserve Mana List: Removed {slot} (Disabled).");
                return;
            }

            // gets manacost from manacostarray.
            var manaCost = slot.GetManaCost();

            if (manaCost == 0)
            {
                return;
            }

            // if the spell is already registered inside the preservedataarray..
            if (data.ContainsKey(slot))
            {
                var registeredManaCost = data.FirstOrDefault(d => d.Key == slot).Value;
                if (registeredManaCost != manaCost)
                {
                    // ..and the registered mana cost is different from its actual cost, it means the spell updated its manacost by leveling up, thus we will remove it and readd it, updated.
                    data.Remove(slot);
                    Logging.Log($"Preserve Mana List: Updated {slot}'s Manacost (Old: {registeredManaCost}), (New: {manaCost}).");
                    data.Add(slot, manaCost);
                }
            }
            // else if the spell is enabled but not registered..
            else if (menuOptionEnabled && !data.ContainsKey(slot))
            {
                // .. add it to the preservedataarray.
                data.Add(slot, manaCost);
                Logging.Log($"Preserve Mana List: Added {slot}, Cost: {manaCost}.");
            }

            var sum = data.Where(s => General.PreserveManaMenu.IsSlotEnabled(s.Key)).Sum(s => s.Value);

            if (sum <= 0 ||
                data.Keys.Contains(slot) ||
                LocalPlayer.Instance.MP - manaCost >= sum)
            {
                return;
            }

            args.Execute = false;
            Logging.Log(
                $"Preserve Mana Logic: Denied {slot} usage because mana would drop lower than the total mana to preserve ({LocalPlayer.Instance.MP} - {manaCost} < {sum}).");
        }