If u have special_storage need to extended the CanTakeInventoryItem function.

Ex:


bool CHARACTER::CanTakeInventoryItem(LPITEM item, TItemPos* cell)
{
	int iEmpty = -1;
	if (item->IsDragonSoul())
	{
		cell->window_type = DRAGON_SOUL_INVENTORY;
		cell->cell = iEmpty = GetEmptyDragonSoulInventory(item->GetVnum(), item->GetSubType(), item->GetSize());
	}
	else if (item->IsType()) // Need to rewrite IsType to Isbook and etc
	{
		cell->window_type = common/lenght.h_INVENTORY_TYPE; //look window_type at common/lenght.h
		cell->cell = IEmpty = char_item_cpp_search_GetEmpyfunction(item->GetVnum(), item->GetSubType(), item->GetSize()); //Need to modifiy char_item_cpp_search_GetEmpyfunction // You can find GetEmptyfunction at char_item.cpp
	}
	else
	{
		cell->window_type = INVENTORY;
		cell->cell = iEmpty = GetEmptyInventory(item->GetSize());
	}