public void LoadAnNonExistingItem() { Inventory.AddItemToPocket(InventoryItemInstance.Create(_itemProvider.Create(1012, 990), 0)); var item = Inventory.LoadBySlotAndType(1, NoscorePocketType.Main); Assert.IsNull(item); }
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); }
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)); }
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); }
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); }
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); }
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))); }
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); }
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)); }
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)); }
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)); }
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)); }
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); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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))); }
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)); }
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); }