diff --git a/trunk/dist/game/data/enchantItemOptions.xml b/trunk/dist/game/data/enchantItemOptions.xml
index 1b1467b772..5b01652f96 100644
--- a/trunk/dist/game/data/enchantItemOptions.xml
+++ b/trunk/dist/game/data/enchantItemOptions.xml
@@ -1126,6 +1126,97 @@
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/trunk/dist/game/data/stats/items/37700-37799.xml b/trunk/dist/game/data/stats/items/37700-37799.xml
index 01947ef786..42ff80a96a 100644
--- a/trunk/dist/game/data/stats/items/37700-37799.xml
+++ b/trunk/dist/game/data/stats/items/37700-37799.xml
@@ -243,6 +243,7 @@
+
diff --git a/trunk/dist/game/data/stats/items/46100-46199.xml b/trunk/dist/game/data/stats/items/46100-46199.xml
index ef92df5770..ef21bf08ae 100644
--- a/trunk/dist/game/data/stats/items/46100-46199.xml
+++ b/trunk/dist/game/data/stats/items/46100-46199.xml
@@ -1100,6 +1100,34 @@
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/trunk/dist/game/data/stats/options/30200-30299.xml b/trunk/dist/game/data/stats/options/30200-30299.xml
index b1fa8bf897..0e752eaf28 100644
--- a/trunk/dist/game/data/stats/options/30200-30299.xml
+++ b/trunk/dist/game/data/stats/options/30200-30299.xml
@@ -162,4 +162,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/stats/options/30300-30399.xml b/trunk/dist/game/data/stats/options/30300-30399.xml
new file mode 100644
index 0000000000..19bf62d16e
--- /dev/null
+++ b/trunk/dist/game/data/stats/options/30300-30399.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/stats/options/32800-32899.xml b/trunk/dist/game/data/stats/options/32800-32899.xml
new file mode 100644
index 0000000000..987e0832d1
--- /dev/null
+++ b/trunk/dist/game/data/stats/options/32800-32899.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/stats/skills/13500-13599.xml b/trunk/dist/game/data/stats/skills/13500-13599.xml
index b6475b3917..d878e6e45e 100644
--- a/trunk/dist/game/data/stats/skills/13500-13599.xml
+++ b/trunk/dist/game/data/stats/skills/13500-13599.xml
@@ -196,6 +196,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -477,6 +509,12 @@
+
+
+
+
+
+
@@ -605,27 +643,93 @@
-
+
+
+
+
+
+
-
+ 9 10 11 12 13 14 15 16 17 18
+ 29 30 31 34 37 40 43 46 49 52
+
+
+
+
+
+
+
+
+ 0 0 0 510 520 531 536 541 547 552
+ 0 0 0 510 520 531 536 541 547 552
+ 0 0 0 0 1.03 1.03 1.03 1.03 1.03 1.03
+ 0 0 0 6 12 18 24 30 36 36
+ 0 0 0 0 0 0 0 1.05 1.05 1.05
+ 0 0 0 0 0 0 0 1.03 1.03 1.03
+ 0 0 0 0 0 0 0 0 1.03 1.03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
1800000 1740000 1680000 1620000 1500000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -635,6 +739,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -644,6 +765,10 @@
+
+
+
+
@@ -653,6 +778,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -661,6 +799,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/trunk/dist/game/data/stats/skills/18400-18499.xml b/trunk/dist/game/data/stats/skills/18400-18499.xml
index f9f9a5b0b3..052ad306ec 100644
--- a/trunk/dist/game/data/stats/skills/18400-18499.xml
+++ b/trunk/dist/game/data/stats/skills/18400-18499.xml
@@ -314,27 +314,113 @@
+ 0 9 10 11 12 13 14 15 16 17 18
+ 0 29 30 31 34 37 40 43 46 49 52
+ 0 0 0 0 1.05 1.06 1.08 1.10 1.12 1.15
+
+
+
+
+
+
+
+ 0 0 0 510 520 531 536 541 547 552
+ 0 0 0 510 520 531 536 541 547 552
+ 0 0 0 6 12 18 24 30 36 42
+ 0 0 0 0 0 1.08 1.12 1.16 1.20 1.25
+ 0 0 0 0 0 0 1.07 1.09 1.12 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ 0 9 10 11 12 13 14 15 16 17 18
+ 0 29 30 31 34 37 40 43 46 49 52
+ 0 0 0 0 1.05 1.06 1.08 1.10 1.12 1.15
+
+
+
+
+
+
+
+ 0 0 0 510 520 531 536 541 547 552
+ 0 0 0 510 520 531 536 541 547 552
+ 0 0 0 6 12 18 24 30 36 42
+ 0 0 0 0 0 1.08 1.12 1.16 1.20 1.25
+ 0 0 0 0 0 0 1.07 1.09 1.12 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
diff --git a/trunk/dist/game/data/xsd/optionsData.xsd b/trunk/dist/game/data/xsd/optionsData.xsd
index bc613ab415..7176fba76e 100644
--- a/trunk/dist/game/data/xsd/optionsData.xsd
+++ b/trunk/dist/game/data/xsd/optionsData.xsd
@@ -74,7 +74,7 @@
-
+
@@ -94,7 +94,7 @@
-
+
@@ -114,7 +114,7 @@
-
+
@@ -142,7 +142,7 @@
-
+
@@ -170,7 +170,7 @@
-
+
diff --git a/trunk/java/com/l2jmobius/gameserver/data/xml/impl/OptionData.java b/trunk/java/com/l2jmobius/gameserver/data/xml/impl/OptionData.java
index 71d9884b3b..4eb6c1580a 100644
--- a/trunk/java/com/l2jmobius/gameserver/data/xml/impl/OptionData.java
+++ b/trunk/java/com/l2jmobius/gameserver/data/xml/impl/OptionData.java
@@ -95,12 +95,12 @@ public class OptionData implements IXmlReader
}
case "active_skill":
{
- op.setActiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level")));
+ op.addActiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level")));
break;
}
case "passive_skill":
{
- op.setPassiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level")));
+ op.addPassiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level")));
break;
}
case "attack_skill":
diff --git a/trunk/java/com/l2jmobius/gameserver/model/options/Options.java b/trunk/java/com/l2jmobius/gameserver/model/options/Options.java
index 580f376983..ae7d5d6876 100644
--- a/trunk/java/com/l2jmobius/gameserver/model/options/Options.java
+++ b/trunk/java/com/l2jmobius/gameserver/model/options/Options.java
@@ -37,8 +37,8 @@ public class Options
private final int _id;
private final List _funcs = new ArrayList<>();
- private SkillHolder _activeSkill = null;
- private SkillHolder _passiveSkill = null;
+ private final List _activeSkills = new ArrayList<>();
+ private final List _passiveSkills = new ArrayList<>();
private final List _activationSkills = new ArrayList<>();
@@ -87,32 +87,32 @@ public class Options
public boolean hasActiveSkill()
{
- return _activeSkill != null;
+ return !_activeSkills.isEmpty();
}
- public SkillHolder getActiveSkill()
+ public List getActiveSkill()
{
- return _activeSkill;
+ return _activeSkills;
}
- public void setActiveSkill(SkillHolder holder)
+ public void addActiveSkill(SkillHolder holder)
{
- _activeSkill = holder;
+ _activeSkills.add(holder);
}
public boolean hasPassiveSkill()
{
- return _passiveSkill != null;
+ return !_passiveSkills.isEmpty();
}
- public SkillHolder getPassiveSkill()
+ public List getPassiveSkill()
{
- return _passiveSkill;
+ return _passiveSkills;
}
- public void setPassiveSkill(SkillHolder holder)
+ public void addPassiveSkill(SkillHolder holder)
{
- _passiveSkill = holder;
+ _passiveSkills.add(holder);
}
public boolean hasActivationSkills()
@@ -164,13 +164,19 @@ public class Options
}
if (hasActiveSkill())
{
- addSkill(player, getActiveSkill().getSkill());
- player.sendDebugMessage("Adding active skill: " + getActiveSkill());
+ for (SkillHolder holder : _activeSkills)
+ {
+ addSkill(player, holder.getSkill());
+ player.sendDebugMessage("Adding active skill: " + holder);
+ }
}
if (hasPassiveSkill())
{
- addSkill(player, getPassiveSkill().getSkill());
- player.sendDebugMessage("Adding passive skill: " + getPassiveSkill());
+ for (SkillHolder holder : _passiveSkills)
+ {
+ addSkill(player, holder.getSkill());
+ player.sendDebugMessage("Adding passive skill: " + holder);
+ }
}
if (hasActivationSkills())
{
@@ -193,13 +199,20 @@ public class Options
}
if (hasActiveSkill())
{
- player.removeSkill(getActiveSkill().getSkill(), false, false);
- player.sendDebugMessage("Removing active skill: " + getActiveSkill());
+ for (SkillHolder holder : _activeSkills)
+ {
+ player.removeSkill(holder.getSkill(), false, false);
+ player.sendDebugMessage("Removing active skill: " + holder);
+ }
}
if (hasPassiveSkill())
{
- player.removeSkill(getPassiveSkill().getSkill(), false, true);
- player.sendDebugMessage("Removing passive skill: " + getPassiveSkill());
+ for (SkillHolder holder : _passiveSkills)
+ {
+ player.removeSkill(holder.getSkill(), false, true);
+ player.sendDebugMessage("Removing passive skill: " + holder);
+ }
+
}
if (hasActivationSkills())
{