From ca82640f133fb41789d07366bed89ead158f3ef1 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 9 Aug 2022 12:07:06 +0000 Subject: [PATCH] Recipe additional chance and critical rate display. Contributed by Index. --- .../serverpackets/RecipeItemMakeInfo.java | 15 +++++++++++++++ .../serverpackets/RecipeShopItemInfo.java | 11 +++++++++++ .../serverpackets/RecipeShopSellList.java | 8 ++++++++ .../serverpackets/RecipeItemMakeInfo.java | 15 +++++++++++++++ .../serverpackets/RecipeShopItemInfo.java | 11 +++++++++++ .../serverpackets/RecipeShopSellList.java | 8 ++++++++ .../serverpackets/RecipeItemMakeInfo.java | 15 +++++++++++++++ .../serverpackets/RecipeShopItemInfo.java | 11 +++++++++++ .../serverpackets/RecipeShopSellList.java | 8 ++++++++ .../serverpackets/RecipeItemMakeInfo.java | 15 +++++++++++++++ .../serverpackets/RecipeShopItemInfo.java | 11 +++++++++++ .../serverpackets/RecipeShopSellList.java | 8 ++++++++ .../serverpackets/RecipeItemMakeInfo.java | 15 +++++++++++++++ .../serverpackets/RecipeShopItemInfo.java | 11 +++++++++++ .../serverpackets/RecipeShopSellList.java | 8 ++++++++ .../serverpackets/RecipeItemMakeInfo.java | 15 +++++++++++++++ .../serverpackets/RecipeShopItemInfo.java | 11 +++++++++++ .../serverpackets/RecipeShopSellList.java | 8 ++++++++ .../serverpackets/RecipeItemMakeInfo.java | 17 ++++++++++++++--- .../serverpackets/RecipeShopItemInfo.java | 15 ++++++++++++--- .../serverpackets/RecipeShopSellList.java | 13 +++++++++---- .../serverpackets/RecipeItemMakeInfo.java | 17 ++++++++++++++--- .../serverpackets/RecipeShopItemInfo.java | 15 ++++++++++++--- .../serverpackets/RecipeShopSellList.java | 13 +++++++++---- .../serverpackets/RecipeItemMakeInfo.java | 17 ++++++++++++++--- .../serverpackets/RecipeShopItemInfo.java | 15 ++++++++++++--- .../serverpackets/RecipeShopSellList.java | 13 +++++++++---- .../serverpackets/RecipeItemMakeInfo.java | 17 ++++++++++++++--- .../serverpackets/RecipeShopItemInfo.java | 15 ++++++++++++--- .../serverpackets/RecipeShopSellList.java | 13 +++++++++---- .../serverpackets/RecipeItemMakeInfo.java | 17 ++++++++++++++--- .../serverpackets/RecipeShopItemInfo.java | 15 ++++++++++++--- .../serverpackets/RecipeShopSellList.java | 13 +++++++++---- .../serverpackets/RecipeItemMakeInfo.java | 17 ++++++++++++++--- .../serverpackets/RecipeShopItemInfo.java | 15 ++++++++++++--- .../serverpackets/RecipeShopSellList.java | 13 +++++++++---- 36 files changed, 414 insertions(+), 60 deletions(-) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index a4e4641944..70ed52352a 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.holders.RecipeHolder; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -29,6 +30,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final Player _player; private final Boolean _success; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success, long offeringMaximumAdena) { @@ -36,6 +39,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, boolean success) @@ -44,6 +49,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, long offeringMaximumAdena) @@ -52,6 +59,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -60,6 +69,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -76,6 +87,10 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(_success == null ? -1 : (_success ? 1 : 0)); // item creation none/success/failed packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Show offering window. packet.writeQ(_offeringMaximumAdena); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index ab67f9bff3..bdeec99990 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket @@ -27,6 +28,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket private final Boolean _success; private final long _manufacturePrice; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player manufacturer, int recipeId, boolean success, long manufacturePrice, long offeringMaximumAdena) { @@ -35,6 +38,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = success; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeShopItemInfo(Player manufacturer, int recipeId, long manufacturePrice, long offeringMaximumAdena) @@ -44,6 +49,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = null; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -58,6 +65,10 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeQ(_manufacturePrice); packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Trigger offering window if 1 packet.writeQ(_offeringMaximumAdena); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 8f504ce103..c7f22bcb5e 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -20,17 +20,22 @@ import java.util.Map.Entry; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -53,6 +58,9 @@ public class RecipeShopSellList implements IClientOutgoingPacket packet.writeD(item.getKey()); packet.writeD(0); // CanCreate? packet.writeQ(item.getValue()); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index a4e4641944..70ed52352a 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.holders.RecipeHolder; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -29,6 +30,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final Player _player; private final Boolean _success; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success, long offeringMaximumAdena) { @@ -36,6 +39,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, boolean success) @@ -44,6 +49,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, long offeringMaximumAdena) @@ -52,6 +59,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -60,6 +69,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -76,6 +87,10 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(_success == null ? -1 : (_success ? 1 : 0)); // item creation none/success/failed packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Show offering window. packet.writeQ(_offeringMaximumAdena); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index ab67f9bff3..bdeec99990 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket @@ -27,6 +28,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket private final Boolean _success; private final long _manufacturePrice; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player manufacturer, int recipeId, boolean success, long manufacturePrice, long offeringMaximumAdena) { @@ -35,6 +38,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = success; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeShopItemInfo(Player manufacturer, int recipeId, long manufacturePrice, long offeringMaximumAdena) @@ -44,6 +49,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = null; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -58,6 +65,10 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeQ(_manufacturePrice); packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Trigger offering window if 1 packet.writeQ(_offeringMaximumAdena); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 8f504ce103..c7f22bcb5e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -20,17 +20,22 @@ import java.util.Map.Entry; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -53,6 +58,9 @@ public class RecipeShopSellList implements IClientOutgoingPacket packet.writeD(item.getKey()); packet.writeD(0); // CanCreate? packet.writeQ(item.getValue()); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index a4e4641944..70ed52352a 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.holders.RecipeHolder; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -29,6 +30,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final Player _player; private final Boolean _success; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success, long offeringMaximumAdena) { @@ -36,6 +39,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, boolean success) @@ -44,6 +49,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, long offeringMaximumAdena) @@ -52,6 +59,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -60,6 +69,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -76,6 +87,10 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(_success == null ? -1 : (_success ? 1 : 0)); // item creation none/success/failed packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Show offering window. packet.writeQ(_offeringMaximumAdena); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index ab67f9bff3..bdeec99990 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket @@ -27,6 +28,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket private final Boolean _success; private final long _manufacturePrice; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player manufacturer, int recipeId, boolean success, long manufacturePrice, long offeringMaximumAdena) { @@ -35,6 +38,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = success; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeShopItemInfo(Player manufacturer, int recipeId, long manufacturePrice, long offeringMaximumAdena) @@ -44,6 +49,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = null; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -58,6 +65,10 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeQ(_manufacturePrice); packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Trigger offering window if 1 packet.writeQ(_offeringMaximumAdena); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 8f504ce103..c7f22bcb5e 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -20,17 +20,22 @@ import java.util.Map.Entry; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -53,6 +58,9 @@ public class RecipeShopSellList implements IClientOutgoingPacket packet.writeD(item.getKey()); packet.writeD(0); // CanCreate? packet.writeQ(item.getValue()); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index a4e4641944..70ed52352a 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.holders.RecipeHolder; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -29,6 +30,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final Player _player; private final Boolean _success; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success, long offeringMaximumAdena) { @@ -36,6 +39,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, boolean success) @@ -44,6 +49,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, long offeringMaximumAdena) @@ -52,6 +59,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -60,6 +69,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -76,6 +87,10 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(_success == null ? -1 : (_success ? 1 : 0)); // item creation none/success/failed packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Show offering window. packet.writeQ(_offeringMaximumAdena); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index ab67f9bff3..bdeec99990 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket @@ -27,6 +28,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket private final Boolean _success; private final long _manufacturePrice; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player manufacturer, int recipeId, boolean success, long manufacturePrice, long offeringMaximumAdena) { @@ -35,6 +38,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = success; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeShopItemInfo(Player manufacturer, int recipeId, long manufacturePrice, long offeringMaximumAdena) @@ -44,6 +49,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = null; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -58,6 +65,10 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeQ(_manufacturePrice); packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Trigger offering window if 1 packet.writeQ(_offeringMaximumAdena); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 8f504ce103..c7f22bcb5e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -20,17 +20,22 @@ import java.util.Map.Entry; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -53,6 +58,9 @@ public class RecipeShopSellList implements IClientOutgoingPacket packet.writeD(item.getKey()); packet.writeD(0); // CanCreate? packet.writeQ(item.getValue()); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index a4e4641944..70ed52352a 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.holders.RecipeHolder; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -29,6 +30,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final Player _player; private final Boolean _success; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success, long offeringMaximumAdena) { @@ -36,6 +39,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, boolean success) @@ -44,6 +49,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, long offeringMaximumAdena) @@ -52,6 +59,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -60,6 +69,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -76,6 +87,10 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(_success == null ? -1 : (_success ? 1 : 0)); // item creation none/success/failed packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Show offering window. packet.writeQ(_offeringMaximumAdena); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index ab67f9bff3..bdeec99990 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket @@ -27,6 +28,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket private final Boolean _success; private final long _manufacturePrice; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player manufacturer, int recipeId, boolean success, long manufacturePrice, long offeringMaximumAdena) { @@ -35,6 +38,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = success; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeShopItemInfo(Player manufacturer, int recipeId, long manufacturePrice, long offeringMaximumAdena) @@ -44,6 +49,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = null; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -58,6 +65,10 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeQ(_manufacturePrice); packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Trigger offering window if 1 packet.writeQ(_offeringMaximumAdena); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 8f504ce103..c7f22bcb5e 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -20,17 +20,22 @@ import java.util.Map.Entry; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -53,6 +58,9 @@ public class RecipeShopSellList implements IClientOutgoingPacket packet.writeD(item.getKey()); packet.writeD(0); // CanCreate? packet.writeQ(item.getValue()); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index a4e4641944..70ed52352a 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.holders.RecipeHolder; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -29,6 +30,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final Player _player; private final Boolean _success; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success, long offeringMaximumAdena) { @@ -36,6 +39,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, boolean success) @@ -44,6 +49,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = success; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player, long offeringMaximumAdena) @@ -52,6 +59,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -60,6 +69,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _player = player; _success = null; _offeringMaximumAdena = 0; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -76,6 +87,10 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(_success == null ? -1 : (_success ? 1 : 0)); // item creation none/success/failed packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Show offering window. packet.writeQ(_offeringMaximumAdena); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index ab67f9bff3..bdeec99990 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket @@ -27,6 +28,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket private final Boolean _success; private final long _manufacturePrice; private final long _offeringMaximumAdena; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player manufacturer, int recipeId, boolean success, long manufacturePrice, long offeringMaximumAdena) { @@ -35,6 +38,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = success; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeShopItemInfo(Player manufacturer, int recipeId, long manufacturePrice, long offeringMaximumAdena) @@ -44,6 +49,8 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket _success = null; _manufacturePrice = manufacturePrice; _offeringMaximumAdena = offeringMaximumAdena; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -58,6 +65,10 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeQ(_manufacturePrice); packet.writeC(_offeringMaximumAdena > 0 ? 1 : 0); // Trigger offering window if 1 packet.writeQ(_offeringMaximumAdena); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 8f504ce103..c7f22bcb5e 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -20,17 +20,22 @@ import java.util.Map.Entry; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -53,6 +58,9 @@ public class RecipeShopSellList implements IClientOutgoingPacket packet.writeD(item.getKey()); packet.writeD(0); // CanCreate? packet.writeQ(item.getValue()); + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index 9f460fe896..77ca54a47d 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -28,12 +29,16 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final int _id; private final Player _player; private final boolean _success; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success) { _id = id; _player = player; _success = success; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -41,6 +46,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _id = id; _player = player; _success = true; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -54,9 +61,13 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(_success ? 1 : 0); // item creation success/failed - packet.writeC(0); - packet.writeQ(0); + packet.writeD(_success ? 1 : 0); // item creation none/success/failed + packet.writeC(0); // Show offering window. + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index f4db5be9df..51078e66f7 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,17 +18,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket { private final Player _player; private final int _recipeId; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player player, int recipeId) { _player = player; _recipeId = recipeId; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -39,10 +44,14 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeD(_recipeId); packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(0xffffffff); - packet.writeQ(0); + packet.writeD(0xffffffff); // item creation none/success/failed + packet.writeQ(0); // manufacturePrice packet.writeC(0); // Trigger offering window if 1 - packet.writeQ(0); + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 2d1965d17b..5511efb237 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -19,17 +19,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -50,11 +55,11 @@ public class RecipeShopSellList implements IClientOutgoingPacket for (ManufactureItem temp : _manufacturer.getManufactureItems().values()) { packet.writeD(temp.getRecipeId()); - packet.writeD(0); // unknown + packet.writeD(0); // CanCreate? packet.writeQ(temp.getCost()); - packet.writeQ(0); // Classic - 166 - packet.writeQ(0); // Classic - 166 - packet.writeC(0); // Classic - 166 + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index 9f460fe896..77ca54a47d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -28,12 +29,16 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final int _id; private final Player _player; private final boolean _success; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success) { _id = id; _player = player; _success = success; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -41,6 +46,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _id = id; _player = player; _success = true; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -54,9 +61,13 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(_success ? 1 : 0); // item creation success/failed - packet.writeC(0); - packet.writeQ(0); + packet.writeD(_success ? 1 : 0); // item creation none/success/failed + packet.writeC(0); // Show offering window. + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index f4db5be9df..51078e66f7 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,17 +18,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket { private final Player _player; private final int _recipeId; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player player, int recipeId) { _player = player; _recipeId = recipeId; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -39,10 +44,14 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeD(_recipeId); packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(0xffffffff); - packet.writeQ(0); + packet.writeD(0xffffffff); // item creation none/success/failed + packet.writeQ(0); // manufacturePrice packet.writeC(0); // Trigger offering window if 1 - packet.writeQ(0); + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 2d1965d17b..5511efb237 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -19,17 +19,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -50,11 +55,11 @@ public class RecipeShopSellList implements IClientOutgoingPacket for (ManufactureItem temp : _manufacturer.getManufactureItems().values()) { packet.writeD(temp.getRecipeId()); - packet.writeD(0); // unknown + packet.writeD(0); // CanCreate? packet.writeQ(temp.getCost()); - packet.writeQ(0); // Classic - 166 - packet.writeQ(0); // Classic - 166 - packet.writeC(0); // Classic - 166 + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index 9f460fe896..77ca54a47d 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -28,12 +29,16 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final int _id; private final Player _player; private final boolean _success; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success) { _id = id; _player = player; _success = success; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -41,6 +46,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _id = id; _player = player; _success = true; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -54,9 +61,13 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(_success ? 1 : 0); // item creation success/failed - packet.writeC(0); - packet.writeQ(0); + packet.writeD(_success ? 1 : 0); // item creation none/success/failed + packet.writeC(0); // Show offering window. + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index f4db5be9df..51078e66f7 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,17 +18,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket { private final Player _player; private final int _recipeId; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player player, int recipeId) { _player = player; _recipeId = recipeId; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -39,10 +44,14 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeD(_recipeId); packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(0xffffffff); - packet.writeQ(0); + packet.writeD(0xffffffff); // item creation none/success/failed + packet.writeQ(0); // manufacturePrice packet.writeC(0); // Trigger offering window if 1 - packet.writeQ(0); + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 2d1965d17b..5511efb237 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -19,17 +19,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -50,11 +55,11 @@ public class RecipeShopSellList implements IClientOutgoingPacket for (ManufactureItem temp : _manufacturer.getManufactureItems().values()) { packet.writeD(temp.getRecipeId()); - packet.writeD(0); // unknown + packet.writeD(0); // CanCreate? packet.writeQ(temp.getCost()); - packet.writeQ(0); // Classic - 166 - packet.writeQ(0); // Classic - 166 - packet.writeC(0); // Classic - 166 + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index 9f460fe896..77ca54a47d 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -28,12 +29,16 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final int _id; private final Player _player; private final boolean _success; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success) { _id = id; _player = player; _success = success; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -41,6 +46,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _id = id; _player = player; _success = true; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -54,9 +61,13 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(_success ? 1 : 0); // item creation success/failed - packet.writeC(0); - packet.writeQ(0); + packet.writeD(_success ? 1 : 0); // item creation none/success/failed + packet.writeC(0); // Show offering window. + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index f4db5be9df..51078e66f7 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,17 +18,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket { private final Player _player; private final int _recipeId; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player player, int recipeId) { _player = player; _recipeId = recipeId; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -39,10 +44,14 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeD(_recipeId); packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(0xffffffff); - packet.writeQ(0); + packet.writeD(0xffffffff); // item creation none/success/failed + packet.writeQ(0); // manufacturePrice packet.writeC(0); // Trigger offering window if 1 - packet.writeQ(0); + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 2d1965d17b..5511efb237 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -19,17 +19,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -50,11 +55,11 @@ public class RecipeShopSellList implements IClientOutgoingPacket for (ManufactureItem temp : _manufacturer.getManufactureItems().values()) { packet.writeD(temp.getRecipeId()); - packet.writeD(0); // unknown + packet.writeD(0); // CanCreate? packet.writeQ(temp.getCost()); - packet.writeQ(0); // Classic - 166 - packet.writeQ(0); // Classic - 166 - packet.writeC(0); // Classic - 166 + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index 9f460fe896..77ca54a47d 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -28,12 +29,16 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final int _id; private final Player _player; private final boolean _success; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success) { _id = id; _player = player; _success = success; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -41,6 +46,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _id = id; _player = player; _success = true; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -54,9 +61,13 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(_success ? 1 : 0); // item creation success/failed - packet.writeC(0); - packet.writeQ(0); + packet.writeD(_success ? 1 : 0); // item creation none/success/failed + packet.writeC(0); // Show offering window. + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index f4db5be9df..51078e66f7 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,17 +18,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket { private final Player _player; private final int _recipeId; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player player, int recipeId) { _player = player; _recipeId = recipeId; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -39,10 +44,14 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeD(_recipeId); packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(0xffffffff); - packet.writeQ(0); + packet.writeD(0xffffffff); // item creation none/success/failed + packet.writeQ(0); // manufacturePrice packet.writeC(0); // Trigger offering window if 1 - packet.writeQ(0); + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 2d1965d17b..5511efb237 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -19,17 +19,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -50,11 +55,11 @@ public class RecipeShopSellList implements IClientOutgoingPacket for (ManufactureItem temp : _manufacturer.getManufactureItems().values()) { packet.writeD(temp.getRecipeId()); - packet.writeD(0); // unknown + packet.writeD(0); // CanCreate? packet.writeQ(temp.getCost()); - packet.writeQ(0); // Classic - 166 - packet.writeQ(0); // Classic - 166 - packet.writeC(0); // Classic - 166 + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index 9f460fe896..77ca54a47d 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.PacketLogger; @@ -28,12 +29,16 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket private final int _id; private final Player _player; private final boolean _success; + private final double _craftRate; + private final double _craftCritical; public RecipeItemMakeInfo(int id, Player player, boolean success) { _id = id; _player = player; _success = success; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } public RecipeItemMakeInfo(int id, Player player) @@ -41,6 +46,8 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket _id = id; _player = player; _success = true; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -54,9 +61,13 @@ public class RecipeItemMakeInfo implements IClientOutgoingPacket packet.writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(_success ? 1 : 0); // item creation success/failed - packet.writeC(0); - packet.writeQ(0); + packet.writeD(_success ? 1 : 0); // item creation none/success/failed + packet.writeC(0); // Show offering window. + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } PacketLogger.info("Character: " + _player + ": Requested unexisting recipe with id = " + _id); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index f4db5be9df..51078e66f7 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -18,17 +18,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopItemInfo implements IClientOutgoingPacket { private final Player _player; private final int _recipeId; + private final double _craftRate; + private final double _craftCritical; public RecipeShopItemInfo(Player player, int recipeId) { _player = player; _recipeId = recipeId; + _craftRate = _player.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _player.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -39,10 +44,14 @@ public class RecipeShopItemInfo implements IClientOutgoingPacket packet.writeD(_recipeId); packet.writeD((int) _player.getCurrentMp()); packet.writeD(_player.getMaxMp()); - packet.writeD(0xffffffff); - packet.writeQ(0); + packet.writeD(0xffffffff); // item creation none/success/failed + packet.writeQ(0); // manufacturePrice packet.writeC(0); // Trigger offering window if 1 - packet.writeQ(0); + packet.writeQ(0); // Adena worth of items for maximum offering. + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); + packet.writeC(0); // find me return true; } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index 2d1965d17b..5511efb237 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -19,17 +19,22 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.network.OutgoingPackets; public class RecipeShopSellList implements IClientOutgoingPacket { private final Player _buyer; private final Player _manufacturer; + private final double _craftRate; + private final double _craftCritical; public RecipeShopSellList(Player buyer, Player manufacturer) { _buyer = buyer; _manufacturer = manufacturer; + _craftRate = _manufacturer.getStat().getValue(Stat.CRAFT_RATE, 0); + _craftCritical = _manufacturer.getStat().getValue(Stat.CRAFTING_CRITICAL, 0); } @Override @@ -50,11 +55,11 @@ public class RecipeShopSellList implements IClientOutgoingPacket for (ManufactureItem temp : _manufacturer.getManufactureItems().values()) { packet.writeD(temp.getRecipeId()); - packet.writeD(0); // unknown + packet.writeD(0); // CanCreate? packet.writeQ(temp.getCost()); - packet.writeQ(0); // Classic - 166 - packet.writeQ(0); // Classic - 166 - packet.writeC(0); // Classic - 166 + packet.writeF(Math.min(_craftRate, 100.0)); + packet.writeC(_craftCritical > 0 ? 1 : 0); + packet.writeF(Math.min(_craftCritical, 100.0)); } } return true;