public void IncreaseExperience(ulong experience, bool addMultiple)
        {
            if (Entity.Dead)
                return;
            byte level = Entity.Level;
            ulong _experience = Entity.Experience;
            ulong prExperienece = experience;
            if (addMultiple)
            {
                if (Entity.VIPLevel > 0)
                    experience *= 3;
                if (Program.Today == DayOfWeek.Saturday || Program.Today == DayOfWeek.Sunday || Program.Today == DayOfWeek.Monday || Program.Today == DayOfWeek.Thursday || Program.Today == DayOfWeek.Tuesday || Program.Today == DayOfWeek.Wednesday || Program.Today == DayOfWeek.Friday)
                    experience *= 8;
                experience *= ServerBase.Constants.ExtraExperienceRate;
                experience += experience * Entity.Gems[3] / 100;
                if (Entity.DoubleExperienceTime > 0)
                    experience *= 2;
                if (Entity.HeavenBlessing > 0)
                    experience += (uint)(experience * 20 / 100);
                if (Entity.Reborn >= 2)
                    experience /= 3;
                if (Map.BaseID == 1039)
                    experience /= 50;
                if (Guild != null)
                {
                    if (Guild.Level > 0)
                    {
                        experience += (ushort)(experience * Guild.Level / 100);
                    }
                }
                prExperienece = experience + (ulong)(experience * ((float)Entity.BattlePower / 100));

                _experience += prExperienece;
            }
            else
                _experience += experience;
            if (Entity.Level < 140)
            {
                while (_experience >= Database.DataHolder.LevelExperience(level) && level < 140)
                {
                    _experience -= Database.DataHolder.LevelExperience(level);
                    level++;
                    if (Entity.Reborn == 1)
                    {
                        if (level >= 130 && Entity.FirstRebornLevel > 130 && level < Entity.FirstRebornLevel)
                            level = Entity.FirstRebornLevel;
                    }
                    else if (Entity.Reborn == 2)
                    {
                        if (level >= 130 && Entity.SecondRebornLevel > 130 && level < Entity.SecondRebornLevel)
                            level = Entity.SecondRebornLevel;
                    }
                    if (Entity.Class >= 10 && Entity.Class <= 15)
                        if (!Spells.ContainsKey(0x456))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 0x456 });
                    if (Entity.Class >= 50 && Entity.Class <= 55)
                        if (!Spells.ContainsKey(11230))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 11230 });
                    if (Entity.Class >= 20 && Entity.Class <= 25)
                        if (!Spells.ContainsKey(0x401))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 0x401 });
                    if (Entity.Class >= 40 && Entity.Class <= 45)
                        if (!Spells.ContainsKey(0x1f42))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 0x1f42 });
                    if (Entity.Class >= 50 && Entity.Class <= 55)
                        if (!Spells.ContainsKey(0x177b))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 0x177b });
                    if (Entity.Class >= 60 && Entity.Class <= 65)
                        if (!Spells.ContainsKey(0x2896))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 0x2896 });
                    if (Entity.Class >= 70 && Entity.Class <= 75)
                        if (!Spells.ContainsKey(0x2b2a))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 0x2b2a });
                    if (Entity.Class > 100)
                        if (!Spells.ContainsKey(0x3f2))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 0x3f2 });

                    if (Mentor != null)
                    {
                        if (Mentor.IsOnline)
                        {
                            Mentor.Client.PrizeExperience += (ulong)level;
                            AsApprentice = Mentor.Client.Apprentices[Entity.UID];
                            try
                            {
                                AsApprentice.Actual_Experience += (ulong)level;
                                AsApprentice.Total_Experience += (ulong)level;
                            }
                            catch { }
                            if (Mentor.Client.PrizeExperience > 50 * 606)
                                Mentor.Client.PrizeExperience = 50 * 606;
                        }
                    }
                    if (level == 70)
                    {
                        if (ArenaStatistic == null || ArenaStatistic.EntityID == 0)
                        {
                            ArenaStatistic = new PhoenixProject.Network.GamePackets.ArenaStatistic(true);
                            ArenaStatistic.EntityID = Entity.UID;
                            ArenaStatistic.Name = Entity.Name;
                            ArenaStatistic.Level = Entity.Level;
                            ArenaStatistic.Class = Entity.Class;
                            ArenaStatistic.Model = Entity.Mesh;
                            ArenaStatistic.ArenaPoints = Database.ArenaTable.ArenaPointFill(Entity.Level);
                            ArenaStatistic.LastArenaPointFill = DateTime.Now;
                            Database.ArenaTable.InsertArenaStatistic(this);
                            ArenaStatistic.Status = Network.GamePackets.ArenaStatistic.NotSignedUp;
                            Game.ConquerStructures.Arena.ArenaStatistics.Add(Entity.UID, ArenaStatistic);
                        }
                    }
                    if (Entity.Reborn == 0)
                    {
                        if (level <= 120)
                        {
                            Database.DataHolder.GetStats(Entity.Class, level, this);
                            CalculateStatBonus();
                            CalculateHPBonus();
                            GemAlgorithm();
                        }
                        else
                            Entity.Atributes += 3;
                    }
                    else
                    {
                        Entity.Atributes += 3;
                    }
                }
                if (Entity.Level != level)
                {
                    if (Team != null)
                    {
                        if (Team.LowestLevelsUID == Entity.UID)
                        {
                            Team.LowestLevel = 0;
                            Team.LowestLevelsUID = 0;
                            Team.SearchForLowest();
                        }
                    }
                    Entity.Level = level;
                    Entity.Hitpoints = Entity.MaxHitpoints;
                    Entity.Mana = Entity.MaxMana;
                    if (Entity.Level > 130)
                    {
                        Database.EntityTable.UpdateLevel(Entity.Owner);
                    }
                    _String str = new _String(true);
                    str.UID = Entity.UID;
                    str.TextsCount = 1;
                    str.Type = _String.Effect;
                    str.Texts.Add("xp");
                    SendScreen(str, true);
                }
                if (Entity.Experience != _experience)
                    Entity.Experience = _experience;
                if (Entity.Reborn == 2 && Entity.Level >= 110)
                {
                    if (ServerBase.Kernel.ReincarnatedCharacters.ContainsKey(Entity.UID))
                        Network.PacketHandler.ReincarnationHash(Entity.Owner);
                }
            }
        }
 public void AddBless(uint value)
 {
     Entity.HeavenBlessing += value;
     Entity.Update(Network.GamePackets._String.Effect, "bless", true);
     if (Mentor != null)
     {
         if (Mentor.IsOnline)
         {
             Mentor.Client.PrizeHeavenBlessing += (ushort)(value / 10 / 60 / 60);
             AsApprentice = Mentor.Client.Apprentices[Entity.UID];
         }
         if (AsApprentice != null)
         {
             AsApprentice.Actual_HeavenBlessing += (ushort)(value / 10 / 60 / 60);
             AsApprentice.Total_HeavenBlessing += (ushort)(value / 10 / 60 / 60);
             if (Time32.Now > LastMentorSave.AddSeconds(5))
             {
                 Database.KnownPersons.SaveApprenticeInfo(AsApprentice);
                 LastMentorSave = Time32.Now;
             }
         }
     }
 }