/// <summary>
        /// Sends spell info to the client.
        /// </summary>
        /// <param name="client">The client.</param>
        public void SendSpellToClient(Entities.GameClient client)
        {
            if (!client.LoggedIn)
                return;

            using (var spell = new Packets.SendSpellPacket())
            {
                spell.ID = ID;
                spell.Level = Level;
                spell.Experience = Experience;
                client.Send(spell);
            }
        }
        /// <summary>
        /// Sends spell info to the client.
        /// </summary>
        /// <param name="client">The client.</param>
        public void SendSpellToClient(Entities.GameClient client)
        {
            if (!client.LoggedIn)
            {
                return;
            }

            using (var spell = new Packets.SendSpellPacket())
            {
                spell.ID         = ID;
                spell.Level      = Level;
                spell.Experience = Experience;
                client.Send(spell);
            }
        }
        /// <summary>
        /// Adds spell exp.
        /// </summary>
        /// <param name="ID">The spell id.</param>
        /// <param name="amount">The amount of exp to add.</param>
        public void AddSpellExp(ushort ID, uint amount, bool second = false)
        {
            Data.SpellInfo spellinfo = SpellData.GetSpell(ID);
            amount *= Core.NumericConst.SpellRate;
            amount += (uint)(amount * _moongempercentage);
            spellinfo.Experience += amount;
            Data.Spell corespell = Core.Kernel.SpellInfos[ID][(byte)SpellData.GetSpell(ID).Level];
            if (!Core.Kernel.SpellInfos[ID].ContainsKey((byte)(spellinfo.Level + 1)))
                return;
            if (Level < corespell.NeedLevel)
                return;
            if (LoggedIn && !second)
            {
                using (var msg = Packets.Message.MessageCore.CreateSystem2(Name, string.Format(Core.MessageConst.GAIN_SPELL_EXP, amount)))
                {
                    Send(msg);
                }
            }

            if (spellinfo.Experience >= corespell.NeedExp)
            {
                spellinfo.Level++;
                spellinfo.Experience = 0;
            }
            if (this.LoggedIn)
            {
                Database.CharacterDatabase.SaveSpell(this, spellinfo);
                using (var spell = new Packets.SendSpellPacket())
                {
                    spell.ID = spellinfo.ID;
                    spell.Level = spellinfo.Level;
                    spell.Experience = spellinfo.Experience;
                    Send(spell);
                }
            }
        }