Skill enchant related work in progress.
This commit is contained in:
@ -25,6 +25,7 @@ import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NamedNodeMap;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.commons.util.IGameXmlReader;
|
||||
import com.l2jmobius.gameserver.model.L2EnchantSkillGroup;
|
||||
import com.l2jmobius.gameserver.model.L2EnchantSkillGroup.EnchantSkillHolder;
|
||||
@ -41,10 +42,26 @@ public class EnchantSkillGroupsData implements IGameXmlReader
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(EnchantSkillGroupsData.class.getName());
|
||||
|
||||
public static final int NORMAL_ENCHANT_BOOK = 6622;
|
||||
public static final int SAFE_ENCHANT_BOOK = 9627;
|
||||
public static final int CHANGE_ENCHANT_BOOK = 9626;
|
||||
public static final int UNTRAIN_ENCHANT_BOOK = 9625;
|
||||
public static final int NORMAL_ENCHANT_COST_MULTIPLIER = Config.NORMAL_ENCHANT_COST_MULTIPLIER;
|
||||
public static final int SAFE_ENCHANT_COST_MULTIPLIER = Config.SAFE_ENCHANT_COST_MULTIPLIER;
|
||||
|
||||
public static final int NORMAL_ENCHANT_BOOK_OLD = 6622;
|
||||
public static final int SAFE_ENCHANT_BOOK_OLD = 9627;
|
||||
public static final int CHANGE_ENCHANT_BOOK_OLD = 9626;
|
||||
public static final int UNTRAIN_ENCHANT_BOOK_OLD = 9625;
|
||||
public static final int NORMAL_ENCHANT_BOOK = 30297;
|
||||
public static final int SAFE_ENCHANT_BOOK = 30298;
|
||||
public static final int CHANGE_ENCHANT_BOOK = 30299;
|
||||
public static final int UNTRAIN_ENCHANT_BOOK = 30300;
|
||||
public static final int IMMORTAL_SCROLL = 37044;
|
||||
public static final int NORMAL_ENCHANT_BOOK_V2 = 46150;
|
||||
public static final int SAFE_ENCHANT_BOOK_V2 = 46151;
|
||||
public static final int CHANGE_ENCHANT_BOOK_V2 = 46152;
|
||||
public static final int IMMORTAL_SCROLL_V2 = 46153;
|
||||
public static final int NORMAL_ENCHANT_BOOK_V3 = 46154;
|
||||
public static final int SAFE_ENCHANT_BOOK_V3 = 46155;
|
||||
public static final int CHANGE_ENCHANT_BOOK_V3 = 46156;
|
||||
public static final int IMMORTAL_SCROLL_V3 = 46157;
|
||||
|
||||
private final Map<Integer, L2EnchantSkillGroup> _enchantSkillGroups = new HashMap<>();
|
||||
private final Map<Integer, L2EnchantSkillLearn> _enchantSkillTrees = new HashMap<>();
|
||||
|
@ -56,20 +56,10 @@ public class SkillData implements IGameXmlReader
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(SkillData.class.getName());
|
||||
|
||||
private static final Set<String> BLOCK_ITEM_VALUE_ELEMENTS = new HashSet<>();
|
||||
private static final Set<String> BLOCK_ITEM_ELEMENTS = new HashSet<>();
|
||||
|
||||
private final Map<Integer, Skill> _skills = new HashMap<>();
|
||||
private final Map<Integer, Integer> _skillsMaxLevel = new HashMap<>();
|
||||
private final Set<Integer> _enchantable = new HashSet<>();
|
||||
|
||||
static
|
||||
{
|
||||
BLOCK_ITEM_VALUE_ELEMENTS.add("item");
|
||||
BLOCK_ITEM_VALUE_ELEMENTS.add("value");
|
||||
BLOCK_ITEM_ELEMENTS.add("item");
|
||||
}
|
||||
|
||||
private class NamedParamInfo
|
||||
{
|
||||
private final String _name;
|
||||
@ -150,7 +140,7 @@ public class SkillData implements IGameXmlReader
|
||||
*/
|
||||
public static int getSkillHashCode(int skillId, int skillLevel)
|
||||
{
|
||||
return (skillId * 1021) + skillLevel;
|
||||
return (skillId * 1031) + skillLevel;
|
||||
}
|
||||
|
||||
public Skill getSkill(int skillId, int level)
|
||||
@ -423,7 +413,10 @@ public class SkillData implements IGameXmlReader
|
||||
|
||||
_skills.put(getSkillHashCode(skill), skill);
|
||||
_skillsMaxLevel.merge(skill.getId(), skill.getLevel(), Integer::max);
|
||||
// TODO: add enchantable
|
||||
if ((skill.getLevel() > 99) && !_enchantable.contains(skill.getId()))
|
||||
{
|
||||
_enchantable.add(skill.getId());
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -240,25 +240,37 @@ public final class SkillTreesData implements IGameXmlReader
|
||||
switch (b.getNodeName())
|
||||
{
|
||||
case "item":
|
||||
{
|
||||
skillLearn.addRequiredItem(new ItemHolder(parseInteger(attrs, "id"), parseInteger(attrs, "count")));
|
||||
break;
|
||||
}
|
||||
case "preRequisiteSkill":
|
||||
{
|
||||
skillLearn.addPreReqSkill(new SkillHolder(parseInteger(attrs, "id"), parseInteger(attrs, "lvl")));
|
||||
break;
|
||||
}
|
||||
case "race":
|
||||
{
|
||||
skillLearn.addRace(Race.valueOf(b.getTextContent()));
|
||||
break;
|
||||
}
|
||||
case "residenceId":
|
||||
{
|
||||
skillLearn.addResidenceId(Integer.valueOf(b.getTextContent()));
|
||||
break;
|
||||
}
|
||||
case "socialClass":
|
||||
{
|
||||
skillLearn.setSocialClass(Enum.valueOf(SocialClass.class, b.getTextContent()));
|
||||
break;
|
||||
}
|
||||
case "removeSkill":
|
||||
{
|
||||
final int removeSkillId = parseInteger(attrs, "id");
|
||||
skillLearn.addRemoveSkills(removeSkillId);
|
||||
_removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user