Beispiel #1
0
        public void MoveHalfSlotAndMergeThemWithOverflow()
        {
            var item = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 999), 0))
                       .First();

            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 500), 0));
            Inventory.TryMoveItem(item.Type, item.Slot, 600, 1, out var originItem, out var destinationItem);
            Assert.IsTrue((originItem?.ItemInstance.Amount == 500) && (originItem.Slot == 0));
            Assert.IsTrue((destinationItem?.ItemInstance.Amount == 999) && (destinationItem.Slot == 1));
        }
Beispiel #2
0
        public void Test_BoundCharacter_Question()
        {
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (QnaPacket)_session.LastPackets.FirstOrDefault(s => s is QnaPacket);

            Assert.AreEqual(_session.GetMessageFromKey(LanguageKey.ASK_BIND), lastpacket.Question);
        }
Beispiel #3
0
        public void DeleteFromTypeAndSlot()
        {
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0));
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0));
            Assert.IsTrue(Inventory.Count == 2);
            var item = Inventory.DeleteFromTypeAndSlot(NoscorePocketType.Main, 0);

            Assert.IsNull(item);
            Assert.IsTrue(Inventory.Count == 1);
        }
        public void Test_Vehicle_GetDelayed()
        {
            _useItem.Mode = 1;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (DelayPacket)_session.LastPackets.FirstOrDefault(s => s is DelayPacket);

            Assert.IsNotNull(lastpacket);
        }
Beispiel #5
0
        public void Test_Miniland()
        {
            _useItem.Mode = 2;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            Assert.AreEqual(MapInstanceType.NormalInstance, _session.Character.MapInstance.MapInstanceType);
            Assert.AreEqual(0, _session.Character.InventoryService.Count);
        }
Beispiel #6
0
        private void SelectGift()
        {
            if (_miniland.MinilandPoint < 100)
            {
                return;
            }

            var obj = MinilandHelper.Instance.GetMinilandGift(_minigamePacket.MinigameVNum, _minigamePacket.Point ?? 0);

            if (obj == null)
            {
                return;
            }

            _clientSession.SendPacket(new MloRwPacket {
                Amount = obj.Amount, VNum = obj.VNum
            });
            // _clientSession.SendPacket(new MlptPacket {_miniland.MinilandPoint, 100});
            var inv = _clientSession.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(
                                                                                    _itemProvider.Create(obj.VNum,
                                                                                                         obj.Amount), _clientSession.Character.CharacterId));

            _miniland.MinilandPoint -= 100;
            if (inv.Count == 0)
            {
                //todo add gifts
                //_clientSession.Character.SendGift(_clientSession.Character.CharacterId, obj.VNum, obj.Amount, 0, 0, false);
            }

            if (_miniland.MapInstanceId != _clientSession.Character.MapInstanceId)
            {
                switch (_minigamePacket.Point)
                {
                case 0:
                    _minilandObject.Level1BoxAmount++;
                    break;

                case 1:
                    _minilandObject.Level2BoxAmount++;
                    break;

                case 2:
                    _minilandObject.Level3BoxAmount++;
                    break;

                case 3:
                    _minilandObject.Level4BoxAmount++;
                    break;

                case 4:
                    _minilandObject.Level5BoxAmount++;
                    break;
                }
            }
        }
Beispiel #7
0
        public void Test_BadEquipment()
        {
            _useItem.Mode = 1;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(5), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (SayPacket)_session.LastPackets.FirstOrDefault(s => s is SayPacket);

            Assert.AreEqual(_session.GetMessageFromKey(LanguageKey.BAD_EQUIPMENT), lastpacket.Message);
        }
Beispiel #8
0
        public void Delete()
        {
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0));
            var items = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0));

            Assert.IsTrue(Inventory.Count == 2);
            var item = Inventory.DeleteById(items[0].ItemInstanceId);

            Assert.IsNull(item);
            Assert.IsTrue(Inventory.Count == 1);
        }
