diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/enums/BroochJewel.java index d782dd8f5c..9d28581ff3 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,26 +21,28 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -57,4 +59,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index a1fb53cc3c..d9da6de4e4 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8949,55 +8949,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index fe23053b8e..dfd5fa776c 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -840,6 +840,23 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] == null; } + public boolean isPaperdollSlotNotEmpty(int slot) + { + return _paperdoll[slot] != null; + } + + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(int slot) { switch (slot) diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/enums/BroochJewel.java index d782dd8f5c..9d28581ff3 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,26 +21,28 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -57,4 +59,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index c2f89dd40c..57842f1832 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8956,55 +8956,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 3f417134e7..2bfe7ea44d 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -870,6 +870,23 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] == null; } + public boolean isPaperdollSlotNotEmpty(int slot) + { + return _paperdoll[slot] != null; + } + + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(int slot) { switch (slot) diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/enums/BroochJewel.java index b6d29ca09a..69fb1745d8 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,28 +21,30 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - GREATER_RUBY(47688, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2), - GREATER_SHAPPHIRE(47689, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + GREATER_RUBY(47688, 18715, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false), + GREATER_SHAPPHIRE(47689, 18718, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -59,4 +61,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 9cee0892cf..0ec529e162 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8958,63 +8958,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.GREATER_RUBY); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.GREATER_SHAPPHIRE); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 3f417134e7..2bfe7ea44d 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -870,6 +870,23 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] == null; } + public boolean isPaperdollSlotNotEmpty(int slot) + { + return _paperdoll[slot] != null; + } + + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(int slot) { switch (slot) diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/enums/BroochJewel.java index b6d29ca09a..69fb1745d8 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,28 +21,30 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - GREATER_RUBY(47688, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2), - GREATER_SHAPPHIRE(47689, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + GREATER_RUBY(47688, 18715, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false), + GREATER_SHAPPHIRE(47689, 18718, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -59,4 +61,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 6d226cd3ce..864fb61d74 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8956,63 +8956,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.GREATER_RUBY); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.GREATER_SHAPPHIRE); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index f920a3a384..24ff4c2e67 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -870,6 +870,23 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] == null; } + public boolean isPaperdollSlotNotEmpty(int slot) + { + return _paperdoll[slot] != null; + } + + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(int slot) { switch (slot) diff --git a/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/enums/BroochJewel.java index b6d29ca09a..69fb1745d8 100644 --- a/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,28 +21,30 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - GREATER_RUBY(47688, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2), - GREATER_SHAPPHIRE(47689, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + GREATER_RUBY(47688, 18715, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false), + GREATER_SHAPPHIRE(47689, 18718, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -59,4 +61,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 7940ff5b32..b01c515d23 100644 --- a/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8942,63 +8942,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.GREATER_RUBY); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.GREATER_SHAPPHIRE); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index efcbe52669..5b5ff3498a 100644 --- a/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_5.0_Salvation/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -909,6 +909,18 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] != null; } + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(long slot) { if (slot == Item.SLOT_UNDERWEAR) diff --git a/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/enums/BroochJewel.java index b6d29ca09a..69fb1745d8 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,28 +21,30 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - GREATER_RUBY(47688, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2), - GREATER_SHAPPHIRE(47689, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + GREATER_RUBY(47688, 18715, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false), + GREATER_SHAPPHIRE(47689, 18718, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -59,4 +61,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index a942586f51..555ef49097 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8942,63 +8942,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.GREATER_RUBY); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.GREATER_SHAPPHIRE); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 5979afd163..146394f798 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_5.5_EtinasFate/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -978,6 +978,18 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] != null; } + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(long slot) { if (slot == Item.SLOT_UNDERWEAR) diff --git a/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/enums/BroochJewel.java index b6d29ca09a..4993e6972a 100644 --- a/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,28 +21,38 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - GREATER_RUBY(47688, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2), - GREATER_SHAPPHIRE(47689, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + GREATER_RUBY_LV1(47688, 18715, 0.2, true), + GREATER_RUBY_LV2(48771, 18715, 0.235, true), + GREATER_RUBY_LV3(48772, 18715, 0.275, true), + GREATER_RUBY_LV4(48773, 18715, 0.325, true), + GREATER_RUBY_LV5(48774, 18715, 0.4, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false), + GREATER_SHAPPHIRE_LV1(47689, 18718, 0.2, false), + GREATER_SHAPPHIRE_LV2(48775, 18718, 0.235, false), + GREATER_SHAPPHIRE_LV3(48776, 18718, 0.275, false), + GREATER_SHAPPHIRE_LV4(48777, 18718, 0.325, false), + GREATER_SHAPPHIRE_LV5(48778, 18718, 0.4, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -59,4 +69,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 1476db47d0..74511439d0 100644 --- a/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8943,63 +8943,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_RUBY.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.GREATER_RUBY); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.GREATER_SHAPPHIRE.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.GREATER_SHAPPHIRE); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 5979afd163..146394f798 100644 --- a/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_6.0_Fafurion/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -978,6 +978,18 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] != null; } + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(long slot) { if (slot == Item.SLOT_UNDERWEAR) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/enums/BroochJewel.java index d782dd8f5c..9d28581ff3 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,26 +21,28 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -57,4 +59,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 30d1f3af2d..10f0630225 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8894,55 +8894,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 3f417134e7..2bfe7ea44d 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -870,6 +870,23 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] == null; } + public boolean isPaperdollSlotNotEmpty(int slot) + { + return _paperdoll[slot] != null; + } + + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(int slot) { switch (slot) diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/enums/BroochJewel.java index d782dd8f5c..9d28581ff3 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,26 +21,28 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -57,4 +59,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index c5687a6048..60ca3887e7 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8895,55 +8895,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 3f417134e7..2bfe7ea44d 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -870,6 +870,23 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] == null; } + public boolean isPaperdollSlotNotEmpty(int slot) + { + return _paperdoll[slot] != null; + } + + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(int slot) { switch (slot) diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/enums/BroochJewel.java index d782dd8f5c..9d28581ff3 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,26 +21,28 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -57,4 +59,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index fa8982b9db..ccc4852095 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8880,55 +8880,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 8012708a2f..6a16bc0b74 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -909,6 +909,18 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] != null; } + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(long slot) { if (slot == Item.SLOT_UNDERWEAR) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/enums/BroochJewel.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/enums/BroochJewel.java index d782dd8f5c..9d28581ff3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/enums/BroochJewel.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/enums/BroochJewel.java @@ -21,26 +21,28 @@ package com.l2jmobius.gameserver.enums; */ public enum BroochJewel { - RUBY_LV1(38855, 17814, 0.01), - RUBY_LV2(38856, 17814, 0.035), - RUBY_LV3(38857, 17815, 0.075), - RUBY_LV4(38858, 17816, 0.125), - RUBY_LV5(38859, 17817, 0.2), - SHAPPHIRE_LV1(38927, 17818, 0.01), - SHAPPHIRE_LV2(38928, 17818, 0.035), - SHAPPHIRE_LV3(38929, 17819, 0.075), - SHAPPHIRE_LV4(38930, 17820, 0.125), - SHAPPHIRE_LV5(38931, 17821, 0.2); + RUBY_LV1(38855, 17814, 0.01, true), + RUBY_LV2(38856, 17814, 0.035, true), + RUBY_LV3(38857, 17815, 0.075, true), + RUBY_LV4(38858, 17816, 0.125, true), + RUBY_LV5(38859, 17817, 0.2, true), + SHAPPHIRE_LV1(38927, 17818, 0.01, false), + SHAPPHIRE_LV2(38928, 17818, 0.035, false), + SHAPPHIRE_LV3(38929, 17819, 0.075, false), + SHAPPHIRE_LV4(38930, 17820, 0.125, false), + SHAPPHIRE_LV5(38931, 17821, 0.2, false); private int _itemId; private int _effectId; private double _bonus; + private boolean _isRuby; // If not, it is sapphire. - private BroochJewel(int itemId, int effectId, double bonus) + private BroochJewel(int itemId, int effectId, double bonus, boolean isRuby) { _itemId = itemId; _effectId = effectId; _bonus = bonus; + _isRuby = isRuby; } public int getItemId() @@ -57,4 +59,9 @@ public enum BroochJewel { return _bonus; } + + public boolean isRuby() + { + return _isRuby; + } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 0313c89741..337c27ed73 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8880,55 +8880,28 @@ public final class PlayerInstance extends Playable public void updateActiveBroochJewel() { + final BroochJewel[] broochJewels = BroochJewel.values(); // Update active Ruby jewel. - if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV5.getItemId()).isEquipped())) + setActiveRubyJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveRubyJewel(BroochJewel.RUBY_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV4.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV3.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV2.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.RUBY_LV1.getItemId()).isEquipped())) - { - setActiveRubyJewel(BroochJewel.RUBY_LV1); - } - else - { - setActiveRubyJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveRubyJewel(jewel); + break; + } } // Update active Sapphire jewel. - if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV5.getItemId()).isEquipped())) + setActiveShappireJewel(null); + for (int i = broochJewels.length - 1; i > 0; i--) { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV5); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV4.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV4); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV3.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV3); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV2.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV2); - } - else if ((_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()) != null) && (_inventory.getItemByItemId(BroochJewel.SHAPPHIRE_LV1.getItemId()).isEquipped())) - { - setActiveShappireJewel(BroochJewel.SHAPPHIRE_LV1); - } - else - { - setActiveShappireJewel(null); + final BroochJewel jewel = broochJewels[i]; + if (!jewel.isRuby() && _inventory.isItemEquipped(jewel.getItemId())) + { + setActiveShappireJewel(jewel); + break; + } } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 03193e561b..666f74c090 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/com/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -978,6 +978,18 @@ public abstract class Inventory extends ItemContainer return _paperdoll[slot] != null; } + public boolean isItemEquipped(int itemId) + { + for (ItemInstance item : getItemsByItemId(itemId)) + { + if (item.isEquipped()) + { + return true; + } + } + return false; + } + public static int getPaperdollIndex(long slot) { if (slot == Item.SLOT_UNDERWEAR)