/// <summary> /// Move a thing from container. /// </summary> private void MoveItemFromContainer() { int containerIndex = posFrom.y - CONTAINER_HEADER; Container container = player.GetContainerByIndex(containerIndex); List <Player> affected = container.GetViewers(); if (itemToMove.IsOfType(Constants.TYPE_STACKABLE) && itemToMove.Count != count) { itemToMove.Count -= count; itemToMove = Item.CreateItem(itemToMove.ItemID); itemToMove.Count = count; container.UpdateContainerToViewers(); } else { container.RemoveItem(itemToMove); } }
/// <summary> /// Move the specified thing to container. /// </summary> /// <param name="thingToMove">Thing to move.</param> private void MoveItemToContainer() { int containerIndex = posTo.y - CONTAINER_HEADER; int itemIndex = posTo.z; Container container = player.GetContainerByIndex(containerIndex); Item containerItem = container.GetItemByIndex(itemIndex); bool addItem = true; if (containerItem != null && containerItem.IsOfType(Constants. TYPE_STACKABLE) && containerItem.ItemID == itemToMove.ItemID) { if (containerItem.Count + itemToMove.Count > MAX_STACK_COUNT) { byte countRemainder = (byte)(MAX_STACK_COUNT - containerItem.Count); containerItem.Count += countRemainder; itemToMove.Count -= countRemainder; } else { containerItem.Count += itemToMove.Count; addItem = false; } } if (containerItem != null && containerItem.IsOfType(Constants.TYPE_CONTAINER)) { List <Player> affected = containerItem.AddItem(itemToMove); } else { if (addItem) { container.AddItem(itemToMove); } else { container.UpdateContainerToViewers(); } } }