Beispiel #9
0
        public void Test_Delete_FromSlot()
        {
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1012, 999), 0));
            _biPacketHandler.Execute(new BiPacket
            {
                Option = RequestDeletionType.Confirmed, Slot = 0, PocketType = PocketType.Main
            }, _session);
            var packet = (IvnPacket)_session.LastPackets.FirstOrDefault(s => s is IvnPacket);

            Assert.IsTrue(packet.IvnSubPackets.All(iv => (iv.Slot == 0) && (iv.VNum == -1)));
        }
    ///<summary>
    /// Returns the quantity in the curent order cart for the given <paramref name="instanceToAdd"/>.
    ///</summary>
    private int CartQuantity(InventoryItemInstance instanceToAdd)
    {
        int cartAmmount = 0;

        if (itemsInCurentOrder.Exists(a => a.Item.ID == changeAmmountTargetItem.Item.ID))
        {
            cartAmmount = itemsInCurentOrder.Find(i => i.Item.ID == instanceToAdd.Item.ID).Quantity;
        }

        return(cartAmmount);
    }
        public void Test_TitleItemHandler()
        {
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (QnaPacket)_session.LastPackets.FirstOrDefault(s => s is QnaPacket);

            Assert.IsNotNull(lastpacket);
            Assert.IsTrue(lastpacket.YesPacket.GetType() == typeof(GuriPacket));
        }
 public void Test_Put()
 {
     _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1012, 1), 0));
     _putPacketHandler.Execute(new PutPacket
     {
         PocketType = PocketType.Main,
         Slot       = 0,
         Amount     = 1
     }, _session);
     Assert.IsTrue(_session.Character.InventoryService.Count == 0);
 }
Beispiel #13
0
        public void Test_Miniland_Delay()
        {
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (DelayPacket)_session.LastPackets.FirstOrDefault(s => s is DelayPacket);

            Assert.IsNotNull(lastpacket);
            Assert.AreEqual(1, _session.Character.InventoryService.Count);
        }
Beispiel #14
0
        public void Test_Use_Fairy()
        {
            _useItem.Mode = 1;
            SystemTime.Freeze();
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(2), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (PairyPacket)_session.Character.MapInstance.LastPackets.FirstOrDefault(s => s is PairyPacket);

            Assert.IsNotNull(lastpacket);
        }
Beispiel #15
0
        public void CreateItemAndFillMultiSlot()
        {
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0),
                                      NoscorePocketType.Main, 0);
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0),
                                      NoscorePocketType.Main, 1);
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0),
                                      NoscorePocketType.Main, 2);
            var items = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 27), 0));

            Assert.IsTrue(items.All(item => item.ItemInstance.Amount == 999) && (items.Count == 3));
        }
 public void Test_PutPartialSlot()
 {
     _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1012, 999), 0));
     _putPacketHandler.Execute(new PutPacket
     {
         PocketType = PocketType.Main,
         Slot       = 0,
         Amount     = 500
     }, _session);
     Assert.IsTrue((_session.Character.InventoryService.Count == 1) &&
                   (_session.Character.InventoryService.FirstOrDefault().Value.ItemInstance.Amount == 499));
 }
Beispiel #17
0
        public void Test_Binding()
        {
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1, 1), 0));
            _useItemPacketHandler.Execute(new UseItemPacket {
                Slot = 0, Type = PocketType.Equipment, Mode = 1
            },
                                          _session);

            Assert.IsTrue(_session.Character.InventoryService.Any(s =>
                                                                  (s.Value.ItemInstance.ItemVNum == 1) && (s.Value.Type == NoscorePocketType.Wear) &&
                                                                  (s.Value.ItemInstance.BoundCharacterId == _session.Character.VisualId)));
        }
