Example #1
0
        public void LoadAnNonExistingItem()
        {
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0));
            var item = Inventory.LoadBySlotAndType(1, NoscorePocketType.Main);

            Assert.IsNull(item);
        }
Example #2
0
        public void MoveFashionToFashionPocket()
        {
            var fashion = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(924), 0)).First();
            var item    = Inventory.MoveInPocket(fashion.Slot, fashion.Type, NoscorePocketType.Costume);

            Assert.IsTrue(item.Type == NoscorePocketType.Costume);
        }
Example #3
0
        public void LoadItemOnAnNotEmptySlot()
        {
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0));
            var item = Inventory.LoadBySlotAndType(0, NoscorePocketType.Main);

            Assert.IsTrue((item.ItemInstance.ItemVNum == 1012) && (item.ItemInstance.Amount == 990));
        }
Example #4
0
 public void CreateDoesntStackOnWrongItem()
 {
     Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0));
     Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1013, 990), 0));
     Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1013, 19), 0));
     Assert.IsTrue(Inventory.Values.First(item => item.Slot == 0).ItemInstance.Amount == 990);
 }
Example #5
0
 public void CreateStackOnASpecificItem()
 {
     Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0));
     Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1013, 990), 0));
     Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1013), 0));
     Assert.IsTrue(Inventory.Values.First(item => item.Slot == 1).ItemInstance.Amount == 991);
 }
Example #6
0
        public void MoveFashionToSpecialistPocket()
        {
            var fashion = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(924), 0)).First();
            var item    = Inventory.MoveInPocket(fashion.Slot, fashion.Type, NoscorePocketType.Specialist);

            Assert.IsNull(item);
        }
Example #7
0
        public async Task Test_Wear_Put_Item_CorrectSlotAsync(EquipmentType type)
        {
            var items = new List <ItemDto>
            {
                new Item
                {
                    Type  = NoscorePocketType.Equipment, VNum = 1, EquipmentSlot = type,
                    Class = 31 //sum of all 2^class
                }
            };

            _item = new ItemProvider(items,
                                     new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >
            {
                new WearEventHandler(Logger)
            });

            _session !.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1, 1),
                                                                                                 _session.Character.CharacterId));
            await _wearPacketHandler !.ExecuteAsync(new WearPacket {
                InventorySlot = 0, Type = PocketType.Equipment
            }, _session).ConfigureAwait(false);

            Assert.IsTrue(_session.Character.InventoryService.All(s =>
                                                                  (s.Value.Slot == (short)type) && (s.Value.Type == NoscorePocketType.Wear)));
        }
Example #8
0
        public void CreateItemWhenSlotMax()
        {
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 999), 0)).First();
            var items = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012), 0));

            Assert.IsTrue(items[0].ItemInstance.Amount == 1);
        }
Example #9
0
        public void RegisterHasSmallerTaxWhenMedal()
        {
            _session.Character.Gold = 100000;
            _session.Character.StaticBonusList.Add(new StaticBonusDto
            {
                StaticBonusType = StaticBonusType.BazaarMedalGold
            });
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012), 0))
            .First();
            _cregPacketHandler.Execute(new CRegPacket
            {
                Type       = 0,
                Inventory  = 1,
                Slot       = 0,
                Durability = 1,
                IsPackage  = 0,
                Amount     = 1,
                Taxe       = 0,
                MedalUsed  = 0,
                Price      = 10000000
            }, _session);
            var lastpacket = (MsgPacket)_session.LastPackets.FirstOrDefault(s => s is MsgPacket);

            Assert.AreEqual(0, _session.Character.InventoryService.Count);
            Assert.IsTrue(lastpacket.Message ==
                          Language.Instance.GetMessageFromKey(LanguageKey.OBJECT_IN_BAZAAR, _session.Account.Language));
        }
Example #10
0
        public void RegisterLimitExceeded()
        {
            _session.Character.Gold = 5000000;
            _session.Character.InventoryService
            .AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 999), 0)).First();
            _bazaarHttpClient.Reset();
            _bazaarHttpClient.Setup(s => s.AddBazaar(It.IsAny <BazaarRequest>())).Returns(LanguageKey.LIMIT_EXCEEDED);
            _cregPacketHandler.Execute(new CRegPacket
            {
                Type       = 0,
                Inventory  = 1,
                Slot       = 0,
                Durability = 1,
                IsPackage  = 0,
                Amount     = 949,
                Taxe       = 0,
                MedalUsed  = 0,
                Price      = 1
            }, _session);
            var lastpacket = (MsgPacket)_session.LastPackets.FirstOrDefault(s => s is MsgPacket);

            Assert.AreEqual(999, _session.Character.InventoryService.FirstOrDefault().Value.ItemInstance.Amount);
            Assert.IsTrue(lastpacket.Message ==
                          Language.Instance.GetMessageFromKey(LanguageKey.LIMIT_EXCEEDED, _session.Account.Language));
        }
