Esempio n. 1
0
        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 == 1)
                    experience *= 2;
                if (Entity.VIPLevel == 2)
                    experience *= 3;
                if (Entity.VIPLevel == 3)
                    experience *= 4;
                if (Entity.VIPLevel == 4)
                    experience *= 5;
                if (Entity.VIPLevel == 5)
                    experience *= 6;
                if (Entity.VIPLevel == 6)
                    experience *= 7;
                //if (Entity.Level == 1)
                //{
                //    Inventory.Add(723753, 0, 1, true);
                //}
                if (Entity.Level > 135 && Entity.Level < 141)
                {
                    experience /= 10;
                }
                //if (Program.Today == DayOfWeek.Saturday || Program.Today == DayOfWeek.Sunday)
                //    experience *= 2;
                experience *= ServerBase.Constants.ExtraExperienceRate;
                experience += experience * Entity.Gems[3] / 100;
                if (Entity.DoubleExperienceTime > 0)
                    experience *= 2;
                if (Entity.DoubleExperienceTime5 > 0)
                    experience *= 5;
                if (Entity.DoubleExperienceTime10 > 0)
                    experience *= 10;
                if (Entity.DoubleExperienceTime15 > 0)
                    experience *= 15;
                if (Entity.HeavenBlessing > 0)
                    experience += (uint)(experience * 20 / 100);
                if (Entity.Reborn >= 2)
                    experience /= 3;
                if (Entity.Reborn == 1)
                    experience /= 2;
                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(1110))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 1110 });
                    if (Entity.Class >= 20 && Entity.Class <= 25)
                        if (!Spells.ContainsKey(1020))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 1020 });
                    if (Entity.Class >= 40 && Entity.Class <= 45)
                        if (!Spells.ContainsKey(8002))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 8002 });
                    if (Entity.Class >= 50 && Entity.Class <= 55)
                        if (!Spells.ContainsKey(6011))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 6011 });
                    if (Entity.Class >= 60 && Entity.Class <= 65)
                        if (!Spells.ContainsKey(10490))
                            AddSpell(new Network.GamePackets.Spell(true) { ID = 10490 });
                    if (Mentor != null)
                    {
                        if (Mentor.IsOnline)
                        {
                            Mentor.Client.PrizeExperience += (ulong)level;
                            AsApprentice = Mentor.Client.Apprentices[Entity.UID];
                            if (Mentor.Client.PrizeExperience > 50 * 606)
                                Mentor.Client.PrizeExperience = 50 * 606;
                        }
                    }
                    if (level == 70)
                    {
                        if (ArenaStatistic == null || ArenaStatistic.EntityID == 0)
                        {
                            ArenaStatistic = new Conquer_Online_Server.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();
                            SendStatMessage();
                        }
                        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.Reborn == 0 && Inventory.Count < 39)
                    //{
                    //    if (Entity.Level == 10)
                    //        Inventory.Add(723753, 0, 1, true);
                    //    //if (Entity.Level == 70)
                    //    //    Inventory.Add(723768, 0, 1);
                    //    //if (Entity.Level == 100)
                    //    //    Inventory.Add(723772, 0, 1);
                    //    //if (Entity.Level == 110)
                    //    //    Inventory.Add(723774, 0, 1);
                    //    //if (Entity.Level == 120)
                    //    //    Inventory.Add(723776, 0, 1);
                    //}
                }
                if (Entity.Experience != _experience)
                    Entity.Experience = _experience;
            }
        }
Esempio n. 2
0
 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;
             }
         }
     }
 }