예제 #1
0
        /// <summary>
        /// Appends the gem percentage stats.
        /// </summary>
        /// <param name="gem">The gem to append the stats of.</param>
        private void AppendGemPercentage(Enums.Gem gem)
        {
            switch (gem)
            {
            case Enums.Gem.NormalPhoenixGem:
            case Enums.Gem.RefinedPhoenixGem:
            case Enums.Gem.SuperPhoenixGem:
                Player.PhoenixGemPercentage += (0.05 * ((byte)gem));
                break;

            case Enums.Gem.NormalDragonGem:
            case Enums.Gem.RefinedDragonGem:
            case Enums.Gem.SuperDragonGem:
                Player.DragonGemPercentage += (0.05 * (((byte)gem) - 10));
                break;

            case Enums.Gem.NormalRainbowGem:
                Player.RainbowGemPercentage += 0.1;
                break;

            case Enums.Gem.RefinedRainbowGem:
                Player.RainbowGemPercentage += 0.15;
                break;

            case Enums.Gem.SuperRainbowGem:
                Player.RainbowGemPercentage += 0.25;
                break;

            case Enums.Gem.NormalVioletGem:
                Player.VioletGemPercentage += 0.3;
                break;

            case Enums.Gem.RefinedVioletGem:
                Player.VioletGemPercentage += 0.5;
                break;

            case Enums.Gem.SuperVioletGem:
                Player.VioletGemPercentage += 1.0;
                break;

            // fury
            // kylin
            case Enums.Gem.NormalMoonGem:
                Player.MoonGemPercentage += 0.15;
                break;

            case Enums.Gem.RefinedMoonGem:
                Player.MoonGemPercentage += 0.3;
                break;

            case Enums.Gem.SuperMoonGem:
                Player.MoonGemPercentage += 0.5;
                break;

            case Enums.Gem.NormalTortoiseGem:
            case Enums.Gem.RefinedTortoiseGem:
            case Enums.Gem.SuperTortoiseGem:
                Player.TortoiseGemPercentage += (0.02 * (((byte)gem) - 70));
                break;
            }
        }
예제 #2
0
        /// <summary>
        /// Adds an item to the inventory.
        /// </summary>
        /// <param name="itemId">The item id.</param>
        /// <param name="plus">The plus.</param>
        /// <param name="bless">The bless.</param>
        /// <param name="enchant">The enchantment.</param>
        /// <param name="gem1">The first socket.</param>
        /// <param name="gem2">The second socket.</param>
        /// <returns>True if the item was added, false otherwise.</returns>
        public bool Add(uint itemId, byte plus = 0, byte bless = 0, byte enchant = 0, Enums.Gem gem1 = Enums.Gem.NoSocket, Enums.Gem gem2 = Enums.Gem.NoSocket)
        {
            if (_items.Count >= 40)
            {
                Player.SendSystemMessage("INVENTORY_FULL");
                return(false);
            }

            var item = Collections.ItemCollection.CreateItemById(itemId);

            if (item == null)
            {
                return(false);
            }

            item.DbOwnerItem = new Database.Models.DbOwnerItem
            {
                PlayerId = Player.DbPlayer.Id,
                ItemId   = itemId,
                Plus     = plus,
                Bless    = bless,
                Enchant  = enchant,
            };
            item.DbOwnerItem.MaxDura     = item.DbItem.Amount;
            item.DbOwnerItem.CurrentDura = item.DbOwnerItem.MaxDura;
            item.DbOwnerItem.OwnedBy.AddItem(Player.Name);
            item.Gem1 = gem1;
            item.Gem2 = gem2;

            if (item.DbOwnerItem.Create(Database.Models.DbOwnerItem.Inventories))
            {
                if (_items.TryAdd(item.ClientId, item))
                {
                    item.Position = Enums.ItemPosition.Inventory;
                    item.UpdateClient(Player, Enums.ItemUpdateAction.Add);

                    return(true);
                }
                else
                {
                    item.DbOwnerItem.Delete(Database.Models.DbOwnerItem.Inventories);
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }