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 0 0 5 5 5 5 5
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 2 3 3 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 2 3 3 4 4
+ 0 0 0 7 7 7 7 7 7 7
+ 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 1 2 3 3 4 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 2 3 3 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 2 3 3 4 4
+ 0 0 0 7 7 7 7 7 7 7
+ 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 1 2 3 3 4 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 2 3 3 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 3 3 4 4 4
+ 0 0 0 1 2 2 3 3 4 4
+ 0 0 0 7 7 7 7 7 7 7
+ 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()) {