From a0de6a5d7c478ad69ea764675984824de3a481c2 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 18 Sep 2019 05:47:07 +0000 Subject: [PATCH] Improved RestorationRandom effect inventory update. --- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 19 +++++++++++++++++-- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- .../effecthandlers/RestorationRandom.java | 12 +++++++++++- 14 files changed, 160 insertions(+), 15 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index 41903a5d81..08f020a1e8 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -21,6 +21,7 @@ import java.util.List; import org.l2jmobius.Config; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.model.ExtractableProductItem; import org.l2jmobius.gameserver.model.ExtractableSkill; import org.l2jmobius.gameserver.model.StatsSet; @@ -28,6 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -35,7 +37,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId; * Restoration Random effect implementation.
* This effect is present in item skills that "extract" new items upon usage.
* This effect has been unhardcoded in order to work on targets as well. - * @author Zoey76 + * @author Zoey76, Mobius */ public class RestorationRandom extends AbstractEffect { @@ -108,7 +110,20 @@ public class RestorationRandom extends AbstractEffect { continue; } - player.addItem("Extract", item.getId(), (long) (item.getCount() * Config.RATE_EXTRACTABLE), info.getEffector(), true); + + long itemCount = (long) (item.getCount() * Config.RATE_EXTRACTABLE); + final Item template = ItemTable.getInstance().getTemplate(item.getId()); + if (template.isStackable()) + { + player.addItem("Extract", item.getId(), itemCount, info.getEffector(), true); + } + else + { + for (int i = 0; i < itemCount; i++) + { + player.addItem("Extract", item.getId(), 1, info.getEffector(), true); + } + } } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java index aec4066aa3..9a8a163c04 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/RestorationRandom.java @@ -132,7 +132,17 @@ public class RestorationRandom extends AbstractEffect final InventoryUpdate playerIU = new InventoryUpdate(); for (Entry entry : extractedItems.entrySet()) { - playerIU.addModifiedItem(entry.getKey()); + if (entry.getKey().getItem().isStackable()) + { + playerIU.addModifiedItem(entry.getKey()); + } + else + { + for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId())) + { + playerIU.addModifiedItem(itemInstance); + } + } sendMessage(player, entry.getKey(), entry.getValue()); } player.sendPacket(playerIU);