From 0f05f844a72e2ea1d66c9a50f82fd36c209311c9 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 12 May 2019 22:38:57 +0000 Subject: [PATCH] Improved MultisellData maximum enchant check. --- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- .../data/xml/impl/MultisellData.java | 45 +++++-------------- 12 files changed, 132 insertions(+), 408 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes. diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java index a505ef0c43..92cd7a255f 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/impl/MultisellData.java @@ -77,6 +77,15 @@ public final class MultisellData implements IXmlReader @Override public void parseDocument(Document doc, File f) { + final EnchantItemGroup magicWeaponGroup = EnchantItemGroupsData.getInstance().getItemGroup("MAGE_WEAPON_GROUP"); + final int magicWeaponGroupMax = magicWeaponGroup != null ? magicWeaponGroup.getMaximumEnchant() : 0; + final EnchantItemGroup weapongroup = EnchantItemGroupsData.getInstance().getItemGroup("FIGHTER_WEAPON_GROUP"); + final int weaponGroupMax = weapongroup != null ? weapongroup.getMaximumEnchant() : 0; + final EnchantItemGroup fullArmorGroup = EnchantItemGroupsData.getInstance().getItemGroup("FULL_ARMOR_GROUP"); + final int fullArmorGroupMax = fullArmorGroup != null ? fullArmorGroup.getMaximumEnchant() : 0; + final EnchantItemGroup armorGroup = EnchantItemGroupsData.getInstance().getItemGroup("ARMOR_GROUP"); + final int armorGroupMax = armorGroup != null ? armorGroup.getMaximumEnchant() : 0; + try { forEach(doc, "list", listNode -> @@ -119,7 +128,6 @@ public final class MultisellData implements IXmlReader final long count = parseLong(d.getAttributes(), "count"); final double chance = parseDouble(d.getAttributes(), "chance", Double.NaN); byte enchantmentLevel = parseByte(d.getAttributes(), "enchantmentLevel", (byte) 0); - if (enchantmentLevel > 0) { final Item item = ItemTable.getInstance().getTemplate(id); @@ -127,47 +135,16 @@ public final class MultisellData implements IXmlReader { 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.isMagicWeapon() ? magicWeaponGroupMax : weaponGroupMax); } 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()); - } - } + enchantmentLevel = (byte) Math.min(enchantmentLevel, item.getBodyPart() == Item.SLOT_FULL_ARMOR ? fullArmorGroupMax : armorGroupMax); } } } final ItemChanceHolder product = new ItemChanceHolder(id, chance, count, enchantmentLevel); - if (itemExists(product)) { // Check chance only of items that have set chance. Items without chance (NaN) are used for displaying purposes.