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)); }
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)); }
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)); }
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()); }
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)); }
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); }
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); }
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); }
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); }