Beispiel #18
0
        public void CreateMoreItemThanInventoryPlace()
        {
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0),
                                      NoscorePocketType.Main, 0);
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0),
                                      NoscorePocketType.Main, 1);
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0),
                                      NoscorePocketType.Main, 2);
            var items = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 99), 0));

            Assert.IsTrue(Inventory.Values.All(item => item.ItemInstance.Amount == 990) && (items.Count == 0));
        }
Beispiel #19
0
        public void Test_SpRecharger()
        {
            _session.Character.SpAdditionPoint = 0;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (MsgPacket)_session.LastPackets.FirstOrDefault(s => s is MsgPacket);

            Assert.AreEqual(1, _session.Character.SpAdditionPoint);
            Assert.AreEqual(0, _session.Character.InventoryService.Count);
        }
Beispiel #20
0
        public void Test_Miniland_On_Vehicle()
        {
            _session.Character.IsVehicled = true;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (SayPacket)_session.LastPackets.FirstOrDefault(s => s is SayPacket);

            Assert.AreEqual(Language.Instance.GetMessageFromKey(LanguageKey.CANT_USE_IN_VEHICLE, _session.Character.Account.Language), lastpacket.Message);
            Assert.AreEqual(1, _session.Character.InventoryService.Count);
        }
        public override void Execute(PclPacket getGiftPacket, ClientSession clientSession)
        {
            var isCopy = getGiftPacket.Type == 2;
            var mail   = _mailHttpClient.GetGift(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy);

            if (mail == null)
            {
                return;
            }

            if ((getGiftPacket.Type == 4) && (mail.ItemInstance != null))
            {
                var itemInstance = _itemInstanceDao.FirstOrDefault(s => s.Id == mail.ItemInstance.Id);
                var item         = _itemProvider.Convert(itemInstance);
                item.Id = Guid.NewGuid();
                var newInv = clientSession.Character.InventoryService
                             .AddItemToPocket(InventoryItemInstance.Create(item, clientSession.Character.CharacterId))
                             .FirstOrDefault();
                if (newInv != null)
                {
                    clientSession.SendPacket(clientSession.Character.GenerateSay(
                                                 string.Format(
                                                     Language.Instance.GetMessageFromKey(LanguageKey.ITEM_RECEIVED,
                                                                                         clientSession.Account.Language),
                                                     newInv.ItemInstance.Item.Name, newInv.ItemInstance.Amount), SayColorType.Green));
                    clientSession.SendPacket(
                        new ParcelPacket {
                        Type = 2, Unknown = 1, Id = (short)getGiftPacket.GiftId
                    });
                    _mailHttpClient.DeleteGift(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy);
                }
                else
                {
                    clientSession.SendPacket(new ParcelPacket {
                        Type = 5, Unknown = 1, Id = 0
                    });
                    clientSession.SendPacket(new MsgPacket
                    {
                        Message = Language.Instance.GetMessageFromKey(LanguageKey.NOT_ENOUGH_PLACE,
                                                                      clientSession.Account.Language),
                        Type = 0
                    });
                }
            }
            else if (getGiftPacket.Type == 5)
            {
                clientSession.SendPacket(new ParcelPacket {
                    Type = 7, Unknown = 1, Id = (short)getGiftPacket.GiftId
                });
                _mailHttpClient.DeleteGift(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy);
            }
        }
