static SummonerManager()
        {
            try
            {
                // ReSharper disable once StringLiteralTypo
                BlueSmite = new SummonerSpell
                {
                    Name = "s5_summonersmiteplayerganker",
                    CastType = CastType.Target,
                    Range = 750f
                };
                RedSmite = new SummonerSpell
                {
                    Name = "s5_summonersmiteSingle",
                    CastType = CastType.Target,
                    Range = 750f
                };
                Ghost = new SummonerSpell { Name = "SummonerHaste", CastType = CastType.Self, Range = float.MaxValue };
                Clarity = new SummonerSpell { Name = "SummonerMana", CastType = CastType.Self, Range = 600f };
                Heal = new SummonerSpell { Name = "SummonerHeal", CastType = CastType.Self, Range = 850f };
                Barrier = new SummonerSpell
                {
                    Name = "SummonerBarrier",
                    CastType = CastType.Self,
                    Range = float.MaxValue
                };
                Exhaust = new SummonerSpell { Name = "SummonerExhaust", CastType = CastType.Target, Range = 650f };
                Cleanse = new SummonerSpell { Name = "SummonerBoost", CastType = CastType.Self, Range = float.MaxValue };
                Flash = new SummonerSpell { Name = "SummonerFlash", CastType = CastType.Position, Range = 425f };
                Ignite = new SummonerSpell { Name = "SummonerDot", CastType = CastType.Target, Range = 600f };
                Smite = new SummonerSpell { Name = "SummonerSmite", CastType = CastType.Target, Range = 750f };

                SummonerSpells = new List<SummonerSpell>
                {
                    Ghost,
                    Clarity,
                    Heal,
                    Barrier,
                    Exhaust,
                    Cleanse,
                    Flash,
                    Ignite,
                    Smite,
                    BlueSmite,
                    RedSmite
                };

                MaxRange = SummonerSpells.Max(s => s.Range);
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
        static SummonerManager()
        {
            try
            {
                // ReSharper disable once StringLiteralTypo
                BlueSmite = new SummonerSpell
                {
                    Name     = "s5_summonersmiteplayerganker",
                    CastType = CastType.Target,
                    Range    = 750f
                };
                RedSmite = new SummonerSpell
                {
                    Name     = "s5_summonersmiteSingle",
                    CastType = CastType.Target,
                    Range    = 750f
                };
                Ghost = new SummonerSpell {
                    Name = "SummonerHaste", CastType = CastType.Self, Range = float.MaxValue
                };
                Heal = new SummonerSpell {
                    Name = "SummonerHeal", CastType = CastType.Self, Range = 850f
                };
                Barrier = new SummonerSpell
                {
                    Name     = "SummonerBarrier",
                    CastType = CastType.Self,
                    Range    = float.MaxValue
                };
                Exhaust = new SummonerSpell {
                    Name = "SummonerExhaust", CastType = CastType.Target, Range = 650f
                };
                Cleanse = new SummonerSpell {
                    Name = "SummonerBoost", CastType = CastType.Self, Range = float.MaxValue
                };
                Flash = new SummonerSpell {
                    Name = "SummonerFlash", CastType = CastType.Position, Range = 425f
                };
                Ignite = new SummonerSpell {
                    Name = "SummonerDot", CastType = CastType.Target, Range = 600f
                };
                Smite = new SummonerSpell {
                    Name = "SummonerSmite", CastType = CastType.Target, Range = 750f
                };

                SummonerSpells = new List <SummonerSpell>
                {
                    Ghost,
                    Heal,
                    Barrier,
                    Exhaust,
                    Cleanse,
                    Flash,
                    Ignite,
                    Smite,
                    BlueSmite,
                    RedSmite
                };

                MaxRange = SummonerSpells.Max(s => s.Range);
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
 public static void Cast(this SummonerSpell spell, Obj_AI_Hero target)
 {
     ObjectManager.Player.Spellbook.CastSpell(spell.GetSlot(ObjectManager.Player), target);
 }
        public static SpellDataInst GetSpell(this SummonerSpell spell, Obj_AI_Hero sender = null)
        {
            var slot = spell.GetSlot(sender ?? ObjectManager.Player);

            return(slot == SpellSlot.Unknown ? null : (sender ?? ObjectManager.Player).Spellbook.GetSpell(slot));
        }
 public static bool Exists(this SummonerSpell spell, Obj_AI_Hero sender = null)
 {
     return(spell.GetSlot(sender ?? ObjectManager.Player) != SpellSlot.Unknown);
 }
 public static bool IsReady(this SummonerSpell spell, Obj_AI_Hero sender = null)
 {
     return(spell.GetSlot(sender ?? ObjectManager.Player) != SpellSlot.Unknown &&
            spell.GetSlot(sender ?? ObjectManager.Player).IsReady());
 }