Example #11
0
        public void UserCanSell()
        {
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = true, Price = 500000
                }
            };
            var itemBuilder = new ItemProvider(items,
                                               new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >());

            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0),
                                                                NoscorePocketType.Etc, 0);
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 2), 0),
                                                                NoscorePocketType.Etc, 1);
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 3), 0),
                                                                NoscorePocketType.Etc, 2);

            _session.Character.MapInstance = _instanceProvider.GetBaseMapById(1);
            _sellPacketHandler.Execute(new SellPacket {
                Slot = 0, Amount = 1, Data = (short)NoscorePocketType.Etc
            },
                                       _session);
            Assert.IsTrue(_session.Character.Gold > 0);
            Assert.IsNull(_session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Etc));
        }
Example #12
0
        public void CreateItem()
        {
            var item = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012), 0)).First();

            Assert.IsTrue((item.ItemInstance.Amount == 1) && (item.ItemInstance.ItemVNum == 1012) &&
                          (item.Type == NoscorePocketType.Main));
        }
Example #13
0
        public void MoveWeaponToPocket()
        {
            var weapon = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1), 0)).First();
            var item   = Inventory.MoveInPocket(weapon.Slot, weapon.Type, NoscorePocketType.Wear);

            Assert.IsTrue(item.Type == NoscorePocketType.Wear);
        }
Example #14
0
        public void CreateItemWhenSlotFilled()
        {
            Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0)).First();
            var items = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 29), 0));

            Assert.IsTrue((items[0].ItemInstance.Amount == 999) && (items.Last().ItemInstance.Amount == 20));
        }
        public void Test_Wear_BadLevel()
        {
            _session.Character.Level = 1;
            var items = new List <ItemDto>
            {
                new Item
                {
                    Type          = NoscorePocketType.Equipment, VNum = 1,
                    EquipmentSlot = EquipmentType.MainWeapon,
                    LevelMinimum  = 3
                }
            };

            _item = new ItemProvider(items,
                                     new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >
            {
                new WearEventHandler(_logger)
            });
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1, 1),
                                                                                             _session.Character.CharacterId));
            _wearPacketHandler.Execute(new WearPacket {
                InventorySlot = 0, Type = PocketType.Equipment
            }, _session);
            Assert.IsTrue(_session.Character.InventoryService.All(s => s.Value.Type == NoscorePocketType.Equipment));
            var packet = (SayPacket)_session.LastPackets.FirstOrDefault(s => s is SayPacket);

            Assert.IsTrue((packet.Message == Language.Instance.GetMessageFromKey(LanguageKey.BAD_EQUIPMENT,
                                                                                 _session.Account.Language)) && (packet.Type == SayColorType.Yellow));
        }
Example #16
0
        public async Task Test_Wear_DestroyedSpAsync()
        {
            _session !.Character.HeroLevel = 1;
            var items = new List <ItemDto>
            {
                new Item
                {
                    Type          = NoscorePocketType.Equipment, VNum = 1,
                    EquipmentSlot = EquipmentType.Sp
                }
            };

            _item = new ItemProvider(items,
                                     new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >
            {
                new WearEventHandler(Logger)
            });
            _session.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1, 1, -2),
                                                                                               _session.Character.CharacterId));
            await _wearPacketHandler !.ExecuteAsync(new WearPacket {
                InventorySlot = 0, Type = PocketType.Equipment
            }, _session).ConfigureAwait(false);

            Assert.IsTrue(_session.Character.InventoryService.Any(s => s.Value.Type == NoscorePocketType.Equipment));
            var packet = (MsgPacket?)_session.LastPackets.FirstOrDefault(s => s is MsgPacket);

            Assert.IsTrue(packet?.Message == GameLanguage.Instance.GetMessageFromKey(LanguageKey.CANT_EQUIP_DESTROYED_SP,
                                                                                     _session.Account.Language));
        }
        public void Test_Wear_GoodLevel()
        {
            _session.Character.Level = 3;
            var items = new List <ItemDto>
            {
                new Item
                {
                    Type          = NoscorePocketType.Equipment, VNum = 1,
                    EquipmentSlot = EquipmentType.MainWeapon,
                    LevelMinimum  = 3
                }
            };

            _item = new ItemProvider(items,
                                     new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >
            {
                new WearEventHandler(_logger)
            });
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1, 1),
                                                                                             _session.Character.CharacterId));
            _wearPacketHandler.Execute(new WearPacket {
                InventorySlot = 0, Type = PocketType.Equipment
            }, _session);
            Assert.IsTrue(_session.Character.InventoryService.All(s => s.Value.Type == NoscorePocketType.Wear));
        }
