Skill enchant related work in progress.

This commit is contained in:
MobiusDev
2016-06-19 21:37:49 +00:00
parent bf739d2ca1
commit b56363ba31
14 changed files with 1200 additions and 271 deletions

View File

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

View File

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

View File

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