Prevent flood from using items with enchant options.

This commit is contained in:
MobiusDevelopment 2022-02-05 02:28:24 +00:00
parent 90e0adc645
commit c4fba603b2
63 changed files with 294 additions and 84 deletions

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.cache.PaperdollCache;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1331,7 +1332,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1372,7 +1373,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1435,7 +1436,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.cache.PaperdollCache;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1337,7 +1338,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1378,7 +1379,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1441,7 +1442,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.cache.PaperdollCache;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1337,7 +1338,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1378,7 +1379,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1441,7 +1442,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.cache.PaperdollCache;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1337,7 +1338,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1378,7 +1379,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1441,7 +1442,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1380,7 +1381,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1445,7 +1446,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1543,7 +1544,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1462,7 +1463,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1527,7 +1528,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1625,7 +1626,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1462,7 +1463,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1527,7 +1528,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1625,7 +1626,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1456,7 +1457,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1521,7 +1522,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1619,7 +1620,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1438,7 +1439,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1503,7 +1504,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1601,7 +1602,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1438,7 +1439,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1503,7 +1504,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1601,7 +1602,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1449,7 +1450,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1514,7 +1515,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1612,7 +1613,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.cache.PaperdollCache;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1339,7 +1340,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1380,7 +1381,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1443,7 +1444,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.cache.PaperdollCache;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1339,7 +1340,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1380,7 +1381,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1443,7 +1444,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1382,7 +1383,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1447,7 +1448,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1545,7 +1546,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1464,7 +1465,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1529,7 +1530,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1627,7 +1628,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1464,7 +1465,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1529,7 +1530,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1627,7 +1628,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1458,7 +1459,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1523,7 +1524,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1621,7 +1622,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.cache.PaperdollCache;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1331,7 +1332,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1372,7 +1373,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1435,7 +1436,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1566,7 +1567,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1631,7 +1632,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1729,7 +1730,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1575,7 +1576,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1640,7 +1641,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1738,7 +1739,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;

View File

@ -92,6 +92,15 @@ public class EnchantItemOptionsData implements IXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _data.size() + " items and " + counter + " options.");
}
/**
* @param itemId
* @return if specified item id has available enchant effects.
*/
public boolean hasOptions(int itemId)
{
return _data.containsKey(itemId);
}
/**
* @param itemId
* @param enchantLevel

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.AgathionData;
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.PlayerCondOverride;
@ -1575,7 +1576,7 @@ public abstract class Inventory extends ItemContainer
if (old != null)
{
// Prevent flood from using items with skills.
if (old.getTemplate().hasSkills())
if (old.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(old.getId()))
{
checkEquipTask();
}
@ -1640,7 +1641,7 @@ public abstract class Inventory extends ItemContainer
if (item != null)
{
// Prevent flood from using items with skills.
if (item.getTemplate().hasSkills())
if (item.getTemplate().hasSkills() || EnchantItemOptionsData.getInstance().hasOptions(item.getId()))
{
checkEquipTask();
}
@ -1738,7 +1739,7 @@ public abstract class Inventory extends ItemContainer
getOwner().updateAbnormalVisualEffects();
getOwner().getActingPlayer().sendSkillList();
_skillItemTask = null;
}, 100);
}, 50);
}
}

View File

@ -229,7 +229,7 @@ public class GameClient extends ChannelInboundHandler<GameClient>
if (_player != null)
{
// Avoid flood from class change or using items with skills.
// Prevent flood from class change or using items with skills.
if ((_player.isChangingClass() || _player.isUsingSkillItem()) && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
return;