Beispiel #22
0
    ///<summary>
    ///Updates the item object's interface and assigns its button and double click actions.
    ///</summary>
    public void UpdateItemObject(Constants.ItemInteraction interactionType, InventoryItemInstance instance, UnityAction clickAction, UnityAction doubleAction)
    {
        switch (interactionType)
        {
        case Constants.ItemInteraction.NoInteraction:
        {
            isDoubleClickEditable = false;
            stockLabelText.text   = Constants.AMMOUNT_LABEL;
            editButton.gameObject.SetActive(false);
            break;
        }

        case Constants.ItemInteraction.AddToCart:
        {
            isDoubleClickEditable = true;
            stockLabelText.text   = Constants.STOCK_LABEL;
            editButton.gameObject.SetActive(true);
            addToCartImage.SetActive(true);
            removeCartImage.SetActive(false);
            break;
        }

        case Constants.ItemInteraction.RemoveFromCart:
        {
            isDoubleClickEditable = false;
            stockLabelText.text   = Constants.AMMOUNT_LABEL;
            editButton.gameObject.SetActive(true);
            addToCartImage.SetActive(false);
            removeCartImage.SetActive(true);
            break;
        }

        default:
        {
            break;
        }
        }

        ID = instance.Item.Name.ToLower();
        itemNameText.text = instance.Item.Name;
        stockText.text    = instance.Quantity.ToString();

        priceText.text = (instance.discount > 0) ?
                         Constants.DIDSCOUNT_OLD_BEGIN + Constants.CURENCY_SYMBOL + instance.Item.BasePrice + " -" + instance.discount + Constants.PERCENT + Constants.DIDSCOUNT_OLD_END + Constants.NEWLINE +
                         Constants.DIDSCOUNT_NEW_BEGIN + Constants.CURENCY_SYMBOL + instance.DiscountedPrice.ToString(Constants.CURENCY_FORMAT) + Constants.DIDSCOUNT_NEW_END :

                         Constants.CURENCY_SYMBOL + instance.DiscountedPrice.ToString(Constants.CURENCY_FORMAT);

        editButton.onClick.AddListener(clickAction);
        doubleClickAction = doubleAction;
        gameObject.SetActive(true);
    }
Beispiel #23
0
        public void Test_Use_Amulet()
        {
            _useItem.Mode = 1;
            SystemTime.Freeze();
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(7), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (EffectPacket)_session.LastPackets.FirstOrDefault(s => s is EffectPacket);

            Assert.IsNotNull(lastpacket);
            Assert.AreEqual(SystemTime.Now().AddSeconds(itemInstance.ItemInstance.Item.ItemValidTime), itemInstance.ItemInstance.ItemDeleteTime);
        }
Beispiel #24
0
        public void SwapWithNotEmpty()
        {
            var weapon  = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(2), 0)).First();
            var weapon2 = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1), 0)).First();
            var item    = Inventory.MoveInPocket(weapon.Slot, weapon.Type, NoscorePocketType.Wear,
                                                 (short)EquipmentType.MainWeapon, true);
            var item2 = Inventory.MoveInPocket(weapon2.Slot, weapon2.Type, NoscorePocketType.Wear,
                                               (short)EquipmentType.MainWeapon, true);

            Assert.IsTrue((item.Type == NoscorePocketType.Equipment) && (item.Slot == 1) &&
                          (item2.Type == NoscorePocketType.Wear) &&
                          (item2.Slot == (short)EquipmentType.MainWeapon));
        }
Beispiel #25
0
        public void Test_Use_BadJobLevel()
        {
            _useItem.Mode = 1;
            SystemTime.Freeze();
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(6), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (SayPacket)_session.LastPackets.FirstOrDefault(s => s is SayPacket);

            Assert.AreEqual(Language.Instance.GetMessageFromKey(LanguageKey.LOW_JOB_LVL,
                                                                _session.Account.Language), lastpacket.Message);
        }
Beispiel #26
0
        public void Test_SpRecharger_When_Max()
        {
            _session.Character.SpAdditionPoint = 1;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            var lastpacket = (MsgPacket)_session.LastPackets.FirstOrDefault(s => s is MsgPacket);

            Assert.AreEqual(Language.Instance.GetMessageFromKey(LanguageKey.SP_ADDPOINTS_FULL, _session.Character.Account.Language), lastpacket.Message);
            Assert.AreEqual(1, _session.Character.SpAdditionPoint);
            Assert.AreEqual(1, _session.Character.InventoryService.Count);
        }