Example #18
0
        public async Task Test_Wear_BadHeroLevelAsync()
        {
            _session !.Character.HeroLevel = 1;
            var items = new List <ItemDto>
            {
                new Item
                {
                    Type          = NoscorePocketType.Equipment, VNum = 1,
                    EquipmentSlot = EquipmentType.MainWeapon,
                    IsHeroic      = true,
                    LevelMinimum  = 3
                }
            };

            _item = new ItemProvider(items,
                                     new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >
            {
                new WearEventHandler(Logger)
            });
            _session.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1, 1),
                                                                                               _session.Character.CharacterId));
            await _wearPacketHandler !.ExecuteAsync(new WearPacket {
                InventorySlot = 0, Type = PocketType.Equipment
            }, _session).ConfigureAwait(false);

            Assert.IsTrue(_session.Character.InventoryService.All(s => s.Value.Type == NoscorePocketType.Equipment));
            var packet = (SayPacket?)_session.LastPackets.FirstOrDefault(s => s is SayPacket);

            Assert.IsTrue((packet?.Message == GameLanguage.Instance.GetMessageFromKey(LanguageKey.BAD_EQUIPMENT,
                                                                                      _session.Account.Language)) && (packet.Type == SayColorType.Yellow));
        }
Example #19
0
        public async Task Test_Wear_GoodHeroLevelAsync()
        {
            _session !.Character.HeroLevel = 3;
            var items = new List <ItemDto>
            {
                new Item
                {
                    Type          = NoscorePocketType.Equipment, VNum = 1,
                    EquipmentSlot = EquipmentType.MainWeapon,
                    IsHeroic      = true,
                    LevelMinimum  = 3
                }
            };

            _item = new ItemProvider(items,
                                     new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >
            {
                new WearEventHandler(Logger)
            });
            _session.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1, 1),
                                                                                               _session.Character.CharacterId));
            await _wearPacketHandler !.ExecuteAsync(new WearPacket {
                InventorySlot = 0, Type = PocketType.Equipment
            }, _session).ConfigureAwait(false);

            Assert.IsTrue(_session.Character.InventoryService.All(s => s.Value.Type == NoscorePocketType.Wear));
        }
Example #20
0
        public void CreateItemAndStackIt()
        {
            Inventory !.AddItemToPocket(InventoryItemInstance.Create(_itemProvider !.Create(1012), 0)).First();
            var item = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012), 0)).First();

            Assert.IsTrue((item.ItemInstance?.Amount == 2) && (item.ItemInstance.ItemVNum == 1012));
        }
        public void Test_Process_Exchange()
        {
            IInventoryService inventory1 =
                new GameObject.Services.InventoryService.InventoryService(new List <ItemDto> {
                new Item {
                    VNum = 1012, Type = NoscorePocketType.Main
                }
            },
                                                                          _worldConfiguration !, Logger);
            IInventoryService inventory2 =
                new GameObject.Services.InventoryService.InventoryService(new List <ItemDto> {
                new Item {
                    VNum = 1013, Type = NoscorePocketType.Main
                }
            },
                                                                          _worldConfiguration !, Logger);
            var item1 = inventory1.AddItemToPocket(InventoryItemInstance.Create(_itemProvider !.Create(1012, 1), 0)) !
                        .First();
            var item2 = inventory2.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1013, 1), 0)) !
                        .First();

            _exchangeProvider !.OpenExchange(1, 2);
            _exchangeProvider.AddItems(1, item1, 1);
            _exchangeProvider.AddItems(2, item2, 1);
            var itemList = _exchangeProvider.ProcessExchange(1, 2, inventory1, inventory2);

            Assert.IsTrue((itemList.Count(s => s.Key == 1) == 2) && (itemList.Count(s => s.Key == 2) == 2));
        }
