public void Handle(WorldClient client, MapPickUpItemPacket packet) { var player = _gameWorld.Players[_gameSession.CharId]; var mapItem = player.Map.GetItem(packet.ItemId, player); if (mapItem is null) { _packetFactory.SendItemDoesNotBelong(client); return; } if (mapItem.Item.Type == Item.MONEY_ITEM_TYPE) { player.Map.RemoveItem(player.CellId, mapItem.Id); player.InventoryManager.Gold += (uint)mapItem.Item.Gold; _packetFactory.SendAddItem(client, mapItem.Item); } else { var inventoryItem = _inventoryManager.AddItem(mapItem.Item); if (inventoryItem is null) { _packetFactory.SendFullInventory(client); } else { player.Map.RemoveItem(player.CellId, mapItem.Id); if (player.PartyManager.Party != null) { player.PartyManager.Party.MemberGetItem(player, inventoryItem); } } } }
public void Handle(WorldClient client, GMGetItemPacket packet) { if (!_gameSession.IsAdmin) { return; } var itemCount = packet.Count; var ok = false; while (itemCount > 0) { var newItem = new Item(_databasePreloader, _enchantConfig, _itemCreateConfig, packet.Type, packet.TypeId, itemCount); var item = _inventoryManager.AddItem(newItem); if (item != null) { ok = true; } itemCount -= newItem.Count; } if (ok) { _packetFactory.SendGmCommandSuccess(client); } else { _packetFactory.SendGmCommandError(client, PacketType.GM_COMMAND_GET_ITEM); } }
static void Main(string[] args) { IInventoryManager inventoryManager = DIServices.Provider.GetService <IInventoryManager>(); //Test Input inventoryManager.AddItem(new AgedBrie(1, 1) { Name = "Aged Brie", Type = ItemTypes.Special, UniqueID = 1 }); inventoryManager.AddItem(new BackstagePasses(-1, 2) { Name = "Backstage passes", Type = ItemTypes.Special, UniqueID = 2 }); inventoryManager.AddItem(new BackstagePasses(9, 2) { Name = "Backstage passes", Type = ItemTypes.Special, UniqueID = 3 }); inventoryManager.AddItem(new Legendary(2, 2) { Name = "Sulfuras", Type = ItemTypes.Legendary, UniqueID = 4 }); inventoryManager.AddItem(new Normal(-1, 55) { Name = "Normal Item", Type = ItemTypes.Normal, UniqueID = 5 }); inventoryManager.AddItem(new Normal(2, 2) { Name = "Normal Item", Type = ItemTypes.Normal, UniqueID = 6 }); inventoryManager.AddItem(new InvalidItem(2, 2) { Name = "INVALID ITEM", Type = ItemTypes.Unknown, UniqueID = 7 }); inventoryManager.AddItem(new Conjured(2, 2) { Name = "Conjured", Type = ItemTypes.Conjured, UniqueID = 8 }); inventoryManager.AddItem(new Conjured(-1, 5) { Name = "Conjured", Type = ItemTypes.Conjured, UniqueID = 9 }); inventoryManager.UpdateInventory(1); inventoryManager.PrintInventory(); Console.ReadLine(); }
public void FinishSuccessful() { foreach (var item in Request.TradeItems.Where(x => x.Key.CharacterId == _ownerId)) { var tradeItem = item.Value; var resultItm = _inventoryManager.RemoveItem(tradeItem); if (_gameWorld.Players[PartnerId].InventoryManager.AddItem(resultItm) is null) // No place for this item. { _inventoryManager.AddItem(resultItm); } } if (Request.TradeMoney.ContainsKey(_ownerId) && Request.TradeMoney[_ownerId] > 0) { _inventoryManager.Gold = _inventoryManager.Gold - Request.TradeMoney[_ownerId]; _gameWorld.Players[PartnerId].InventoryManager.Gold = _gameWorld.Players[PartnerId].InventoryManager.Gold + Request.TradeMoney[_ownerId]; } ClearTrade(); }
public (bool Success, byte Slot, List <Item> SavedGems, Item Item) RemoveGem(byte bag, byte slot, bool shouldRemoveSpecificGem, byte gemPosition, byte hammerBag, byte hammerSlot) { bool success = false; int spentGold = 0; var gemItems = new List <Item>() { null, null, null, null, null, null }; var savedGems = new List <Gem>(); var removedGems = new List <Gem>(); _inventoryManager.InventoryItems.TryGetValue((bag, slot), out var item); if (item is null) { return(success, 0, gemItems, null); } if (shouldRemoveSpecificGem) { Gem gem = null; switch (gemPosition) { case 0: gem = item.Gem1; item.Gem1 = null; break; case 1: gem = item.Gem2; item.Gem2 = null; break; case 2: gem = item.Gem3; item.Gem3 = null; break; case 3: gem = item.Gem4; item.Gem4 = null; break; case 4: gem = item.Gem5; item.Gem5 = null; break; case 5: gem = item.Gem6; item.Gem6 = null; break; } if (gem is null) { return(success, 0, gemItems, null); } _inventoryManager.InventoryItems.TryGetValue((hammerBag, hammerSlot), out var hammer); if (hammer != null) { _inventoryManager.TryUseItem(hammer.Bag, hammer.Slot, skillApplyingItemEffect: true); } success = RemoveGem(item, gem, hammer); spentGold += GetRemoveGold(gem); if (success) { savedGems.Add(gem); var gemItem = new Item(_databasePreloader, _itemEnchantConfig, _itemCreateConfig, Item.GEM_ITEM_TYPE, (byte)gem.TypeId); _inventoryManager.AddItem(gemItem); if (gemItem != null) { gemItems[gem.Position] = gemItem; } //else // Not enough place in inventory. // Map.AddItem(); ? } removedGems.Add(gem); } else { var gems = new List <Gem>(); if (item.Gem1 != null) { gems.Add(item.Gem1); } if (item.Gem2 != null) { gems.Add(item.Gem2); } if (item.Gem3 != null) { gems.Add(item.Gem3); } if (item.Gem4 != null) { gems.Add(item.Gem4); } if (item.Gem5 != null) { gems.Add(item.Gem5); } if (item.Gem6 != null) { gems.Add(item.Gem6); } foreach (var gem in gems) { success = RemoveGem(item, gem, null); spentGold += GetRemoveGold(gem); if (success) { savedGems.Add(gem); var gemItem = new Item(_databasePreloader, _itemEnchantConfig, _itemCreateConfig, Item.GEM_ITEM_TYPE, (byte)gem.TypeId); _inventoryManager.AddItem(gemItem); if (gemItem != null) { gemItems[gem.Position] = gemItem; } //else // Not enough place in inventory. // Map.AddItem(); ? } } removedGems.AddRange(gems); gemPosition = 255; // when remove all gems } _inventoryManager.Gold = (uint)(_inventoryManager.Gold - spentGold); var itemDestroyed = false; foreach (var gem in removedGems) { if (gem.LinkingRate > 0 && !savedGems.Contains(gem)) { itemDestroyed = true; break; } } if (item.Bag == 0) { if (itemDestroyed) { if (item == _inventoryManager.Helmet) { _inventoryManager.Helmet = null; } else if (item == _inventoryManager.Armor) { _inventoryManager.Armor = null; } else if (item == _inventoryManager.Pants) { _inventoryManager.Pants = null; } else if (item == _inventoryManager.Gauntlet) { _inventoryManager.Gauntlet = null; } else if (item == _inventoryManager.Boots) { _inventoryManager.Boots = null; } else if (item == _inventoryManager.Weapon) { _inventoryManager.Weapon = null; } else if (item == _inventoryManager.Shield) { _inventoryManager.Shield = null; } else if (item == _inventoryManager.Cape) { _inventoryManager.Cape = null; } else if (item == _inventoryManager.Amulet) { _inventoryManager.Amulet = null; } else if (item == _inventoryManager.Ring1) { _inventoryManager.Ring1 = null; } else if (item == _inventoryManager.Ring2) { _inventoryManager.Ring2 = null; } else if (item == _inventoryManager.Bracelet1) { _inventoryManager.Bracelet1 = null; } else if (item == _inventoryManager.Bracelet2) { _inventoryManager.Bracelet2 = null; } else if (item == _inventoryManager.Mount) { _inventoryManager.Mount = null; } else if (item == _inventoryManager.Pet) { _inventoryManager.Pet = null; } else if (item == _inventoryManager.Costume) { _inventoryManager.Costume = null; } } else { foreach (var gem in removedGems) { _statsManager.ExtraStr -= gem.Str; _statsManager.ExtraDex -= gem.Dex; _statsManager.ExtraRec -= gem.Rec; _statsManager.ExtraInt -= gem.Int; _statsManager.ExtraLuc -= gem.Luc; _statsManager.ExtraWis -= gem.Wis; _healthManager.ExtraHP -= gem.HP; _healthManager.ExtraSP -= gem.SP; _healthManager.ExtraMP -= gem.MP; _statsManager.ExtraDefense -= gem.Defense; _statsManager.ExtraResistance -= gem.Resistance; _statsManager.Absorption -= gem.Absorb; _speedManager.ExtraMoveSpeed -= gem.MoveSpeed; _speedManager.ExtraAttackSpeed -= gem.AttackSpeed; if (gem.Str != 0 || gem.Dex != 0 || gem.Rec != 0 || gem.Wis != 0 || gem.Int != 0 || gem.Luc != 0 || gem.MinAttack != 0 || gem.PlusAttack != 0) { _statsManager.RaiseAdditionalStatsUpdate(); } } } } if (itemDestroyed) { _inventoryManager.RemoveItem(item); } else { foreach (var gem in removedGems) { switch (gem.Position) { case 0: item.Gem1 = null; break; case 1: item.Gem2 = null; break; case 2: item.Gem3 = null; break; case 3: item.Gem4 = null; break; case 4: item.Gem5 = null; break; case 5: item.Gem6 = null; break; } } } return(!itemDestroyed, gemPosition, gemItems, item); }
public void FullInventoryUpdateTest() { invManager.AddItem(new AgedBrie(1, 1) { Name = "Aged Brie", Type = ItemTypes.Special, UniqueID = 1 }); invManager.AddItem(new BackstagePasses(-1, 2) { Name = "Backstage passes", Type = ItemTypes.Special, UniqueID = 2 }); invManager.AddItem(new BackstagePasses(9, 2) { Name = "Backstage passes", Type = ItemTypes.Special, UniqueID = 3 }); invManager.AddItem(new Legendary(2, 2) { Name = "Sulfuras", Type = ItemTypes.Legendary, UniqueID = 4 }); invManager.AddItem(new Normal(-1, 55) { Name = "Normal Item", Type = ItemTypes.Normal, UniqueID = 5 }); invManager.AddItem(new Normal(2, 2) { Name = "Normal Item", Type = ItemTypes.Normal, UniqueID = 6 }); invManager.AddItem(new InvalidItem(2, 2) { Name = "INVALID ITEM", Type = ItemTypes.Unknown, UniqueID = 7 }); invManager.AddItem(new Conjured(2, 2) { Name = "Conjured", Type = ItemTypes.Conjured, UniqueID = 8 }); invManager.AddItem(new Conjured(-1, 5) { Name = "Conjured", Type = ItemTypes.Conjured, UniqueID = 9 }); invManager.UpdateInventory(); Assert.AreEqual("Aged Brie", invManager.Inventory[0].Name); Assert.AreEqual(0, invManager.Inventory[0].SellIn); Assert.AreEqual(2, invManager.Inventory[0].Quality); Assert.AreEqual("Backstage passes", invManager.Inventory[1].Name); Assert.AreEqual(-2, invManager.Inventory[1].SellIn); Assert.AreEqual(0, invManager.Inventory[1].Quality); Assert.AreEqual("Backstage passes", invManager.Inventory[2].Name); Assert.AreEqual(8, invManager.Inventory[2].SellIn); Assert.AreEqual(4, invManager.Inventory[2].Quality); Assert.AreEqual("Sulfuras", invManager.Inventory[3].Name); Assert.AreEqual(2, invManager.Inventory[3].SellIn); Assert.AreEqual(2, invManager.Inventory[3].Quality); Assert.AreEqual("Normal Item", invManager.Inventory[4].Name); Assert.AreEqual(-2, invManager.Inventory[4].SellIn); Assert.AreEqual(50, invManager.Inventory[4].Quality); Assert.AreEqual("Normal Item", invManager.Inventory[5].Name); Assert.AreEqual(1, invManager.Inventory[5].SellIn); Assert.AreEqual(1, invManager.Inventory[5].Quality); Assert.AreEqual("INVALID ITEM", invManager.Inventory[6].Name); Assert.AreEqual("Conjured", invManager.Inventory[7].Name); Assert.AreEqual(1, invManager.Inventory[7].SellIn); Assert.AreEqual(0, invManager.Inventory[7].Quality); Assert.AreEqual("Conjured", invManager.Inventory[8].Name); Assert.AreEqual(-2, invManager.Inventory[8].SellIn); Assert.AreEqual(1, invManager.Inventory[8].Quality); }