Fixed AcquireSkillList related inconsistencies.

This commit is contained in:
MobiusDevelopment
2022-03-13 10:12:46 +00:00
parent f20bee23b7
commit 9a21ad51d7
46 changed files with 141 additions and 95 deletions

View File

@@ -680,7 +680,7 @@ public class SkillTreeData implements IXmlReader
*/
private Collection<SkillLearn> getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder)
{
final Set<SkillLearn> result = ConcurrentHashMap.newKeySet();
final Set<SkillLearn> result = new HashSet<>();
final Map<Long, SkillLearn> skills = getCompleteClassSkillTree(classId);
if (skills.isEmpty())
{
@@ -1456,7 +1456,7 @@ public class SkillTreeData implements IXmlReader
public Collection<SkillLearn> getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet)
{
final Map<Long, SkillLearn> completeClassSkillTree = getCompleteClassSkillTree(classId);
final Set<SkillLearn> result = ConcurrentHashMap.newKeySet();
final Set<SkillLearn> result = new HashSet<>();
if (completeClassSkillTree.isEmpty())
{
return result;

View File

@@ -59,22 +59,24 @@ public class AcquireSkillList implements IClientOutgoingPacket
for (SkillLearn skill : _learnable)
{
packet.writeD(skill.getSkillId());
packet.writeH(skill.getSkillLevel());
packet.writeH(skill.getSkillLevel()); // Main writeD, Classic writeH.
packet.writeQ(skill.getLevelUpSp());
packet.writeC(skill.getGetLevel());
packet.writeC(0); // Skill dual class level.
packet.writeC(skill.getRequiredItems().size());
for (ItemHolder item : skill.getRequiredItems())
{
packet.writeD(item.getId());
packet.writeQ(item.getCount());
}
final Collection<Skill> removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList());
packet.writeC(removeSkills.size());
for (Skill removed : removeSkills)
{
packet.writeD(removed.getId());
packet.writeD(removed.getLevel());
packet.writeH(removed.getLevel()); // Main writeD, Classic writeH.
}
}
return true;