Exemplo n.º 1
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 ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(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));
        }
Exemplo n.º 2
0
        public async Task UserCanNotSellNotSoldableAsync()
        {
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = false
                }
            };
            var itemBuilder = new ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(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));
        }
Exemplo n.º 3
0
        public async Task UserCanNotCreateShopWithMissingAmountItemAsync()
        {
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1
                }
            };
            var itemBuilder = new ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(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.MapInstanceAccessorService.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));
        }
Exemplo n.º 4
0
        public async Task UserCanNotShopNonExistingSlotAsync()
        {
            _session !.Character.Gold = 9999999999;
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = true, Price = 500000
                }
            };
            var itemBuilder = new ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >()), Logger);

            var list = new ConcurrentDictionary <int, ShopItem>();

            list.TryAdd(0, new ShopItem {
                Slot = 0, ItemInstance = itemBuilder.Create(1, -1), Type = 0
            });
            var shop = new Shop
            {
                ShopItems = list
            };
            await _session.Character.BuyAsync(shop, 1, 99).ConfigureAwait(false);

            Assert.IsNull(_session.LastPackets.FirstOrDefault());
        }
Exemplo n.º 5
0
        public async Task UserCantShopWithoutReputAsync()
        {
            _session !.Character.Reput = 500000;
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = true, ReputPrice = 500000
                }
            };
            var itemBuilder = new ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >()), Logger);

            var list = new ConcurrentDictionary <int, ShopItem>();

            list.TryAdd(0, new ShopItem {
                Slot = 0, ItemInstance = itemBuilder.Create(1, -1), Type = 0
            });
            var shop = new Shop
            {
                ShopItems = list
            };
            await _session.Character.BuyAsync(shop, 0, 99).ConfigureAwait(false);

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

            Assert.IsTrue(packet?.Message ==
                          GameLanguage.Instance.GetMessageFromKey(LanguageKey.NOT_ENOUGH_REPUT, _session.Account.Language));
        }
Exemplo n.º 6
0
        public async Task UserCanNotCreateShopWithMissingItemAsync()
        {
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1
                }
            };
            var itemBuilder = new ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >()), Logger);

            _session !.Character.InventoryService !.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0));
            _session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1);
            await _mShopPacketHandler !.ExecuteAsync(_shopPacket, _session).ConfigureAwait(false);

            Assert.IsNull(_session.Character.Shop);
        }
Exemplo n.º 7
0
        public async Task UserCantShopWithoutPlaceAsync()
        {
            _session !.Character.Gold = 500000;

            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = true, Price = 1
                }
            };
            var itemBuilder = new ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >()), Logger);

            _session.Character.ItemProvider = itemBuilder;
            var list = new ConcurrentDictionary <int, ShopItem>();

            list.TryAdd(0, new ShopItem {
                Slot = 0, ItemInstance = itemBuilder.Create(1, -1), Type = 0
            });
            var shop = new Shop
            {
                ShopItems = list
            };

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

            await _session.Character.BuyAsync(shop, 0, 999).ConfigureAwait(false);

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

            Assert.IsTrue(packet?.Message == Game18NConstString.NotEnoughSpace);
        }
Exemplo n.º 8
0
        public async Task UserCanShopReputAsync()
        {
            _session !.Character.Reput = 500000;

            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = true, ReputPrice = 1
                }
            };
            var itemBuilder = new ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(new List <IEventHandler <Item, Tuple <InventoryItemInstance, UseItemPacket> > >()), Logger);

            _session.Character.ItemProvider = itemBuilder;
            var list = new ConcurrentDictionary <int, ShopItem>();

            list.TryAdd(0, new ShopItem {
                Slot = 0, ItemInstance = itemBuilder.Create(1), Type = 0
            });
            var shop = new Shop
            {
                ShopItems = list
            };

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

            await _session.Character.BuyAsync(shop, 0, 998).ConfigureAwait(false);

            Assert.IsTrue(_session.Character.InventoryService.All(s => s.Value.ItemInstance?.Amount == 999));
            Assert.IsTrue(_session.Character.Reput == 499002);
        }
Exemplo n.º 9
0
        public async Task UserCanNotCreateShopInExchangeAsync()
        {
            _session !.Character.InShop = true;
            var items = new List <ItemDto>
            {
                new Item {
                    Type = NoscorePocketType.Etc, VNum = 1, IsTradable = true
                }
            };
            var itemBuilder = new ItemGenerationService(items,
                                                        new EventLoaderService <Item, Tuple <InventoryItemInstance, UseItemPacket>, IUseItemEventHandler>(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 = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1);
            await _session !.HandlePacketsAsync(new[] { _shopPacket }).ConfigureAwait(false);

            Assert.IsNull(_session.Character.Shop);
        }