ExEnchantSkillInfoDetail changes to avoid wrong display.

This commit is contained in:
MobiusDev 2017-08-17 20:25:40 +00:00
parent ac48741739
commit cef955f9e0
2 changed files with 31 additions and 11 deletions

View File

@ -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);
}
}

View File

@ -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<ItemHolder> 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;