Example #22
0
        public async Task UserCanNotSellNotSoldableAsync()
        {
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = false
                }
            };
            var itemBuilder = new ItemProvider(items,
                                               new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >(), _logger);

            _session !.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0),
                                                                    NoscorePocketType.Etc, 0);
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 2), 0),
                                                                NoscorePocketType.Etc, 1);
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 3), 0),
                                                                NoscorePocketType.Etc, 2);

            _session.Character.MapInstance = _instanceProvider !.GetBaseMapById(1);
            await _sellPacketHandler !.ExecuteAsync(new SellPacket {
                Slot = 0, Amount = 1, Data = (short)NoscorePocketType.Etc
            },
                                                    _session).ConfigureAwait(false);
            var packet = (SMemoPacket?)_session.LastPackets.FirstOrDefault(s => s is SMemoPacket);

            Assert.IsTrue(packet?.Message ==
                          GameLanguage.Instance.GetMessageFromKey(LanguageKey.ITEM_NOT_SOLDABLE, _session.Account.Language));
            Assert.IsTrue(_session.Character.Gold == 0);
            Assert.IsNotNull(_session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Etc));
        }
        public async Task UserCanNotCreateShopWithMissingAmountItemAsync()
        {
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1
                }
            };
            var itemBuilder = new ItemProvider(items,
                                               new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >(), Logger);

            _session !.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0),
                                                                    NoscorePocketType.Etc, 0);
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0),
                                                                NoscorePocketType.Etc, 1);
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0),
                                                                NoscorePocketType.Etc, 2);

            _session.Character.MapInstance = TestHelpers.Instance.MapInstanceProvider.GetBaseMapById(1);
            await _mShopPacketHandler !.ExecuteAsync(_shopPacket, _session).ConfigureAwait(false);

            Assert.IsNull(_session.Character.Shop);
            var packet = (SayPacket?)_session.LastPackets.FirstOrDefault(s => s is SayPacket);

            Assert.IsTrue(packet?.Message ==
                          GameLanguage.Instance.GetMessageFromKey(LanguageKey.SHOP_ONLY_TRADABLE_ITEMS, _session.Account.Language));
        }
Example #24
0
        public async Task UserCanNotSellInExchangeAsync()
        {
            _session !.Character.InShop = true;
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsTradable = true
                }
            };
            var itemBuilder = new ItemProvider(items,
                                               new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >(), _logger);

            _session.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0),
                                                                  NoscorePocketType.Etc, 0);
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 2), 0),
                                                                NoscorePocketType.Etc, 1);
            _session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 3), 0),
                                                                NoscorePocketType.Etc, 2);

            _session.Character.MapInstance = _instanceProvider !.GetBaseMapById(1);
            await _sellPacketHandler !.ExecuteAsync(new SellPacket {
                Slot = 0, Amount = 1, Data = (short)NoscorePocketType.Etc
            },
                                                    _session).ConfigureAwait(false);

            Assert.IsTrue(_session.Character.Gold == 0);
            Assert.IsNotNull(_session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Etc));
        }
Example #25
0
        public async Task Test_Binding_RequiredAsync()
        {
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Equipment, VNum = 1, RequireBinding = true
                }
            };

            _item = new ItemProvider(items,
                                     new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >
            {
                new WearEventHandler(Logger)
            });

            _session !.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(_item.Create(1, 1),
                                                                                                 _session.Character.CharacterId));
            await _wearPacketHandler !.ExecuteAsync(new WearPacket {
                InventorySlot = 0, Type = PocketType.Equipment
            }, _session).ConfigureAwait(false);

            var packet = (QnaPacket?)_session.LastPackets.FirstOrDefault(s => s is QnaPacket);

            Assert.IsTrue(packet?.YesPacket is UseItemPacket yespacket &&
                          (yespacket.Slot == 0) &&
                          (yespacket.Type == PocketType.Equipment) &&
                          (packet.Question == _session.GetMessageFromKey(LanguageKey.ASK_BIND)));
            Assert.IsTrue(_session.Character.InventoryService.Any(s =>
                                                                  (s.Value.ItemInstance !.ItemVNum == 1) && (s.Value.Type == NoscorePocketType.Equipment)));
        }
Example #26
0
        public void MoveSpecialistToSpecialistPocket()
        {
            var specialist = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(912), 0))
                             .First();
            var item = Inventory.MoveInPocket(specialist.Slot, specialist.Type, NoscorePocketType.Specialist);

            Assert.IsTrue(item.Type == NoscorePocketType.Specialist);
        }
        public void Test_Vehicle_Remove()
        {
            _session.Character.IsVehicled = true;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            Assert.IsFalse(_session.Character.IsVehicled);
        }
        public void Test_Vehicle()
        {
            _useItem.Mode = 2;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            Assert.IsTrue(_session.Character.IsVehicled);
        }
        public void Test_Can_Not_Vehicle_In_Shop()
        {
            _session.Character.InShop = true;
            var itemInstance = InventoryItemInstance.Create(_itemProvider.Create(1), _session.Character.CharacterId);

            ExecuteInventoryItemInstanceEventHandler(itemInstance);
            _logger.Verify(s => s.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.CANT_USE_ITEM_IN_SHOP)), Times.Exactly(1));
        }
Example #30
0
        public void MoveSpecialistToFashionPocket()
        {
            var specialist = Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(912), 0))
                             .First();
            var item = Inventory.MoveInPocket(specialist.Slot, specialist.Type, NoscorePocketType.Costume);

            Assert.IsNull(item);
        }