Reworked available brooch jewel logic.

This commit is contained in:
MobiusDevelopment
2019-04-05 17:04:53 +00:00
parent afcd3587f4
commit 4dbaded667
33 changed files with 565 additions and 655 deletions

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -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)