Fixed Attribute Master removing attributes.

This commit is contained in:
MobiusDevelopment
2019-12-07 13:47:18 +00:00
parent 82fbfae6ad
commit a2f7a0e35a
2 changed files with 14 additions and 65 deletions

View File

@@ -23,7 +23,7 @@ import org.l2jmobius.gameserver.model.items.Weapon;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExBaseAttributeCancelResult;
import org.l2jmobius.gameserver.network.serverpackets.ExShowBaseAttributeCancelWindow;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
@@ -32,7 +32,6 @@ public class RequestExRemoveItemAttribute implements IClientIncomingPacket
{
private int _objectId;
private long _price;
private byte _element;
public RequestExRemoveItemAttribute()
{
@@ -42,7 +41,6 @@ public class RequestExRemoveItemAttribute implements IClientIncomingPacket
public boolean read(GameClient client, PacketReader packet)
{
_objectId = packet.readD();
_element = (byte) packet.readD();
return true;
}
@@ -62,7 +60,7 @@ public class RequestExRemoveItemAttribute implements IClientIncomingPacket
return;
}
if ((targetItem.getElementals() == null) || (targetItem.getElemental(_element) == null))
if (targetItem.getElementals() == null)
{
return;
}
@@ -71,57 +69,26 @@ public class RequestExRemoveItemAttribute implements IClientIncomingPacket
{
if (targetItem.isEquipped())
{
targetItem.getElemental(_element).removeBonus(player);
targetItem.removeElementAttrBonus(player);
}
for (Elementals element : targetItem.getElementals())
{
targetItem.clearElementAttr(element.getElement());
}
targetItem.clearElementAttr(_element);
player.sendPacket(new UserInfo(player));
final InventoryUpdate iu = new InventoryUpdate();
InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(targetItem);
player.sendPacket(iu);
SystemMessage sm;
final byte realElement = targetItem.isArmor() ? Elementals.getOppositeElement(_element) : _element;
if (targetItem.getEnchantLevel() > 0)
{
if (targetItem.isArmor())
{
sm = new SystemMessage(SystemMessageId.S1_S2_S_S3_ATTRIBUTE_WAS_REMOVED_SO_RESISTANCE_TO_S4_WAS_DECREASED);
}
else
{
sm = new SystemMessage(SystemMessageId.S1_S2_S_S3_ATTRIBUTE_HAS_BEEN_REMOVED);
}
sm.addInt(targetItem.getEnchantLevel());
sm.addItemName(targetItem);
sm.addElemental(realElement);
if (targetItem.isArmor())
{
sm.addElemental(Elementals.getOppositeElement(realElement));
}
}
else
{
if (targetItem.isArmor())
{
sm = new SystemMessage(SystemMessageId.S1_S_S2_ATTRIBUTE_WAS_REMOVED_AND_RESISTANCE_TO_S3_WAS_DECREASED);
}
else
{
sm = new SystemMessage(SystemMessageId.S1_S_S2_ATTRIBUTE_HAS_BEEN_REMOVED);
}
sm.addItemName(targetItem);
sm.addElemental(realElement);
if (targetItem.isArmor())
{
sm.addElemental(Elementals.getOppositeElement(realElement));
}
}
player.sendPacket(sm);
player.sendPacket(new ExBaseAttributeCancelResult(targetItem.getObjectId(), _element));
// Retail message.
player.sendMessage(targetItem.getName() + "'s elemental power was removed.");
player.sendPacket(new ExShowBaseAttributeCancelWindow(player));
}
else
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_FUNDS_TO_CANCEL_THIS_ATTRIBUTE);
player.sendPacket(new SystemMessage(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ADENA));
}
}

View File

@@ -17,7 +17,6 @@
package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.Elementals;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.network.OutgoingPackets;
@@ -27,18 +26,10 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
public class ExChooseInventoryAttributeItem implements IClientOutgoingPacket
{
private final int _itemId;
private final byte _atribute;
private final int _level;
public ExChooseInventoryAttributeItem(ItemInstance item)
{
_itemId = item.getDisplayId();
_atribute = Elementals.getItemElement(_itemId);
if (_atribute == Elementals.NONE)
{
throw new IllegalArgumentException("Undefined Atribute item: " + item);
}
_level = Elementals.getMaxElementLevel(_itemId);
}
@Override
@@ -46,15 +37,6 @@ public class ExChooseInventoryAttributeItem implements IClientOutgoingPacket
{
OutgoingPackets.EX_CHOOSE_INVENTORY_ATTRIBUTE_ITEM.writeId(packet);
packet.writeD(_itemId);
// Structure for now
// Must be 0x01 for stone/crystal attribute type
packet.writeD(_atribute == Elementals.FIRE ? 1 : 0); // Fire
packet.writeD(_atribute == Elementals.WATER ? 1 : 0); // Water
packet.writeD(_atribute == Elementals.WIND ? 1 : 0); // Wind
packet.writeD(_atribute == Elementals.EARTH ? 1 : 0); // Earth
packet.writeD(_atribute == Elementals.HOLY ? 1 : 0); // Holy
packet.writeD(_atribute == Elementals.DARK ? 1 : 0); // Unholy
packet.writeD(_level); // Item max attribute level
return true;
}
}