Fixed item enchanting.
This commit is contained in:
parent
eb883e13bb
commit
d769d4e79b
@ -29,7 +29,6 @@ import org.w3c.dom.Node;
|
|||||||
import org.l2jmobius.commons.util.IXmlReader;
|
import org.l2jmobius.commons.util.IXmlReader;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.item.enchant.EnchantScroll;
|
import org.l2jmobius.gameserver.model.item.enchant.EnchantScroll;
|
||||||
import org.l2jmobius.gameserver.model.item.enchant.EnchantSupportItem;
|
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,7 +38,6 @@ import org.l2jmobius.gameserver.model.item.instance.Item;
|
|||||||
public class EnchantItemData implements IXmlReader
|
public class EnchantItemData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, EnchantScroll> _scrolls = new HashMap<>();
|
private final Map<Integer, EnchantScroll> _scrolls = new HashMap<>();
|
||||||
private final Map<Integer, EnchantSupportItem> _supports = new HashMap<>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new enchant item data.
|
* Instantiates a new enchant item data.
|
||||||
@ -53,10 +51,8 @@ public class EnchantItemData implements IXmlReader
|
|||||||
public synchronized void load()
|
public synchronized void load()
|
||||||
{
|
{
|
||||||
_scrolls.clear();
|
_scrolls.clear();
|
||||||
_supports.clear();
|
|
||||||
parseDatapackFile("data/EnchantItemData.xml");
|
parseDatapackFile("data/EnchantItemData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _scrolls.size() + " enchant scrolls.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _scrolls.size() + " enchant scrolls.");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _supports.size() + " support items.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -102,30 +98,6 @@ public class EnchantItemData implements IXmlReader
|
|||||||
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Wrong enchant scroll item type: " + set.getString("id") + " defined in enchant data!");
|
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Wrong enchant scroll item type: " + set.getString("id") + " defined in enchant data!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ("support".equalsIgnoreCase(d.getNodeName()))
|
|
||||||
{
|
|
||||||
attrs = d.getAttributes();
|
|
||||||
set = new StatSet();
|
|
||||||
for (int i = 0; i < attrs.getLength(); i++)
|
|
||||||
{
|
|
||||||
att = attrs.item(i);
|
|
||||||
set.set(att.getNodeName(), att.getNodeValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
final EnchantSupportItem item = new EnchantSupportItem(set);
|
|
||||||
_supports.put(item.getId(), item);
|
|
||||||
}
|
|
||||||
catch (NullPointerException e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant support item: " + set.getString("id") + " defined in enchant data!");
|
|
||||||
}
|
|
||||||
catch (IllegalAccessError e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Wrong enchant support item type: " + set.getString("id") + " defined in enchant data!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -150,20 +122,6 @@ public class EnchantItemData implements IXmlReader
|
|||||||
return _scrolls.get(item.getId());
|
return _scrolls.get(item.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the support item.
|
|
||||||
* @param item the support item
|
|
||||||
* @return enchant template for support item
|
|
||||||
*/
|
|
||||||
public EnchantSupportItem getSupportItem(Item item)
|
|
||||||
{
|
|
||||||
if (item == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return _supports.get(item.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the single instance of EnchantItemData.
|
* Gets the single instance of EnchantItemData.
|
||||||
* @return single instance of EnchantItemData
|
* @return single instance of EnchantItemData
|
||||||
|
@ -664,8 +664,6 @@ public class Player extends Playable
|
|||||||
|
|
||||||
private boolean _isEnchanting = false;
|
private boolean _isEnchanting = false;
|
||||||
private int _activeEnchantItemId = ID_NONE;
|
private int _activeEnchantItemId = ID_NONE;
|
||||||
private int _activeEnchantSupportItemId = ID_NONE;
|
|
||||||
private int _activeEnchantAttrItemId = ID_NONE;
|
|
||||||
private long _activeEnchantTimestamp = 0;
|
private long _activeEnchantTimestamp = 0;
|
||||||
|
|
||||||
protected boolean _inventoryDisable = false;
|
protected boolean _inventoryDisable = false;
|
||||||
@ -2345,22 +2343,11 @@ public class Player extends Playable
|
|||||||
return getStat().getExp();
|
return getStat().getExp();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setActiveEnchantAttrItemId(int objectId)
|
|
||||||
{
|
|
||||||
_activeEnchantAttrItemId = objectId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getActiveEnchantAttrItemId()
|
|
||||||
{
|
|
||||||
return _activeEnchantAttrItemId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setActiveEnchantItemId(int objectId)
|
public void setActiveEnchantItemId(int objectId)
|
||||||
{
|
{
|
||||||
// If we don't have a Enchant Item, we are not enchanting.
|
// If we don't have a Enchant Item, we are not enchanting.
|
||||||
if (objectId == ID_NONE)
|
if (objectId == ID_NONE)
|
||||||
{
|
{
|
||||||
setActiveEnchantSupportItemId(ID_NONE);
|
|
||||||
setActiveEnchantTimestamp(0);
|
setActiveEnchantTimestamp(0);
|
||||||
setEnchanting(false);
|
setEnchanting(false);
|
||||||
}
|
}
|
||||||
@ -2372,16 +2359,6 @@ public class Player extends Playable
|
|||||||
return _activeEnchantItemId;
|
return _activeEnchantItemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setActiveEnchantSupportItemId(int objectId)
|
|
||||||
{
|
|
||||||
_activeEnchantSupportItemId = objectId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getActiveEnchantSupportItemId()
|
|
||||||
{
|
|
||||||
return _activeEnchantSupportItemId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getActiveEnchantTimestamp()
|
public long getActiveEnchantTimestamp()
|
||||||
{
|
{
|
||||||
return _activeEnchantTimestamp;
|
return _activeEnchantTimestamp;
|
||||||
@ -7855,7 +7832,7 @@ public class Player extends Playable
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((_activeEnchantItemId != ID_NONE) || (_activeEnchantAttrItemId != ID_NONE))
|
if (_activeEnchantItemId != ID_NONE)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -115,10 +115,9 @@ public abstract class AbstractEnchantItem
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param itemToEnchant the item to be enchanted
|
* @param itemToEnchant the item to be enchanted
|
||||||
* @param supportItem
|
|
||||||
* @return {@code true} if this support item can be used with the item to be enchanted, {@code false} otherwise
|
* @return {@code true} if this support item can be used with the item to be enchanted, {@code false} otherwise
|
||||||
*/
|
*/
|
||||||
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
|
public boolean isValid(Item itemToEnchant)
|
||||||
{
|
{
|
||||||
if (itemToEnchant == null)
|
if (itemToEnchant == null)
|
||||||
{
|
{
|
||||||
|
@ -90,31 +90,16 @@ public class EnchantScroll extends AbstractEnchantItem
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param itemToEnchant the item to be enchanted
|
* @param itemToEnchant the item to be enchanted
|
||||||
* @param supportItem the support item used when enchanting (can be null)
|
|
||||||
* @return {@code true} if this scroll can be used with the specified support item and the item to be enchanted, {@code false} otherwise
|
* @return {@code true} if this scroll can be used with the specified support item and the item to be enchanted, {@code false} otherwise
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
|
public boolean isValid(Item itemToEnchant)
|
||||||
{
|
{
|
||||||
if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
|
if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if ((supportItem != null))
|
|
||||||
{
|
|
||||||
if (_isBlessed)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (!supportItem.isValid(itemToEnchant, supportItem))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (supportItem.isWeapon() != isWeapon())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_items.isEmpty())
|
if (_items.isEmpty())
|
||||||
{
|
{
|
||||||
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
|
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
|
||||||
@ -130,7 +115,8 @@ public class EnchantScroll extends AbstractEnchantItem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.isValid(itemToEnchant, supportItem);
|
|
||||||
|
return super.isValid(itemToEnchant);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -160,12 +146,11 @@ public class EnchantScroll extends AbstractEnchantItem
|
|||||||
/**
|
/**
|
||||||
* @param player
|
* @param player
|
||||||
* @param enchantItem
|
* @param enchantItem
|
||||||
* @param supportItem
|
|
||||||
* @return the total chance for success rate of this scroll
|
* @return the total chance for success rate of this scroll
|
||||||
*/
|
*/
|
||||||
public EnchantResultType calculateSuccess(Player player, Item enchantItem, EnchantSupportItem supportItem)
|
public EnchantResultType calculateSuccess(Player player, Item enchantItem)
|
||||||
{
|
{
|
||||||
if (!isValid(enchantItem, supportItem))
|
if (!isValid(enchantItem))
|
||||||
{
|
{
|
||||||
return EnchantResultType.ERROR;
|
return EnchantResultType.ERROR;
|
||||||
}
|
}
|
||||||
@ -177,8 +162,7 @@ public class EnchantScroll extends AbstractEnchantItem
|
|||||||
}
|
}
|
||||||
|
|
||||||
final double bonusRate = getBonusRate();
|
final double bonusRate = getBonusRate();
|
||||||
final double supportBonusRate = (supportItem != null) ? supportItem.getBonusRate() : 0;
|
final double finalChance = Math.min(chance + bonusRate, 100);
|
||||||
final double finalChance = Math.min(chance + bonusRate + supportBonusRate, 100);
|
|
||||||
final double random = 100 * Rnd.nextDouble();
|
final double random = 100 * Rnd.nextDouble();
|
||||||
final boolean success = (random < finalChance);
|
final boolean success = (random < finalChance);
|
||||||
return success ? EnchantResultType.SUCCESS : EnchantResultType.FAILURE;
|
return success ? EnchantResultType.SUCCESS : EnchantResultType.FAILURE;
|
||||||
|
@ -892,8 +892,6 @@ public class Item extends WorldObject
|
|||||||
&& ((_itemTemplate.getType2() != ItemTemplate.TYPE2_MONEY) || (_itemTemplate.getType1() != ItemTemplate.TYPE1_SHIELD_ARMOR)) // not money, not shield
|
&& ((_itemTemplate.getType2() != ItemTemplate.TYPE2_MONEY) || (_itemTemplate.getType1() != ItemTemplate.TYPE1_SHIELD_ARMOR)) // not money, not shield
|
||||||
&& (!player.hasSummon() || (getObjectId() != player.getSummon().getControlObjectId())) // Not Control item of currently summoned pet
|
&& (!player.hasSummon() || (getObjectId() != player.getSummon().getControlObjectId())) // Not Control item of currently summoned pet
|
||||||
&& (player.getActiveEnchantItemId() != getObjectId()) // Not momentarily used enchant scroll
|
&& (player.getActiveEnchantItemId() != getObjectId()) // Not momentarily used enchant scroll
|
||||||
&& (player.getActiveEnchantSupportItemId() != getObjectId()) // Not momentarily used enchant support item
|
|
||||||
&& (player.getActiveEnchantAttrItemId() != getObjectId()) // Not momentarily used enchant attribute item
|
|
||||||
&& (allowAdena || (_itemId != ADENA_ID)) // Not Adena
|
&& (allowAdena || (_itemId != ADENA_ID)) // Not Adena
|
||||||
&& ((player.getCurrentSkill() == null) || (player.getCurrentSkill().getSkill().getItemConsumeId() != _itemId)) && (!player.isCastingSimultaneouslyNow() || (player.getLastSimultaneousSkillCast() == null) || (player.getLastSimultaneousSkillCast().getItemConsumeId() != _itemId)) && (allowNonTradeable || (isTradeable() && (!((_itemTemplate.getItemType() == EtcItemType.PET_COLLAR) && player.havePetInvItems())))));
|
&& ((player.getCurrentSkill() == null) || (player.getCurrentSkill().getSkill().getItemConsumeId() != _itemId)) && (!player.isCastingSimultaneouslyNow() || (player.getLastSimultaneousSkillCast() == null) || (player.getLastSimultaneousSkillCast().getItemConsumeId() != _itemId)) && (allowNonTradeable || (isTradeable() && (!((_itemTemplate.getItemType() == EtcItemType.PET_COLLAR) && player.havePetInvItems())))));
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
import org.l2jmobius.gameserver.model.item.enchant.EnchantResultType;
|
import org.l2jmobius.gameserver.model.item.enchant.EnchantResultType;
|
||||||
import org.l2jmobius.gameserver.model.item.enchant.EnchantScroll;
|
import org.l2jmobius.gameserver.model.item.enchant.EnchantScroll;
|
||||||
import org.l2jmobius.gameserver.model.item.enchant.EnchantSupportItem;
|
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.CommonSkill;
|
import org.l2jmobius.gameserver.model.skill.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
@ -44,18 +43,22 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
protected static final Logger LOGGER_ENCHANT = Logger.getLogger("enchant.items");
|
protected static final Logger LOGGER_ENCHANT = Logger.getLogger("enchant.items");
|
||||||
|
|
||||||
private int _objectId;
|
private int _objectId;
|
||||||
private int _supportId;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(ReadablePacket packet)
|
public void read(ReadablePacket packet)
|
||||||
{
|
{
|
||||||
_objectId = packet.readInt();
|
_objectId = packet.readInt();
|
||||||
_supportId = packet.readInt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(GameClient client)
|
public void run(GameClient client)
|
||||||
{
|
{
|
||||||
|
// TODO: canEnchantItem
|
||||||
|
if (!client.getFloodProtectors().canPerformTransaction())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Player player = client.getPlayer();
|
final Player player = client.getPlayer();
|
||||||
if ((player == null) || (_objectId == 0))
|
if ((player == null) || (_objectId == 0))
|
||||||
{
|
{
|
||||||
@ -77,7 +80,6 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
|
|
||||||
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
||||||
Item scroll = player.getInventory().getItemByObjectId(player.getActiveEnchantItemId());
|
Item scroll = player.getInventory().getItemByObjectId(player.getActiveEnchantItemId());
|
||||||
Item support = player.getInventory().getItemByObjectId(player.getActiveEnchantSupportItemId());
|
|
||||||
if ((item == null) || (scroll == null))
|
if ((item == null) || (scroll == null))
|
||||||
{
|
{
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
player.setActiveEnchantItemId(Player.ID_NONE);
|
||||||
@ -93,33 +95,11 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// template for support item, if exist
|
|
||||||
EnchantSupportItem supportTemplate = null;
|
|
||||||
if (support != null)
|
|
||||||
{
|
|
||||||
if (support.getObjectId() != _supportId)
|
|
||||||
{
|
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
supportTemplate = EnchantItemData.getInstance().getSupportItem(support);
|
|
||||||
}
|
|
||||||
|
|
||||||
// first validation check - also over enchant check
|
// first validation check - also over enchant check
|
||||||
if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel())))
|
if (!scrollTemplate.isValid(item) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel())))
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
player.setActiveEnchantItemId(Player.ID_NONE);
|
||||||
player.sendPacket(new EnchantResult(2, 0, 0));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// fast auto-enchant cheat check
|
|
||||||
if ((player.getActiveEnchantTimestamp() == 0) || ((System.currentTimeMillis() - player.getActiveEnchantTimestamp()) < 2000))
|
|
||||||
{
|
|
||||||
Util.handleIllegalPlayerAction(player, player + " use autoenchant program ", Config.DEFAULT_PUNISH);
|
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
|
||||||
player.sendPacket(new EnchantResult(2, 0, 0));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,24 +110,9 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
||||||
Util.handleIllegalPlayerAction(player, player + " tried to enchant with a scroll he doesn't have", Config.DEFAULT_PUNISH);
|
Util.handleIllegalPlayerAction(player, player + " tried to enchant with a scroll he doesn't have", Config.DEFAULT_PUNISH);
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
player.setActiveEnchantItemId(Player.ID_NONE);
|
||||||
player.sendPacket(new EnchantResult(2, 0, 0));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// attempting to destroy support if exist
|
|
||||||
if (support != null)
|
|
||||||
{
|
|
||||||
support = player.getInventory().destroyItem("Enchant", support.getObjectId(), 1, player, item);
|
|
||||||
if (support == null)
|
|
||||||
{
|
|
||||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
|
||||||
Util.handleIllegalPlayerAction(player, player + " tried to enchant with a support item he doesn't have", Config.DEFAULT_PUNISH);
|
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
|
||||||
player.sendPacket(new EnchantResult(2, 0, 0));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final InventoryUpdate iu = new InventoryUpdate();
|
final InventoryUpdate iu = new InventoryUpdate();
|
||||||
synchronized (item)
|
synchronized (item)
|
||||||
{
|
{
|
||||||
@ -156,22 +121,35 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
player.setActiveEnchantItemId(Player.ID_NONE);
|
||||||
player.sendPacket(new EnchantResult(2, 0, 0));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final EnchantResultType resultType = scrollTemplate.calculateSuccess(player, item, supportTemplate);
|
final EnchantResultType resultType = scrollTemplate.calculateSuccess(player, item);
|
||||||
switch (resultType)
|
switch (resultType)
|
||||||
{
|
{
|
||||||
case ERROR:
|
case ERROR:
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
player.setActiveEnchantItemId(Player.ID_NONE);
|
||||||
player.sendPacket(new EnchantResult(2, 0, 0));
|
player.sendPacket(new EnchantResult(0));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SUCCESS:
|
case SUCCESS:
|
||||||
{
|
{
|
||||||
|
if (item.getEnchantLevel() == 0)
|
||||||
|
{
|
||||||
|
final SystemMessage sm = new SystemMessage(SystemMessageId.YOUR_S1_HAS_BEEN_SUCCESSFULLY_ENCHANTED);
|
||||||
|
sm.addItemName(item.getId());
|
||||||
|
player.sendPacket(sm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
final SystemMessage sm = new SystemMessage(SystemMessageId.YOUR_S1_S2_HAS_BEEN_SUCCESSFULLY_ENCHANTED);
|
||||||
|
sm.addInt(item.getEnchantLevel());
|
||||||
|
sm.addItemName(item.getId());
|
||||||
|
player.sendPacket(sm);
|
||||||
|
}
|
||||||
|
|
||||||
Skill enchant4Skill = null;
|
Skill enchant4Skill = null;
|
||||||
final ItemTemplate it = item.getTemplate();
|
final ItemTemplate it = item.getTemplate();
|
||||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||||
@ -180,28 +158,19 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
}
|
}
|
||||||
player.sendPacket(new EnchantResult(0, 0, 0));
|
|
||||||
|
player.sendPacket(new EnchantResult(item.getEnchantLevel()));
|
||||||
|
|
||||||
if (Config.LOG_ITEM_ENCHANTS)
|
if (Config.LOG_ITEM_ENCHANTS)
|
||||||
{
|
{
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
if (item.getEnchantLevel() > 0)
|
if (item.getEnchantLevel() > 0)
|
||||||
{
|
{
|
||||||
if (support == null)
|
LOGGER_ENCHANT.info(sb.append("Success, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Success, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Success, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (support == null)
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Success, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOGGER_ENCHANT.info(sb.append("Success, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
LOGGER_ENCHANT.info(sb.append("Success, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,32 +206,35 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
}
|
}
|
||||||
case FAILURE:
|
case FAILURE:
|
||||||
{
|
{
|
||||||
|
if (item.getEnchantLevel() > 0)
|
||||||
|
{
|
||||||
|
final SystemMessage sm = new SystemMessage(SystemMessageId.THE_ENCHANTMENT_HAS_FAILED_YOUR_S1_S2_HAS_BEEN_CRYSTALLIZED);
|
||||||
|
sm.addInt(item.getEnchantLevel());
|
||||||
|
sm.addItemName(item.getId());
|
||||||
|
player.sendPacket(sm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
final SystemMessage sm = new SystemMessage(SystemMessageId.THE_ENCHANTMENT_HAS_FAILED_YOUR_S1_HAS_BEEN_CRYSTALLIZED);
|
||||||
|
sm.addItemName(item.getId());
|
||||||
|
player.sendPacket(sm);
|
||||||
|
}
|
||||||
|
|
||||||
if (scrollTemplate.isSafe())
|
if (scrollTemplate.isSafe())
|
||||||
{
|
{
|
||||||
// safe enchant - remain old value
|
// safe enchant - remain old value
|
||||||
player.sendPacket(SystemMessageId.ENCHANT_FAILED_THE_ENCHANT_LEVEL_FOR_THE_CORRESPONDING_ITEM_WILL_BE_EXACTLY_RETAINED);
|
player.sendPacket(SystemMessageId.ENCHANT_FAILED_THE_ENCHANT_LEVEL_FOR_THE_CORRESPONDING_ITEM_WILL_BE_EXACTLY_RETAINED);
|
||||||
player.sendPacket(new EnchantResult(5, 0, 0));
|
player.sendPacket(new EnchantResult(0));
|
||||||
if (Config.LOG_ITEM_ENCHANTS)
|
if (Config.LOG_ITEM_ENCHANTS)
|
||||||
{
|
{
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
if (item.getEnchantLevel() > 0)
|
if (item.getEnchantLevel() > 0)
|
||||||
{
|
{
|
||||||
if (support == null)
|
LOGGER_ENCHANT.info(sb.append("Safe Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Safe Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Safe Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (support == null)
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Safe Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOGGER_ENCHANT.info(sb.append("Safe Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
LOGGER_ENCHANT.info(sb.append("Safe Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -300,28 +272,17 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
|
|
||||||
item.setEnchantLevel(0);
|
item.setEnchantLevel(0);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
player.sendPacket(new EnchantResult(3, 0, 0));
|
player.sendPacket(new EnchantResult(0));
|
||||||
if (Config.LOG_ITEM_ENCHANTS)
|
if (Config.LOG_ITEM_ENCHANTS)
|
||||||
{
|
{
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
if (item.getEnchantLevel() > 0)
|
if (item.getEnchantLevel() > 0)
|
||||||
{
|
{
|
||||||
if (support == null)
|
LOGGER_ENCHANT.info(sb.append("Blessed Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Blessed Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Blessed Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (support == null)
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Blessed Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOGGER_ENCHANT.info(sb.append("Blessed Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
LOGGER_ENCHANT.info(sb.append("Blessed Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -333,28 +294,17 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
// unable to destroy item, cheater ?
|
// unable to destroy item, cheater ?
|
||||||
Util.handleIllegalPlayerAction(player, "Unable to delete item on enchant failure from " + player + ", possible cheater !", Config.DEFAULT_PUNISH);
|
Util.handleIllegalPlayerAction(player, "Unable to delete item on enchant failure from " + player + ", possible cheater !", Config.DEFAULT_PUNISH);
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
player.setActiveEnchantItemId(Player.ID_NONE);
|
||||||
player.sendPacket(new EnchantResult(2, 0, 0));
|
player.sendPacket(new EnchantResult(0));
|
||||||
if (Config.LOG_ITEM_ENCHANTS)
|
if (Config.LOG_ITEM_ENCHANTS)
|
||||||
{
|
{
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
if (item.getEnchantLevel() > 0)
|
if (item.getEnchantLevel() > 0)
|
||||||
{
|
{
|
||||||
if (support == null)
|
LOGGER_ENCHANT.info(sb.append("Unable to destroy, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Unable to destroy, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Unable to destroy, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (support == null)
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Unable to destroy, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOGGER_ENCHANT.info(sb.append("Unable to destroy, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
LOGGER_ENCHANT.info(sb.append("Unable to destroy, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -373,11 +323,11 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
sm.addItemName(crystalId);
|
sm.addItemName(crystalId);
|
||||||
sm.addInt(count);
|
sm.addInt(count);
|
||||||
player.sendPacket(sm);
|
player.sendPacket(sm);
|
||||||
player.sendPacket(new EnchantResult(1, crystalId, count));
|
player.sendPacket(new EnchantResult(0));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.sendPacket(new EnchantResult(4, 0, 0));
|
player.sendPacket(new EnchantResult(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.LOG_ITEM_ENCHANTS)
|
if (Config.LOG_ITEM_ENCHANTS)
|
||||||
@ -385,22 +335,11 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
if (item.getEnchantLevel() > 0)
|
if (item.getEnchantLevel() > 0)
|
||||||
{
|
{
|
||||||
if (support == null)
|
LOGGER_ENCHANT.info(sb.append("Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", +").append(item.getEnchantLevel()).append(" ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (support == null)
|
|
||||||
{
|
|
||||||
LOGGER_ENCHANT.info(sb.append("Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOGGER_ENCHANT.info(sb.append("Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("], ").append(support.getName()).append("(").append(support.getCount()).append(") [").append(support.getObjectId()).append("]").toString());
|
LOGGER_ENCHANT.info(sb.append("Fail, Character:").append(player.getName()).append(" [").append(player.getObjectId()).append("] Account:").append(player.getAccountName()).append(" IP:").append(player.getIPAddress()).append(", ").append(item.getName()).append("(").append(item.getCount()).append(") [").append(item.getObjectId()).append("], ").append(scroll.getName()).append("(").append(scroll.getCount()).append(") [").append(scroll.getObjectId()).append("]").toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -430,18 +369,6 @@ public class RequestEnchantItem implements ClientPacket
|
|||||||
iu.addModifiedItem(item);
|
iu.addModifiedItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (support != null)
|
|
||||||
{
|
|
||||||
if (support.getCount() == 0)
|
|
||||||
{
|
|
||||||
iu.addRemovedItem(support);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iu.addModifiedItem(support);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
player.sendPacket(iu);
|
player.sendPacket(iu);
|
||||||
player.broadcastUserInfo();
|
player.broadcastUserInfo();
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
player.setActiveEnchantItemId(Player.ID_NONE);
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of the L2J Mobius project.
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package org.l2jmobius.gameserver.network.clientpackets;
|
|
||||||
|
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.EnchantResult;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author KenM
|
|
||||||
*/
|
|
||||||
public class RequestExCancelEnchantItem implements ClientPacket
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run(GameClient client)
|
|
||||||
{
|
|
||||||
final Player player = client.getPlayer();
|
|
||||||
if (player != null)
|
|
||||||
{
|
|
||||||
player.sendPacket(new EnchantResult(2, 0, 0));
|
|
||||||
player.setActiveEnchantItemId(Player.ID_NONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -55,7 +55,7 @@ public class RequestRestart implements ClientPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((player.getActiveEnchantItemId() != Player.ID_NONE) || (player.getActiveEnchantAttrItemId() != Player.ID_NONE))
|
if (player.getActiveEnchantItemId() != Player.ID_NONE)
|
||||||
{
|
{
|
||||||
player.sendPacket(RestartResponse.valueOf(false));
|
player.sendPacket(RestartResponse.valueOf(false));
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
@ -21,14 +21,10 @@ import org.l2jmobius.gameserver.network.ServerPackets;
|
|||||||
public class EnchantResult extends ServerPacket
|
public class EnchantResult extends ServerPacket
|
||||||
{
|
{
|
||||||
private final int _result;
|
private final int _result;
|
||||||
private final int _crystal;
|
|
||||||
private final int _count;
|
|
||||||
|
|
||||||
public EnchantResult(int result, int crystal, int count)
|
public EnchantResult(int result)
|
||||||
{
|
{
|
||||||
_result = result;
|
_result = result;
|
||||||
_crystal = crystal;
|
|
||||||
_count = count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -36,7 +32,5 @@ public class EnchantResult extends ServerPacket
|
|||||||
{
|
{
|
||||||
ServerPackets.ENCHANT_RESULT.writeId(this);
|
ServerPackets.ENCHANT_RESULT.writeId(this);
|
||||||
writeInt(_result);
|
writeInt(_result);
|
||||||
writeInt(_crystal);
|
|
||||||
writeInt(_count);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -104,6 +104,7 @@ What is done
|
|||||||
-Removed all non existing skill enchants.
|
-Removed all non existing skill enchants.
|
||||||
-Fixed skill enchanting.
|
-Fixed skill enchanting.
|
||||||
-Adjusted MagicSkillUse packet.
|
-Adjusted MagicSkillUse packet.
|
||||||
|
-Fixed item enchanting.
|
||||||
|
|
||||||
TODO: Important (project unusable due to the following)
|
TODO: Important (project unusable due to the following)
|
||||||
-Adjust all skills according to Interlude description.
|
-Adjust all skills according to Interlude description.
|
||||||
|
Loading…
Reference in New Issue
Block a user