diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index f217830d8e..d06bebe520 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_02.5_Underground/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_02.5_Underground/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_02.5_Underground/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index f217830d8e..d06bebe520 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_03.0_Helios/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_03.0_Helios/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_03.0_Helios/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index f217830d8e..d06bebe520 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_10.1_MasterClass/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_10.1_MasterClass/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 21e755c6bc..9bb5e9b2ac 100644
--- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -148,7 +138,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -156,8 +146,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -173,13 +163,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_CT_0_Interlude/dist/game/data/xsd/enchantItemData.xsd b/L2J_Mobius_CT_0_Interlude/dist/game/data/xsd/enchantItemData.xsd
index 2c75d532fe..f5f3a65827 100644
--- a/L2J_Mobius_CT_0_Interlude/dist/game/data/xsd/enchantItemData.xsd
+++ b/L2J_Mobius_CT_0_Interlude/dist/game/data/xsd/enchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index ff91e53163..1b4c433c0c 100644
--- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -88,7 +88,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 6291fcd3dc..2d9fd1e0c1 100644
--- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,9 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.item.type.EtcItemType;
import org.l2jmobius.gameserver.model.item.type.ItemType;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -38,7 +38,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isBlessed;
private final boolean _isSafe;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -73,30 +73,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isSafe;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -107,7 +96,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -126,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -134,8 +123,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -151,18 +140,20 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
- LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
+ LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
- LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
+ LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
return -1;
}
+
return group.getChance(enchantItem.getEnchantLevel());
}
diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/xsd/enchantItemData.xsd b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/xsd/enchantItemData.xsd
index b6acd7b648..08ebe20c9a 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/xsd/enchantItemData.xsd
+++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/xsd/enchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index ff91e53163..1b4c433c0c 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -88,7 +88,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 6291fcd3dc..2d9fd1e0c1 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,9 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.item.type.EtcItemType;
import org.l2jmobius.gameserver.model.item.type.ItemType;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -38,7 +38,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isBlessed;
private final boolean _isSafe;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -73,30 +73,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isSafe;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -107,7 +96,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -126,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -134,8 +123,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -151,18 +140,20 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
- LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
+ LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
- LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
+ LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
return -1;
}
+
return group.getChance(enchantItem.getEnchantLevel());
}
diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/xsd/enchantItemData.xsd b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/xsd/enchantItemData.xsd
index b6acd7b648..08ebe20c9a 100644
--- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/xsd/enchantItemData.xsd
+++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/xsd/enchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index ff91e53163..1b4c433c0c 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -88,7 +88,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index 6291fcd3dc..2d9fd1e0c1 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,9 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.item.type.EtcItemType;
import org.l2jmobius.gameserver.model.item.type.ItemType;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -38,7 +38,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isBlessed;
private final boolean _isSafe;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -73,30 +73,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isSafe;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -107,7 +96,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -126,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -134,8 +123,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -151,18 +140,20 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
- LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
+ LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
- LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
+ LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
return -1;
}
+
return group.getChance(enchantItem.getEnchantLevel());
}
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/EnchantItemData.xsd
index b28f355a4d..46d3ce7810 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ae3e0ac5f3..b60805edcf 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/EnchantItemData.xsd
index b28f355a4d..46d3ce7810 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ae3e0ac5f3..b60805edcf 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/EnchantItemData.xsd
index b28f355a4d..46d3ce7810 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ae3e0ac5f3..b60805edcf 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/EnchantItemData.xsd
index b28f355a4d..46d3ce7810 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ae3e0ac5f3..b60805edcf 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/EnchantItemData.xsd
index b28f355a4d..46d3ce7810 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ae3e0ac5f3..b60805edcf 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/EnchantItemData.xsd
index b28f355a4d..46d3ce7810 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ae3e0ac5f3..b60805edcf 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/EnchantItemData.xsd
index bf0716389d..59302ac756 100644
--- a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ae3e0ac5f3..b60805edcf 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -41,7 +42,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -91,30 +92,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isGiant;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -125,7 +115,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -152,7 +142,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
{
@@ -160,8 +150,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -177,13 +167,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/EnchantItemData.xsd
index b28f355a4d..46d3ce7810 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ff029c9ae0..b9fdc6c282 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -42,7 +43,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isGiant;
private final boolean _isCursed;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -98,30 +99,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isCursed;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -132,7 +122,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -159,7 +149,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
if (isActionBlessed() && itemToEnchant.isWeapon() && (itemToEnchant.getTemplate().getCrystalType() == getGrade()))
{
@@ -171,8 +161,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -188,13 +178,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/EnchantItemData.xsd
index bd7d3d736b..3a7d417025 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ff029c9ae0..b9fdc6c282 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -42,7 +43,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isGiant;
private final boolean _isCursed;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -98,30 +99,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isCursed;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -132,7 +122,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -159,7 +149,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
if (isActionBlessed() && itemToEnchant.isWeapon() && (itemToEnchant.getTemplate().getCrystalType() == getGrade()))
{
@@ -171,8 +161,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -188,13 +178,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/xsd/EnchantItemData.xsd
index bd7d3d736b..3a7d417025 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ff029c9ae0..b9fdc6c282 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -42,7 +43,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isGiant;
private final boolean _isCursed;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -98,30 +99,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isCursed;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -132,7 +122,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -159,7 +149,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
if (isActionBlessed() && itemToEnchant.isWeapon() && (itemToEnchant.getTemplate().getCrystalType() == getGrade()))
{
@@ -171,8 +161,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -188,13 +178,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/EnchantItemData.xsd b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/EnchantItemData.xsd
index bd7d3d736b..3a7d417025 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/EnchantItemData.xsd
+++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/EnchantItemData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
index 0fee1f44b5..788777b1f9 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/EnchantItemData.java
@@ -90,7 +90,7 @@ public class EnchantItemData implements IXmlReader
{
if ("item".equalsIgnoreCase(cd.getNodeName()))
{
- item.addItem(parseInteger(cd.getAttributes(), "id"));
+ item.addItem(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "altScrollGroupId", -1));
}
}
_scrolls.put(item.getId(), item);
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
index ff029c9ae0..b9fdc6c282 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/enchant/EnchantScroll.java
@@ -16,8 +16,9 @@
*/
package org.l2jmobius.gameserver.model.item.enchant;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
@@ -31,7 +32,7 @@ import org.l2jmobius.gameserver.model.item.type.ItemType;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
- * @author UnAfraid
+ * @author UnAfraid, Mobius
*/
public class EnchantScroll extends AbstractEnchantItem
{
@@ -42,7 +43,7 @@ public class EnchantScroll extends AbstractEnchantItem
private final boolean _isGiant;
private final boolean _isCursed;
private final int _scrollGroupId;
- private Set _items;
+ private final Map _items = new HashMap<>();
public EnchantScroll(StatSet set)
{
@@ -98,30 +99,19 @@ public class EnchantScroll extends AbstractEnchantItem
return _isCursed;
}
- /**
- * @return id of scroll group that should be used
- */
- public int getScrollGroupId()
- {
- return _scrollGroupId;
- }
-
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
+ * @param scrollGroupId
*/
- public void addItem(int itemId)
+ public void addItem(int itemId, int scrollGroupId)
{
- if (_items == null)
- {
- _items = new HashSet<>();
- }
- _items.add(itemId);
+ _items.put(itemId, scrollGroupId > -1 ? scrollGroupId : _scrollGroupId);
}
- public Set getItems()
+ public Collection getItems()
{
- return _items;
+ return _items.keySet();
}
/**
@@ -132,7 +122,7 @@ public class EnchantScroll extends AbstractEnchantItem
@Override
public boolean isValid(Item itemToEnchant, EnchantSupportItem supportItem)
{
- if ((_items != null) && !_items.contains(itemToEnchant.getId()))
+ if (!_items.isEmpty() && !_items.containsKey(itemToEnchant.getId()))
{
return false;
}
@@ -159,7 +149,7 @@ public class EnchantScroll extends AbstractEnchantItem
return false;
}
}
- if (_items == null)
+ if (_items.isEmpty())
{
if (isActionBlessed() && itemToEnchant.isWeapon() && (itemToEnchant.getTemplate().getCrystalType() == getGrade()))
{
@@ -171,8 +161,8 @@ public class EnchantScroll extends AbstractEnchantItem
{
continue;
}
- final Set scrollItems = scroll.getItems();
- if ((scrollItems != null) && scrollItems.contains(itemToEnchant.getId()))
+ final Collection scrollItems = scroll.getItems();
+ if (!scrollItems.isEmpty() && scrollItems.contains(itemToEnchant.getId()))
{
return false;
}
@@ -188,13 +178,14 @@ public class EnchantScroll extends AbstractEnchantItem
*/
public double getChance(Player player, Item enchantItem)
{
- if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
+ final int scrollGroupId = _items.getOrDefault(enchantItem.getId(), _scrollGroupId);
+ if (EnchantItemGroupsData.getInstance().getScrollGroup(scrollGroupId) == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
- final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), _scrollGroupId);
+ final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getTemplate(), scrollGroupId);
if (group == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);