From 4d843dc0c0f27b6ef45682482fe1e3182526cfaa Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 20 Dec 2022 07:32:41 +0000 Subject: [PATCH] Fixed click on reset button after compound failed. Contributed by Fakee. --- .../compound/RequestNewEnchantTry.java | 30 ++++++++++++++++--- .../compound/RequestNewEnchantTry.java | 30 ++++++++++++++++--- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/compound/RequestNewEnchantTry.java b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/compound/RequestNewEnchantTry.java index 02c39a78bc..489a7725a2 100644 --- a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/compound/RequestNewEnchantTry.java +++ b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/compound/RequestNewEnchantTry.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; +import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.compound.ExEnchantFail; import org.l2jmobius.gameserver.network.serverpackets.compound.ExEnchantOneFail; import org.l2jmobius.gameserver.network.serverpackets.compound.ExEnchantSucess; @@ -111,20 +112,41 @@ public class RequestNewEnchantTry implements ClientPacket final boolean success = random <= combinationItem.getChance(); final CombinationItemReward rewardItem = combinationItem.getReward(success ? CombinationItemType.ON_SUCCESS : CombinationItemType.ON_FAILURE); + // Add item (early). + final Item item = player.addItem("Compound-Result", rewardItem.getId(), rewardItem.getCount(), null, true); + // Send success or fail packet. if (success) { - player.sendPacket(new ExEnchantSucess(rewardItem.getId())); + player.sendPacket(new ExEnchantSucess(item.getId())); } else { - player.sendPacket(new ExEnchantFail(itemOne.getId(), itemTwo.getId())); + player.sendPacket(new ExEnchantFail(item.getId(), itemTwo.getId())); } - // Take required items and add result item. + // Take required items. if (player.destroyItem("Compound-Item-One", itemOne, 1, null, true) && player.destroyItem("Compound-Item-Two", itemTwo, 1, null, true) && ((combinationItem.getCommission() <= 0) || player.reduceAdena("Compound-Commission", combinationItem.getCommission(), player, true))) { - final Item item = player.addItem("Compound-Result", rewardItem.getId(), rewardItem.getCount(), null, true); + final InventoryUpdate iu = new InventoryUpdate(); + iu.addModifiedItem(item); + if (itemOne.isStackable() && (itemOne.getCount() > 0)) + { + iu.addModifiedItem(itemOne); + } + else + { + iu.addRemovedItem(itemOne); + } + if (itemTwo.isStackable() && (itemTwo.getCount() > 0)) + { + iu.addModifiedItem(itemTwo); + } + else + { + iu.addRemovedItem(itemTwo); + } + player.sendInventoryUpdate(iu); // Notify to scripts. if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_COMPOUND)) diff --git a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/network/clientpackets/compound/RequestNewEnchantTry.java b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/network/clientpackets/compound/RequestNewEnchantTry.java index a6aa5d02ed..18d63a61df 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/network/clientpackets/compound/RequestNewEnchantTry.java +++ b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/network/clientpackets/compound/RequestNewEnchantTry.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; +import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.compound.ExEnchantFail; import org.l2jmobius.gameserver.network.serverpackets.compound.ExEnchantOneFail; import org.l2jmobius.gameserver.network.serverpackets.compound.ExEnchantSucess; @@ -108,20 +109,41 @@ public class RequestNewEnchantTry implements ClientPacket final boolean success = random <= combinationItem.getChance(); final CombinationItemReward rewardItem = combinationItem.getReward(success ? CombinationItemType.ON_SUCCESS : CombinationItemType.ON_FAILURE); + // Add item (early). + final Item item = player.addItem("Compound-Result", rewardItem.getId(), rewardItem.getCount(), null, true); + // Send success or fail packet. if (success) { - player.sendPacket(new ExEnchantSucess(rewardItem.getId())); + player.sendPacket(new ExEnchantSucess(item.getId())); } else { - player.sendPacket(new ExEnchantFail(itemOne.getId(), itemTwo.getId())); + player.sendPacket(new ExEnchantFail(item.getId(), itemTwo.getId())); } - // Take required items and add result item. + // Take required items. if (player.destroyItem("Compound-Item-One", itemOne, 1, null, true) && player.destroyItem("Compound-Item-Two", itemTwo, 1, null, true) && ((combinationItem.getCommission() <= 0) || player.reduceAdena("Compound-Commission", combinationItem.getCommission(), player, true))) { - player.addItem("Compound-Result", rewardItem.getId(), rewardItem.getCount(), null, true); + final InventoryUpdate iu = new InventoryUpdate(); + iu.addModifiedItem(item); + if (itemOne.isStackable() && (itemOne.getCount() > 0)) + { + iu.addModifiedItem(itemOne); + } + else + { + iu.addRemovedItem(itemOne); + } + if (itemTwo.isStackable() && (itemTwo.getCount() > 0)) + { + iu.addModifiedItem(itemTwo); + } + else + { + iu.addRemovedItem(itemTwo); + } + player.sendInventoryUpdate(iu); } player.removeRequest(request.getClass());