public override object ActivateSlot(int slotId, ItemSlot mouseSlot, ref ItemStackMoveOperation op) { // Player clicked an item from the selling list, move to buying cart if (slotId <= 15) { AddToBuyingCart(slots[slotId] as ItemSlotTrade); return(InvNetworkUtil.GetActivateSlotPacket(slotId, op)); } // Player clicked an item in the buying cart, remove it if (slotId <= 19) { ItemSlotTrade cartSlot = slots[slotId] as ItemSlotTrade; if (op.MouseButton == EnumMouseButton.Right) { // Just remove one batch on right mouse if (cartSlot.TradeItem?.Stack != null) { cartSlot.TakeOut(cartSlot.TradeItem.Stack.StackSize); cartSlot.MarkDirty(); } } else { cartSlot.Itemstack = null; cartSlot.MarkDirty(); } return(InvNetworkUtil.GetActivateSlotPacket(slotId, op)); } // Player clicked an item on the buy slot, ignore it if (slotId <= 34) { return(InvNetworkUtil.GetActivateSlotPacket(slotId, op)); } // Player clicked an item in the selling cart, act like a normal slot if (slotId <= 39) { return(base.ActivateSlot(slotId, mouseSlot, ref op)); } return(InvNetworkUtil.GetActivateSlotPacket(slotId, op)); }