From cef955f9e06924f8018a5a9202b27709e0d9fd1d Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 17 Aug 2017 20:25:40 +0000 Subject: [PATCH] ExEnchantSkillInfoDetail changes to avoid wrong display. --- .../model/holders/EnchantSkillHolder.java | 25 +++++++++++++++++++ .../ExEnchantSkillInfoDetail.java | 17 +++++-------- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/holders/EnchantSkillHolder.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/holders/EnchantSkillHolder.java index d25dcc5ca3..8c7a09b0cc 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/holders/EnchantSkillHolder.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/holders/EnchantSkillHolder.java @@ -24,6 +24,7 @@ import java.util.Set; import com.l2jmobius.gameserver.enums.SkillEnchantType; import com.l2jmobius.gameserver.model.StatsSet; +import com.l2jmobius.gameserver.model.itemcontainer.Inventory; /** * @author Sdw @@ -81,4 +82,28 @@ public class EnchantSkillHolder { return _requiredItems.getOrDefault(type, Collections.emptySet()); } + + public ItemHolder getRequiredBook(SkillEnchantType type) + { + for (ItemHolder item : _requiredItems.getOrDefault(type, Collections.emptySet())) + { + if (item.getId() != Inventory.ADENA_ID) + { + return item; + } + } + return null; + } + + public ItemHolder getRequiredAdena(SkillEnchantType type) + { + for (ItemHolder item : _requiredItems.getOrDefault(type, Collections.emptySet())) + { + if (item.getId() == Inventory.ADENA_ID) + { + return item; + } + } + return new ItemHolder(Inventory.ADENA_ID, 0); + } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfoDetail.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfoDetail.java index 01d9b161e5..b51fe1acf4 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfoDetail.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfoDetail.java @@ -16,19 +16,16 @@ */ package com.l2jmobius.gameserver.network.serverpackets; -import java.util.Set; - import com.l2jmobius.commons.network.PacketWriter; import com.l2jmobius.gameserver.data.xml.impl.EnchantSkillGroupsData; import com.l2jmobius.gameserver.enums.SkillEnchantType; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.holders.EnchantSkillHolder; -import com.l2jmobius.gameserver.model.holders.ItemHolder; import com.l2jmobius.gameserver.network.OutgoingPackets; import com.l2jmobius.gameserver.util.SkillEnchantConverter; /** - * @author KenM + * @author KenM, Mobius */ public class ExEnchantSkillInfoDetail implements IClientOutgoingPacket { @@ -57,13 +54,11 @@ public class ExEnchantSkillInfoDetail implements IClientOutgoingPacket { packet.writeQ(_enchantSkillHolder.getSp(_type)); packet.writeD(_enchantSkillHolder.getChance(_type)); - final Set holders = _enchantSkillHolder.getRequiredItems(_type); - packet.writeD(holders.size()); - holders.forEach(holder -> - { - packet.writeD(holder.getId()); - packet.writeD((int) holder.getCount()); - }); + packet.writeD(0x02); // item count + packet.writeD(_enchantSkillHolder.getRequiredAdena(_type).getId()); + packet.writeD((int) _enchantSkillHolder.getRequiredAdena(_type).getCount()); + packet.writeD(_enchantSkillHolder.getRequiredBook(_type).getId()); + packet.writeD((int) _enchantSkillHolder.getRequiredBook(_type).getCount()); } return _enchantSkillHolder != null;