From a2f7a0e35ae0e350590e7a6c17434f76643e44b0 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 7 Dec 2019 13:47:18 +0000 Subject: [PATCH] Fixed Attribute Master removing attributes. --- .../RequestExRemoveItemAttribute.java | 61 +++++-------------- .../ExChooseInventoryAttributeItem.java | 18 ------ 2 files changed, 14 insertions(+), 65 deletions(-) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestExRemoveItemAttribute.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestExRemoveItemAttribute.java index e485055acb..64173e4a07 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestExRemoveItemAttribute.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestExRemoveItemAttribute.java @@ -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)); } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/serverpackets/ExChooseInventoryAttributeItem.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/serverpackets/ExChooseInventoryAttributeItem.java index 01274565c9..eedd26025d 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/serverpackets/ExChooseInventoryAttributeItem.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/serverpackets/ExChooseInventoryAttributeItem.java @@ -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; } }