{
Util.handleIllegalPlayerAction(player,"Warning!! Character "+player.getName()+" of account "+player.getAccountName()+" sent a false BuyList list_id.",Config.DEFAULT_PUNISH);
return;
}
L2Item template = ItemTable.getInstance().getTemplate(itemId);
if (template == null) continue;
if (count > Integer.MAX_VALUE || (!template.isStackable() && count > 1))
{
Util.handleIllegalPlayerAction(player,"Warning!! Character "+player.getName()+" of account "+player.getAccountName()+" tried to purchase invalid quantity of items at the same time.",Config.DEFAULT_PUNISH);
SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
sendPacket(sm);
sm = null;
return;
}
if (_listId < 1000000)
{
//list = TradeController.getInstance().getBuyList(_listId);
price = list.getPriceForItemId(itemId);
if (itemId >= 3960 && itemId <= 4026) price *= Config.RATE_SIEGE_GUARDS_PRICE;
}
/* TODO: Disabled until Leaseholders are rewritten ;-)
} else {
L2ItemInstance li = merchant.findLeaseItem(itemId, 0);
if (li == null || li.getCount() < cnt) {
cnt = li.getCount();
if (cnt <= 0) {
items.remove(i);
continue;
}
items.get(i).setCount((int)cnt);
}
price = li.getPriceToSell(); // lease holder sells the item
weight = li.getItem().getWeight();
}
*/
if (price < 0)
{
_log.warning("ERROR, no price found .. wrong buylist ??");
sendPacket(new ActionFailed());
return;
}
if(price == 0 && !player.isGM() && Config.ONLY_GM_ITEMS_FREE)
{
player.sendMessage("Ohh Cheat dont work? You have a problem now!");
Util.handleIllegalPlayerAction(player,"Warning!! Character "+player.getName()+" of account "+player.getAccountName()+" tried buy item for 0 adena.", Config.DEFAULT_PUNISH);
return;
}
subTotal += (long)count * price; // Before tax
tax = (int)(subTotal * taxRate);
if (subTotal + tax > Integer.MAX_VALUE)
{
Util.handleIllegalPlayerAction(player,"Warning!! Character "+player.getName()+" of account "+player.getAccountName()+" tried to purchase over "+Integer.MAX_VALUE+" adena worth of goods.", Config.DEFAULT_PUNISH);
return;
}
weight += (long)count * template.getWeight();
if (!template.isStackable()) slots += count;
else if (player.getInventory().getItemByItemId(itemId) == null) slots++;
}
if (weight > Integer.MAX_VALUE || weight < 0 || !player.getInventory().validateWeight((int)weight))
{