Inventory check for alchemy conversion.
This commit is contained in:
@@ -19,11 +19,14 @@ package com.l2jmobius.gameserver.network.clientpackets.alchemy;
|
|||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
import com.l2jmobius.commons.util.Rnd;
|
import com.l2jmobius.commons.util.Rnd;
|
||||||
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
||||||
|
import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||||
import com.l2jmobius.gameserver.enums.Race;
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
||||||
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
|
||||||
|
import com.l2jmobius.gameserver.model.items.L2Item;
|
||||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -68,26 +71,26 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
|
|
||||||
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isDead())
|
else if (player.isDead())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isMovementDisabled())
|
else if (player.isMovementDisabled())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,10 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Calculate success and failure count.
|
// Calculate success and failure count.
|
||||||
|
final L2Item successItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionSuccess().getId());
|
||||||
|
final L2Item failureItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionFailure().getId());
|
||||||
|
int totalWeight = 0;
|
||||||
|
int totalslots = (successItemTemplate.isStackable() ? 1 : 0) + (failureItemTemplate.isStackable() ? 1 : 0);
|
||||||
int successCount = 0;
|
int successCount = 0;
|
||||||
int failureCount = 0;
|
int failureCount = 0;
|
||||||
for (int i = 0; i < _craftTimes; i++)
|
for (int i = 0; i < _craftTimes; i++)
|
||||||
@@ -139,23 +146,37 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
if (Rnd.get(100) < baseChance)
|
if (Rnd.get(100) < baseChance)
|
||||||
{
|
{
|
||||||
successCount++;
|
successCount++;
|
||||||
|
totalWeight += successItemTemplate.getWeight();
|
||||||
|
totalslots += successItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
failureCount++;
|
failureCount++;
|
||||||
|
totalWeight += failureItemTemplate.getWeight();
|
||||||
|
totalslots += failureItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if player has enough ingredients.
|
||||||
for (ItemHolder ingredient : data.getIngredients())
|
for (ItemHolder ingredient : data.getIngredients())
|
||||||
{
|
{
|
||||||
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weight and capacity check.
|
||||||
|
final PcInventory inventory = player.getInventory();
|
||||||
|
if (!inventory.validateWeight(totalWeight) || ((totalslots > 0) && !inventory.validateCapacity(totalslots)))
|
||||||
|
{
|
||||||
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.THERE_IS_NOT_ENOUGH_INVENTORY_SPACE_PLEASE_MAKE_MORE_ROOM_AND_TRY_AGAIN);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final InventoryUpdate ui = new InventoryUpdate();
|
final InventoryUpdate ui = new InventoryUpdate();
|
||||||
|
|
||||||
// Destroy ingredients.
|
// Destroy ingredients.
|
||||||
|
@@ -19,11 +19,14 @@ package com.l2jmobius.gameserver.network.clientpackets.alchemy;
|
|||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
import com.l2jmobius.commons.util.Rnd;
|
import com.l2jmobius.commons.util.Rnd;
|
||||||
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
||||||
|
import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||||
import com.l2jmobius.gameserver.enums.Race;
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
||||||
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
|
||||||
|
import com.l2jmobius.gameserver.model.items.L2Item;
|
||||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -68,26 +71,26 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
|
|
||||||
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isDead())
|
else if (player.isDead())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isMovementDisabled())
|
else if (player.isMovementDisabled())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,10 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Calculate success and failure count.
|
// Calculate success and failure count.
|
||||||
|
final L2Item successItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionSuccess().getId());
|
||||||
|
final L2Item failureItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionFailure().getId());
|
||||||
|
int totalWeight = 0;
|
||||||
|
int totalslots = (successItemTemplate.isStackable() ? 1 : 0) + (failureItemTemplate.isStackable() ? 1 : 0);
|
||||||
int successCount = 0;
|
int successCount = 0;
|
||||||
int failureCount = 0;
|
int failureCount = 0;
|
||||||
for (int i = 0; i < _craftTimes; i++)
|
for (int i = 0; i < _craftTimes; i++)
|
||||||
@@ -139,23 +146,37 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
if (Rnd.get(100) < baseChance)
|
if (Rnd.get(100) < baseChance)
|
||||||
{
|
{
|
||||||
successCount++;
|
successCount++;
|
||||||
|
totalWeight += successItemTemplate.getWeight();
|
||||||
|
totalslots += successItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
failureCount++;
|
failureCount++;
|
||||||
|
totalWeight += failureItemTemplate.getWeight();
|
||||||
|
totalslots += failureItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if player has enough ingredients.
|
||||||
for (ItemHolder ingredient : data.getIngredients())
|
for (ItemHolder ingredient : data.getIngredients())
|
||||||
{
|
{
|
||||||
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weight and capacity check.
|
||||||
|
final PcInventory inventory = player.getInventory();
|
||||||
|
if (!inventory.validateWeight(totalWeight) || ((totalslots > 0) && !inventory.validateCapacity(totalslots)))
|
||||||
|
{
|
||||||
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.THERE_IS_NOT_ENOUGH_INVENTORY_SPACE_PLEASE_MAKE_MORE_ROOM_AND_TRY_AGAIN);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final InventoryUpdate ui = new InventoryUpdate();
|
final InventoryUpdate ui = new InventoryUpdate();
|
||||||
|
|
||||||
// Destroy ingredients.
|
// Destroy ingredients.
|
||||||
|
@@ -19,11 +19,14 @@ package com.l2jmobius.gameserver.network.clientpackets.alchemy;
|
|||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
import com.l2jmobius.commons.util.Rnd;
|
import com.l2jmobius.commons.util.Rnd;
|
||||||
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
||||||
|
import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||||
import com.l2jmobius.gameserver.enums.Race;
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
||||||
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
|
||||||
|
import com.l2jmobius.gameserver.model.items.L2Item;
|
||||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -68,26 +71,26 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
|
|
||||||
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isDead())
|
else if (player.isDead())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isMovementDisabled())
|
else if (player.isMovementDisabled())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,10 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Calculate success and failure count.
|
// Calculate success and failure count.
|
||||||
|
final L2Item successItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionSuccess().getId());
|
||||||
|
final L2Item failureItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionFailure().getId());
|
||||||
|
int totalWeight = 0;
|
||||||
|
int totalslots = (successItemTemplate.isStackable() ? 1 : 0) + (failureItemTemplate.isStackable() ? 1 : 0);
|
||||||
int successCount = 0;
|
int successCount = 0;
|
||||||
int failureCount = 0;
|
int failureCount = 0;
|
||||||
for (int i = 0; i < _craftTimes; i++)
|
for (int i = 0; i < _craftTimes; i++)
|
||||||
@@ -139,23 +146,37 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
if (Rnd.get(100) < baseChance)
|
if (Rnd.get(100) < baseChance)
|
||||||
{
|
{
|
||||||
successCount++;
|
successCount++;
|
||||||
|
totalWeight += successItemTemplate.getWeight();
|
||||||
|
totalslots += successItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
failureCount++;
|
failureCount++;
|
||||||
|
totalWeight += failureItemTemplate.getWeight();
|
||||||
|
totalslots += failureItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if player has enough ingredients.
|
||||||
for (ItemHolder ingredient : data.getIngredients())
|
for (ItemHolder ingredient : data.getIngredients())
|
||||||
{
|
{
|
||||||
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weight and capacity check.
|
||||||
|
final PcInventory inventory = player.getInventory();
|
||||||
|
if (!inventory.validateWeight(totalWeight) || ((totalslots > 0) && !inventory.validateCapacity(totalslots)))
|
||||||
|
{
|
||||||
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.THERE_IS_NOT_ENOUGH_INVENTORY_SPACE_PLEASE_MAKE_MORE_ROOM_AND_TRY_AGAIN);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final InventoryUpdate ui = new InventoryUpdate();
|
final InventoryUpdate ui = new InventoryUpdate();
|
||||||
|
|
||||||
// Destroy ingredients.
|
// Destroy ingredients.
|
||||||
|
@@ -19,11 +19,14 @@ package com.l2jmobius.gameserver.network.clientpackets.alchemy;
|
|||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
import com.l2jmobius.commons.util.Rnd;
|
import com.l2jmobius.commons.util.Rnd;
|
||||||
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
||||||
|
import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||||
import com.l2jmobius.gameserver.enums.Race;
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
||||||
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
|
||||||
|
import com.l2jmobius.gameserver.model.items.L2Item;
|
||||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -68,26 +71,26 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
|
|
||||||
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isDead())
|
else if (player.isDead())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isMovementDisabled())
|
else if (player.isMovementDisabled())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,10 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Calculate success and failure count.
|
// Calculate success and failure count.
|
||||||
|
final L2Item successItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionSuccess().getId());
|
||||||
|
final L2Item failureItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionFailure().getId());
|
||||||
|
int totalWeight = 0;
|
||||||
|
int totalslots = (successItemTemplate.isStackable() ? 1 : 0) + (failureItemTemplate.isStackable() ? 1 : 0);
|
||||||
int successCount = 0;
|
int successCount = 0;
|
||||||
int failureCount = 0;
|
int failureCount = 0;
|
||||||
for (int i = 0; i < _craftTimes; i++)
|
for (int i = 0; i < _craftTimes; i++)
|
||||||
@@ -139,23 +146,37 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
if (Rnd.get(100) < baseChance)
|
if (Rnd.get(100) < baseChance)
|
||||||
{
|
{
|
||||||
successCount++;
|
successCount++;
|
||||||
|
totalWeight += successItemTemplate.getWeight();
|
||||||
|
totalslots += successItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
failureCount++;
|
failureCount++;
|
||||||
|
totalWeight += failureItemTemplate.getWeight();
|
||||||
|
totalslots += failureItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if player has enough ingredients.
|
||||||
for (ItemHolder ingredient : data.getIngredients())
|
for (ItemHolder ingredient : data.getIngredients())
|
||||||
{
|
{
|
||||||
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weight and capacity check.
|
||||||
|
final PcInventory inventory = player.getInventory();
|
||||||
|
if (!inventory.validateWeight(totalWeight) || ((totalslots > 0) && !inventory.validateCapacity(totalslots)))
|
||||||
|
{
|
||||||
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.THERE_IS_NOT_ENOUGH_INVENTORY_SPACE_PLEASE_MAKE_MORE_ROOM_AND_TRY_AGAIN);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final InventoryUpdate ui = new InventoryUpdate();
|
final InventoryUpdate ui = new InventoryUpdate();
|
||||||
|
|
||||||
// Destroy ingredients.
|
// Destroy ingredients.
|
||||||
|
@@ -19,11 +19,14 @@ package com.l2jmobius.gameserver.network.clientpackets.alchemy;
|
|||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
import com.l2jmobius.commons.util.Rnd;
|
import com.l2jmobius.commons.util.Rnd;
|
||||||
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
||||||
|
import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||||
import com.l2jmobius.gameserver.enums.Race;
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
||||||
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
|
||||||
|
import com.l2jmobius.gameserver.model.items.L2Item;
|
||||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -68,26 +71,26 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
|
|
||||||
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isDead())
|
else if (player.isDead())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isMovementDisabled())
|
else if (player.isMovementDisabled())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,10 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Calculate success and failure count.
|
// Calculate success and failure count.
|
||||||
|
final L2Item successItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionSuccess().getId());
|
||||||
|
final L2Item failureItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionFailure().getId());
|
||||||
|
int totalWeight = 0;
|
||||||
|
int totalslots = (successItemTemplate.isStackable() ? 1 : 0) + (failureItemTemplate.isStackable() ? 1 : 0);
|
||||||
int successCount = 0;
|
int successCount = 0;
|
||||||
int failureCount = 0;
|
int failureCount = 0;
|
||||||
for (int i = 0; i < _craftTimes; i++)
|
for (int i = 0; i < _craftTimes; i++)
|
||||||
@@ -139,23 +146,37 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
if (Rnd.get(100) < baseChance)
|
if (Rnd.get(100) < baseChance)
|
||||||
{
|
{
|
||||||
successCount++;
|
successCount++;
|
||||||
|
totalWeight += successItemTemplate.getWeight();
|
||||||
|
totalslots += successItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
failureCount++;
|
failureCount++;
|
||||||
|
totalWeight += failureItemTemplate.getWeight();
|
||||||
|
totalslots += failureItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if player has enough ingredients.
|
||||||
for (ItemHolder ingredient : data.getIngredients())
|
for (ItemHolder ingredient : data.getIngredients())
|
||||||
{
|
{
|
||||||
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weight and capacity check.
|
||||||
|
final PcInventory inventory = player.getInventory();
|
||||||
|
if (!inventory.validateWeight(totalWeight) || ((totalslots > 0) && !inventory.validateCapacity(totalslots)))
|
||||||
|
{
|
||||||
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.THERE_IS_NOT_ENOUGH_INVENTORY_SPACE_PLEASE_MAKE_MORE_ROOM_AND_TRY_AGAIN);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final InventoryUpdate ui = new InventoryUpdate();
|
final InventoryUpdate ui = new InventoryUpdate();
|
||||||
|
|
||||||
// Destroy ingredients.
|
// Destroy ingredients.
|
||||||
|
@@ -19,11 +19,14 @@ package com.l2jmobius.gameserver.network.clientpackets.alchemy;
|
|||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
import com.l2jmobius.commons.util.Rnd;
|
import com.l2jmobius.commons.util.Rnd;
|
||||||
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
||||||
|
import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||||
import com.l2jmobius.gameserver.enums.Race;
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
||||||
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
|
||||||
|
import com.l2jmobius.gameserver.model.items.L2Item;
|
||||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -68,26 +71,26 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
|
|
||||||
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isDead())
|
else if (player.isDead())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isMovementDisabled())
|
else if (player.isMovementDisabled())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,10 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Calculate success and failure count.
|
// Calculate success and failure count.
|
||||||
|
final L2Item successItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionSuccess().getId());
|
||||||
|
final L2Item failureItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionFailure().getId());
|
||||||
|
int totalWeight = 0;
|
||||||
|
int totalslots = (successItemTemplate.isStackable() ? 1 : 0) + (failureItemTemplate.isStackable() ? 1 : 0);
|
||||||
int successCount = 0;
|
int successCount = 0;
|
||||||
int failureCount = 0;
|
int failureCount = 0;
|
||||||
for (int i = 0; i < _craftTimes; i++)
|
for (int i = 0; i < _craftTimes; i++)
|
||||||
@@ -139,23 +146,37 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
if (Rnd.get(100) < baseChance)
|
if (Rnd.get(100) < baseChance)
|
||||||
{
|
{
|
||||||
successCount++;
|
successCount++;
|
||||||
|
totalWeight += successItemTemplate.getWeight();
|
||||||
|
totalslots += successItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
failureCount++;
|
failureCount++;
|
||||||
|
totalWeight += failureItemTemplate.getWeight();
|
||||||
|
totalslots += failureItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if player has enough ingredients.
|
||||||
for (ItemHolder ingredient : data.getIngredients())
|
for (ItemHolder ingredient : data.getIngredients())
|
||||||
{
|
{
|
||||||
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weight and capacity check.
|
||||||
|
final PcInventory inventory = player.getInventory();
|
||||||
|
if (!inventory.validateWeight(totalWeight) || ((totalslots > 0) && !inventory.validateCapacity(totalslots)))
|
||||||
|
{
|
||||||
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.THERE_IS_NOT_ENOUGH_INVENTORY_SPACE_PLEASE_MAKE_MORE_ROOM_AND_TRY_AGAIN);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final InventoryUpdate ui = new InventoryUpdate();
|
final InventoryUpdate ui = new InventoryUpdate();
|
||||||
|
|
||||||
// Destroy ingredients.
|
// Destroy ingredients.
|
||||||
|
@@ -19,11 +19,14 @@ package com.l2jmobius.gameserver.network.clientpackets.alchemy;
|
|||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
import com.l2jmobius.commons.util.Rnd;
|
import com.l2jmobius.commons.util.Rnd;
|
||||||
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
import com.l2jmobius.gameserver.data.xml.impl.AlchemyData;
|
||||||
|
import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||||
import com.l2jmobius.gameserver.enums.Race;
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
import com.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
||||||
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
|
||||||
|
import com.l2jmobius.gameserver.model.items.L2Item;
|
||||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -68,26 +71,26 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
|
|
||||||
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
else if (player.isInStoreMode() || (player.getPrivateStoreType() != PrivateStoreType.NONE))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isDead())
|
else if (player.isDead())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.isMovementDisabled())
|
else if (player.isMovementDisabled())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,10 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Calculate success and failure count.
|
// Calculate success and failure count.
|
||||||
|
final L2Item successItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionSuccess().getId());
|
||||||
|
final L2Item failureItemTemplate = ItemTable.getInstance().getTemplate(data.getProductionFailure().getId());
|
||||||
|
int totalWeight = 0;
|
||||||
|
int totalslots = (successItemTemplate.isStackable() ? 1 : 0) + (failureItemTemplate.isStackable() ? 1 : 0);
|
||||||
int successCount = 0;
|
int successCount = 0;
|
||||||
int failureCount = 0;
|
int failureCount = 0;
|
||||||
for (int i = 0; i < _craftTimes; i++)
|
for (int i = 0; i < _craftTimes; i++)
|
||||||
@@ -139,23 +146,37 @@ public class RequestAlchemyConversion implements IClientIncomingPacket
|
|||||||
if (Rnd.get(100) < baseChance)
|
if (Rnd.get(100) < baseChance)
|
||||||
{
|
{
|
||||||
successCount++;
|
successCount++;
|
||||||
|
totalWeight += successItemTemplate.getWeight();
|
||||||
|
totalslots += successItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
failureCount++;
|
failureCount++;
|
||||||
|
totalWeight += failureItemTemplate.getWeight();
|
||||||
|
totalslots += failureItemTemplate.isStackable() ? 0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if player has enough ingredients.
|
||||||
for (ItemHolder ingredient : data.getIngredients())
|
for (ItemHolder ingredient : data.getIngredients())
|
||||||
{
|
{
|
||||||
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
if (player.getInventory().getInventoryItemCount(ingredient.getId(), -1) < (ingredient.getCount() * _craftTimes))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
|
||||||
player.sendPacket(new ExAlchemyConversion(0, 0));
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_INGREDIENTS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weight and capacity check.
|
||||||
|
final PcInventory inventory = player.getInventory();
|
||||||
|
if (!inventory.validateWeight(totalWeight) || ((totalslots > 0) && !inventory.validateCapacity(totalslots)))
|
||||||
|
{
|
||||||
|
player.sendPacket(new ExAlchemyConversion(0, 0));
|
||||||
|
player.sendPacket(SystemMessageId.THERE_IS_NOT_ENOUGH_INVENTORY_SPACE_PLEASE_MAKE_MORE_ROOM_AND_TRY_AGAIN);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final InventoryUpdate ui = new InventoryUpdate();
|
final InventoryUpdate ui = new InventoryUpdate();
|
||||||
|
|
||||||
// Destroy ingredients.
|
// Destroy ingredients.
|
||||||
|
Reference in New Issue
Block a user