|
@@ -24,12 +24,10 @@ import java.util.logging.Level;
|
|
|
import java.util.logging.Logger;
|
|
|
|
|
|
import com.l2jserver.L2DatabaseFactory;
|
|
|
-import com.l2jserver.gameserver.model.L2EnchantSkillLearn;
|
|
|
import com.l2jserver.gameserver.model.L2PledgeSkillLearn;
|
|
|
import com.l2jserver.gameserver.model.L2Skill;
|
|
|
import com.l2jserver.gameserver.model.L2SkillLearn;
|
|
|
import com.l2jserver.gameserver.model.L2TransformSkillLearn;
|
|
|
-import com.l2jserver.gameserver.model.L2EnchantSkillLearn.EnchantSkillDetail;
|
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
|
import com.l2jserver.gameserver.model.base.ClassId;
|
|
|
|
|
@@ -43,22 +41,12 @@ import javolution.util.FastMap;
|
|
|
*/
|
|
|
public class SkillTreeTable
|
|
|
{
|
|
|
- public static final int NORMAL_ENCHANT_COST_MULTIPLIER = 1;
|
|
|
- public static final int SAFE_ENCHANT_COST_MULTIPLIER = 5;
|
|
|
- public static final int ADENA_XP_DIV = 3; //TODO magic number
|
|
|
-
|
|
|
- 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;
|
|
|
-
|
|
|
private static Logger _log = Logger.getLogger(SkillTreeTable.class.getName());
|
|
|
|
|
|
private Map<ClassId, Map<Integer, L2SkillLearn>> _skillTrees;
|
|
|
private List<L2SkillLearn> _fishingSkillTrees; //all common skills (teached by Fisherman)
|
|
|
private List<L2SkillLearn> _expandDwarfCraftSkillTrees; //list of special skill for dwarf (expand dwarf craft) learned by class teacher
|
|
|
private List<L2PledgeSkillLearn> _pledgeSkillTrees; //pledge skill list
|
|
|
- private Map<Integer, L2EnchantSkillLearn> _enchantSkillTrees; //enchant skill list
|
|
|
private List<L2TransformSkillLearn> _TransformSkillTrees; // Transform Skills (Test)
|
|
|
private FastList<L2SkillLearn> _specialSkillTrees;
|
|
|
|
|
@@ -67,6 +55,12 @@ public class SkillTreeTable
|
|
|
return SingletonHolder._instance;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private SkillTreeTable()
|
|
|
+ {
|
|
|
+ load();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Return the minimum level needed to have this Expertise.<BR><BR>
|
|
|
*
|
|
@@ -128,7 +122,7 @@ public class SkillTreeTable
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- private SkillTreeTable()
|
|
|
+ private void load()
|
|
|
{
|
|
|
int classId = 0;
|
|
|
int count = 0;
|
|
@@ -137,7 +131,6 @@ public class SkillTreeTable
|
|
|
int count4 = 0;
|
|
|
int count5 = 0;
|
|
|
int count6 = 0;
|
|
|
- int count7 = 0;
|
|
|
Connection con = null;
|
|
|
|
|
|
try
|
|
@@ -246,57 +239,6 @@ public class SkillTreeTable
|
|
|
_log.severe("Error while creating fishing skill table: " + e);
|
|
|
}
|
|
|
|
|
|
- try
|
|
|
- {
|
|
|
- _enchantSkillTrees = new FastMap<Integer, L2EnchantSkillLearn>();
|
|
|
-
|
|
|
- PreparedStatement statement = con.prepareStatement("SELECT skill_id, level, base_lvl, sp, min_skill_lvl, exp, success_rate76, success_rate77, success_rate78, success_rate79, success_rate80, success_rate81, success_rate82, success_rate83, success_rate84, success_rate85 FROM enchant_skill_trees ORDER BY skill_id, level");
|
|
|
- ResultSet skilltree3 = statement.executeQuery();
|
|
|
-
|
|
|
- int prevSkillId = -1;
|
|
|
-
|
|
|
- while (skilltree3.next())
|
|
|
- {
|
|
|
- int id = skilltree3.getInt("skill_id");
|
|
|
- int lvl = skilltree3.getInt("level");
|
|
|
- int baseLvl = skilltree3.getInt("base_lvl");
|
|
|
- int minSkillLvl = skilltree3.getInt("min_skill_lvl");
|
|
|
- int sp = skilltree3.getInt("sp");
|
|
|
- int exp = skilltree3.getInt("exp");
|
|
|
- byte rate76 = skilltree3.getByte("success_rate76");
|
|
|
- byte rate77 = skilltree3.getByte("success_rate77");
|
|
|
- byte rate78 = skilltree3.getByte("success_rate78");
|
|
|
- byte rate79 = skilltree3.getByte("success_rate79");
|
|
|
- byte rate80 = skilltree3.getByte("success_rate80");
|
|
|
- byte rate81 = skilltree3.getByte("success_rate81");
|
|
|
- byte rate82 = skilltree3.getByte("success_rate82");
|
|
|
- byte rate83 = skilltree3.getByte("success_rate83");
|
|
|
- byte rate84 = skilltree3.getByte("success_rate84");
|
|
|
- byte rate85 = skilltree3.getByte("success_rate85");
|
|
|
-
|
|
|
- if (prevSkillId != id)
|
|
|
- prevSkillId = id;
|
|
|
-
|
|
|
- L2EnchantSkillLearn skill = _enchantSkillTrees.get(id);
|
|
|
- if (skill == null)
|
|
|
- {
|
|
|
- skill = new L2EnchantSkillLearn(id, baseLvl);
|
|
|
- _enchantSkillTrees.put(id, skill);
|
|
|
- }
|
|
|
- EnchantSkillDetail esd = new EnchantSkillDetail(lvl, minSkillLvl, sp, exp, rate76, rate77, rate78, rate79, rate80, rate81, rate82, rate83, rate84, rate85);
|
|
|
- skill.addEnchantDetail(esd);
|
|
|
- }
|
|
|
-
|
|
|
- skilltree3.close();
|
|
|
- statement.close();
|
|
|
-
|
|
|
- count4 = _enchantSkillTrees.size();
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- _log.log(Level.SEVERE, "Error while creating enchant skill table ", e);
|
|
|
- }
|
|
|
-
|
|
|
try
|
|
|
{
|
|
|
_pledgeSkillTrees = new FastList<L2PledgeSkillLearn>();
|
|
@@ -327,7 +269,7 @@ public class SkillTreeTable
|
|
|
skilltree4.close();
|
|
|
statement.close();
|
|
|
|
|
|
- count5 = _pledgeSkillTrees.size();
|
|
|
+ count4 = _pledgeSkillTrees.size();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
@@ -363,7 +305,7 @@ public class SkillTreeTable
|
|
|
skilltree5.close();
|
|
|
statement.close();
|
|
|
|
|
|
- count6 = _TransformSkillTrees.size();
|
|
|
+ count5 = _TransformSkillTrees.size();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
@@ -397,7 +339,7 @@ public class SkillTreeTable
|
|
|
skilltree6.close();
|
|
|
statement.close();
|
|
|
|
|
|
- count7 = _specialSkillTrees.size();
|
|
|
+ count6 = _specialSkillTrees.size();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
@@ -421,10 +363,9 @@ public class SkillTreeTable
|
|
|
|
|
|
_log.config("FishingSkillTreeTable: Loaded " + count2 + " general skills.");
|
|
|
_log.config("DwarvenCraftSkillTreeTable: Loaded " + count3 + " dwarven skills.");
|
|
|
- _log.config("EnchantSkillTreeTable: Loaded " + count4 + " enchant skills.");
|
|
|
- _log.config("PledgeSkillTreeTable: Loaded " + count5 + " pledge skills");
|
|
|
- _log.config("TransformSkillTreeTable: Loaded " + count6 + " transform skills");
|
|
|
- _log.config("SpecialSkillTreeTable: Loaded " + count7 + " special skills");
|
|
|
+ _log.config("PledgeSkillTreeTable: Loaded " + count4 + " pledge skills");
|
|
|
+ _log.config("TransformSkillTreeTable: Loaded " + count5 + " transform skills");
|
|
|
+ _log.config("SpecialSkillTreeTable: Loaded " + count6 + " special skills");
|
|
|
}
|
|
|
|
|
|
private Map<ClassId, Map<Integer, L2SkillLearn>> getSkillTrees()
|
|
@@ -576,22 +517,6 @@ public class SkillTreeTable
|
|
|
return result.toArray(new L2SkillLearn[result.size()]);
|
|
|
}
|
|
|
|
|
|
- public L2EnchantSkillLearn getSkillEnchantmentForSkill(L2Skill skill)
|
|
|
- {
|
|
|
- L2EnchantSkillLearn esl = this.getSkillEnchantmentBySkillId(skill.getId());
|
|
|
- // there is enchantment for this skill and we have the required level of it
|
|
|
- if (esl != null && skill.getLevel() >= esl.getBaseLevel())
|
|
|
- {
|
|
|
- return esl;
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- public L2EnchantSkillLearn getSkillEnchantmentBySkillId(int skillId)
|
|
|
- {
|
|
|
- return _enchantSkillTrees.get(skillId);
|
|
|
- }
|
|
|
-
|
|
|
public L2TransformSkillLearn[] getAvailableTransformSkills(L2PcInstance cha)
|
|
|
{
|
|
|
List<L2TransformSkillLearn> result = new FastList<L2TransformSkillLearn>();
|
|
@@ -789,54 +714,14 @@ public class SkillTreeTable
|
|
|
return skillCost;
|
|
|
}
|
|
|
|
|
|
- public int getEnchantSkillSpCost(L2Skill skill)
|
|
|
- {
|
|
|
- L2EnchantSkillLearn enchantSkillLearn = _enchantSkillTrees.get(skill.getId());
|
|
|
- if (enchantSkillLearn != null)
|
|
|
- {
|
|
|
- EnchantSkillDetail esd = enchantSkillLearn.getEnchantSkillDetail(skill.getLevel());
|
|
|
- if (esd != null)
|
|
|
- {
|
|
|
- return esd.getSpCost();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return Integer.MAX_VALUE;
|
|
|
- }
|
|
|
-
|
|
|
- public int getEnchantSkillAdenaCost(L2Skill skill)
|
|
|
- {
|
|
|
- L2EnchantSkillLearn enchantSkillLearn = _enchantSkillTrees.get(skill.getId());
|
|
|
- if (enchantSkillLearn != null)
|
|
|
- {
|
|
|
- EnchantSkillDetail esd = enchantSkillLearn.getEnchantSkillDetail(skill.getLevel());
|
|
|
- if (esd != null)
|
|
|
- {
|
|
|
- return esd.getAdena();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return Integer.MAX_VALUE;
|
|
|
- }
|
|
|
-
|
|
|
- public byte getEnchantSkillRate(L2PcInstance player, L2Skill skill)
|
|
|
- {
|
|
|
- L2EnchantSkillLearn enchantSkillLearn = _enchantSkillTrees.get(skill.getId());
|
|
|
- if (enchantSkillLearn != null)
|
|
|
- {
|
|
|
- EnchantSkillDetail esd = enchantSkillLearn.getEnchantSkillDetail(skill.getLevel());
|
|
|
- if (esd != null)
|
|
|
- {
|
|
|
- return esd.getRate(player);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
@SuppressWarnings("synthetic-access")
|
|
|
private static class SingletonHolder
|
|
|
{
|
|
|
protected static final SkillTreeTable _instance = new SkillTreeTable();
|
|
|
}
|
|
|
+
|
|
|
+ public void reload()
|
|
|
+ {
|
|
|
+ load();
|
|
|
+ }
|
|
|
}
|