Production enchant level should not exceed maximum enchant item group value.
This commit is contained in:
parent
bedb7061c2
commit
fc5abb312f
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.holders.MultisellEntryHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.MultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.enchant.EnchantItemGroup;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MultiSellList;
|
||||
|
||||
public final class MultisellData implements IXmlReader
|
||||
@ -117,7 +118,54 @@ public final class MultisellData implements IXmlReader
|
||||
final int id = parseInteger(d.getAttributes(), "id");
|
||||
final long count = parseLong(d.getAttributes(), "count");
|
||||
final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN);
|
||||
final byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0);
|
||||
|
||||
if (enchantmentLevel > 0)
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(id);
|
||||
if (item != null)
|
||||
{
|
||||
if (item.isWeapon())
|
||||
{
|
||||
if (item.isMagicWeapon())
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item.isArmor())
|
||||
{
|
||||
if (item.getBodyPart() == Item.SLOT_FULL_ARMOR)
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP");
|
||||
if (group != null)
|
||||
{
|
||||
enchantmentLevel = (byte) Math.min(enchantmentLevel, group.getMaximumEnchant());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel);
|
||||
|
||||
if (itemExists(product))
|
||||
|
@ -31,6 +31,7 @@ public final class EnchantItemGroup
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantItemGroup.class.getName());
|
||||
private final List<RangeChanceHolder> _chances = new ArrayList<>();
|
||||
private final String _name;
|
||||
private int _maximumEnchant = -1;
|
||||
|
||||
public EnchantItemGroup(String name)
|
||||
{
|
||||
@ -74,4 +75,23 @@ public final class EnchantItemGroup
|
||||
LOGGER.warning(getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level for current enchant item group.
|
||||
*/
|
||||
public int getMaximumEnchant()
|
||||
{
|
||||
if (_maximumEnchant == -1)
|
||||
{
|
||||
for (RangeChanceHolder holder : _chances)
|
||||
{
|
||||
if ((holder.getChance() > 0) && (holder.getMax() > _maximumEnchant))
|
||||
{
|
||||
_maximumEnchant = holder.getMax();
|
||||
}
|
||||
}
|
||||
_maximumEnchant++;
|
||||
}
|
||||
return _maximumEnchant;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user