#ifdef RENEWAL_PICKUP_AFFECT
void CHARACTER::AutoGiveItemNew(LPITEM item, bool printMsg)
{
if (!item)
return;
const DWORD itemVnum = item->GetVnum();
const WORD realCount = item->GetCount();
WORD wCount = item->GetCount();
if (item->IsStackable() && item->GetType() != ITEM_BLEND)
{
for (WORD i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i)
{
LPITEM invItem = GetInventoryItem(i);
if (!invItem)
continue;
if (invItem->GetVnum() == itemVnum)
{
BYTE j;
for (j = 0; j < ITEM_SOCKET_MAX_NUM; ++j)
if (invItem->GetSocket(j) != item->GetSocket(j))
break;
if (j != ITEM_SOCKET_MAX_NUM)
continue;
const WORD bCount2 = MIN(ITEM_MAX_COUNT - invItem->GetCount(), wCount);
if (bCount2 > 0)
{
wCount -= bCount2;
invItem->SetCount(invItem->GetCount() + bCount2);
if (wCount == 0)
{
if (printMsg)
{
if (realCount > 1)
ChatPacket(CHAT_TYPE_INFO, "Tárgyat kaptál: x%d %s.", realCount, item->GetName());
else
ChatPacket(CHAT_TYPE_INFO, "Tárgyat kaptál: %s.", item->GetName());
}
M2_DESTROY_ITEM(item);
return;
}
}
}
}
item->SetCount(wCount);
}
int cell;
if (item->IsDragonSoul())
{
cell = GetEmptyDragonSoulInventory(item);
}
else
{
#ifdef ENABLE_SPECIAL_INVENTORY
cell = GetEmptyInventory(item);
#else
cell = GetEmptyInventory(item->GetSize());
#endif
}
if (cell != -1)
{
if (item->IsDragonSoul())
item->AddToCharacter(this, TItemPos(DRAGON_SOUL_INVENTORY, cell));
else
item->AddToCharacter(this, TItemPos(INVENTORY, cell));
if (printMsg)
{
if (realCount > 1)
ChatPacket(CHAT_TYPE_INFO, "Tárgyat kaptál: x%d %s.", realCount, item->GetName());
else
ChatPacket(CHAT_TYPE_INFO, "Tárgyat kaptál: %s.", item->GetName());
}
}
else
{
if (printMsg && realCount != wCount)
{
if (realCount-wCount > 1)
//ChatPacket(CHAT_TYPE_INFO, "111 %s %d", item->GetName(), realCount);
ChatPacket(CHAT_TYPE_INFO, "Tárgyat kaptál: x%d %s.", realCount, item->GetName());
}
item->AddToGround(GetMapIndex(), GetXYZ());
item->StartDestroyEvent();
item->SetOwnership(this, 300);
}
}
bool CHARACTER::CanPickupDirectly()
{
return FindAffect(AFFECT_PICKUP_ENABLE) != NULL;
}
#endif