Beispiel #27
0
        public override async Task ExecuteAsync(PclPacket getGiftPacket, ClientSession clientSession)
        {
            var isCopy = getGiftPacket.Type == 2;
            var mail   = await _mailHttpClient.GetGiftAsync(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy).ConfigureAwait(false);

            if (mail == null)
            {
                return;
            }

            if ((getGiftPacket.Type == 4) && (mail.ItemInstance != null))
            {
                var itemInstance = await _itemInstanceDao.FirstOrDefaultAsync(s => s !.Id == mail.ItemInstance.Id).ConfigureAwait(false);

                var item = _itemProvider.Convert(itemInstance !);
                item.Id = Guid.NewGuid();
                var newInv = clientSession.Character.InventoryService
                             .AddItemToPocket(InventoryItemInstance.Create(item, clientSession.Character.CharacterId))?
                             .FirstOrDefault();
                if (newInv != null)
                {
                    await clientSession.SendPacketAsync(clientSession.Character.GenerateSay(
                                                            string.Format(
                                                                GameLanguage.Instance.GetMessageFromKey(LanguageKey.ITEM_RECEIVED,
                                                                                                        clientSession.Account.Language),
                                                                newInv.ItemInstance !.Item !.Name, newInv.ItemInstance.Amount), SayColorType.Green)).ConfigureAwait(false);

                    await clientSession.SendPacketAsync(
                        new ParcelPacket { Type = 2, Unknown = 1, Id = (short)getGiftPacket.GiftId }).ConfigureAwait(false);

                    await _mailHttpClient.DeleteGiftAsync(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy).ConfigureAwait(false);
                }
                else
                {
                    await clientSession.SendPacketAsync(new ParcelPacket { Type = 5, Unknown = 1, Id = 0 }).ConfigureAwait(false);

                    await clientSession.SendPacketAsync(new MsgiPacket
                    {
                        Message = Game18NConstString.NotEnoughSpace,
                        Type    = 0
                    }).ConfigureAwait(false);
                }
            }
            else if (getGiftPacket.Type == 5)
            {
                await clientSession.SendPacketAsync(new ParcelPacket { Type = 7, Unknown = 1, Id = (short)getGiftPacket.GiftId }).ConfigureAwait(false);

                await _mailHttpClient.DeleteGiftAsync(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy).ConfigureAwait(false);
            }
        }
Beispiel #28
0
        public void Test_AddMedal_AlreadyOne()
        {
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            _session.Character.StaticBonusList.Add(new StaticBonusDto
            {
                CharacterId     = _session.Character.CharacterId,
                DateEnd         = SystemTime.Now().AddDays(1),
                StaticBonusType = StaticBonusType.BazaarMedalGold
            });
            _session.Character.InventoryService.AddItemToPocket(itemInstance);
            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            Assert.AreEqual(1, _session.Character.InventoryService.Count);
        }
Beispiel #29
0
        public void Test_RemoveSp()
        {
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_item.Create(912, 1),
                                                                                             _session.Character.CharacterId));
            var item = _session.Character.InventoryService.First();

            _session.Character.UseSp = true;
            item.Value.Type          = NoscorePocketType.Wear;
            item.Value.Slot          = (byte)EquipmentType.Sp;
            _spTransformPacketHandler.Execute(new SpTransformPacket {
                Type = SlPacketType.WearSpAndTransform
            }, _session);
            Assert.IsFalse(_session.Character.UseSp);
        }
        public void Test_TitleGuriHandler()
        {
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1, 1), 0));
            ExecuteGuriEventHandler(new GuriPacket
            {
                Type     = GuriPacketType.Title,
                VisualId = 0
            });
            var lastpacket = (InfoPacket)_session.LastPackets.FirstOrDefault(s => s is InfoPacket);

            Assert.AreEqual(Language.Instance.GetMessageFromKey(LanguageKey.WEAR_NEW_TITLE,
                                                                _session.Account.Language), lastpacket.Message);
            Assert.AreEqual(1, _session.Character.Titles.Count);
        }