Advertisement
L2-Irrelevant

charTemplateTable

Mar 14th, 2022
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.48 KB | None | 0 0
  1. com/l2jfrozen/gameserver/datatables/sql/CharTemplateTable.java
  2. ===========================================================================
  3.  
  4. package com.l2jfrozen.gameserver.datatables.sql;
  5.  
  6. import java.sql.Connection;
  7. import java.sql.PreparedStatement;
  8. import java.sql.ResultSet;
  9. import java.sql.SQLException;
  10. import java.util.Map;
  11. import javolution.util.FastMap;
  12.  
  13. import org.apache.log4j.Logger;
  14. import com.l2jfrozen.Config;
  15. import com.l2jfrozen.gameserver.model.base.ClassId;
  16. import com.l2jfrozen.gameserver.templates.L2PcTemplate;
  17. import com.l2jfrozen.gameserver.templates.StatsSet;
  18. import com.l2jfrozen.util.CloseUtil;
  19. import com.l2jfrozen.util.database.DatabaseUtils;
  20. import com.l2jfrozen.util.database.L2DatabaseFactory;
  21.  
  22. /**
  23. * @version $Revision: 1.6.2.1.2.10 $ $Date: 2005/03/29 14:00:54 $
  24. */
  25. public class CharTemplateTable
  26. {
  27. private static Logger LOGGER = Logger.getLogger(CharTemplateTable.class);
  28.  
  29. private static CharTemplateTable _instance;
  30.  
  31. private static final String[] CHAR_CLASSES =
  32. {
  33. "Human Fighter",
  34. "Warrior",
  35. "Gladiator",
  36. "Warlord",
  37. "Human Knight",
  38. "Paladin",
  39. "Dark Avenger",
  40. "Rogue",
  41. "Treasure Hunter",
  42. "Hawkeye",
  43. "Human Mystic",
  44. "Human Wizard",
  45. "Sorceror",
  46. "Necromancer",
  47. "Warlock",
  48. "Cleric",
  49. "Bishop",
  50. "Prophet",
  51. "Elven Fighter",
  52. "Elven Knight",
  53. "Temple Knight",
  54. "Swordsinger",
  55. "Elven Scout",
  56. "Plainswalker",
  57. "Silver Ranger",
  58. "Elven Mystic",
  59. "Elven Wizard",
  60. "Spellsinger",
  61. "Elemental Summoner",
  62. "Elven Oracle",
  63. "Elven Elder",
  64. "Dark Fighter",
  65. "Palus Knight",
  66. "Shillien Knight",
  67. "Bladedancer",
  68. "Assassin",
  69. "Abyss Walker",
  70. "Phantom Ranger",
  71. "Dark Elven Mystic",
  72. "Dark Elven Wizard",
  73. "Spellhowler",
  74. "Phantom Summoner",
  75. "Shillien Oracle",
  76. "Shillien Elder",
  77. "Orc Fighter",
  78. "Orc Raider",
  79. "Destroyer",
  80. "Orc Monk",
  81. "Tyrant",
  82. "Orc Mystic",
  83. "Orc Shaman",
  84. "Overlord",
  85. "Warcryer",
  86. "Dwarven Fighter",
  87. "Dwarven Scavenger",
  88. "Bounty Hunter",
  89. "Dwarven Artisan",
  90. "Warsmith",
  91. "dummyEntry1",
  92. "dummyEntry2",
  93. "dummyEntry3",
  94. "dummyEntry4",
  95. "dummyEntry5",
  96. "dummyEntry6",
  97. "dummyEntry7",
  98. "dummyEntry8",
  99. "dummyEntry9",
  100. "dummyEntry10",
  101. "dummyEntry11",
  102. "dummyEntry12",
  103. "dummyEntry13",
  104. "dummyEntry14",
  105. "dummyEntry15",
  106. "dummyEntry16",
  107. "dummyEntry17",
  108. "dummyEntry18",
  109. "dummyEntry19",
  110. "dummyEntry20",
  111. "dummyEntry21",
  112. "dummyEntry22",
  113. "dummyEntry23",
  114. "dummyEntry24",
  115. "dummyEntry25",
  116. "dummyEntry26",
  117. "dummyEntry27",
  118. "dummyEntry28",
  119. "dummyEntry29",
  120. "dummyEntry30",
  121. "Duelist",
  122. "DreadNought",
  123. "Phoenix Knight",
  124. "Hell Knight",
  125. "Sagittarius",
  126. "Adventurer",
  127. "Archmage",
  128. "Soultaker",
  129. "Arcana Lord",
  130. "Cardinal",
  131. "Hierophant",
  132. "Eva Templar",
  133. "Sword Muse",
  134. "Wind Rider",
  135. "Moonlight Sentinel",
  136. "Mystic Muse",
  137. "Elemental Master",
  138. "Eva's Saint",
  139. "Shillien Templar",
  140. "Spectral Dancer",
  141. "Ghost Hunter",
  142. "Ghost Sentinel",
  143. "Storm Screamer",
  144. "Spectral Master",
  145. "Shillien Saint",
  146. "Titan",
  147. "Grand Khauatari",
  148. "Dominator",
  149. "Doomcryer",
  150. "Fortune Seeker",
  151. "Maestro"
  152. };
  153.  
  154. private final Map<Integer, L2PcTemplate> _templates;
  155.  
  156. public static CharTemplateTable getInstance()
  157. {
  158. if (_instance == null)
  159. {
  160. _instance = new CharTemplateTable();
  161. }
  162.  
  163. return _instance;
  164. }
  165.  
  166. private CharTemplateTable()
  167. {
  168. _templates = new FastMap<>();
  169. Connection con = null;
  170.  
  171. try
  172. {
  173. con = L2DatabaseFactory.getInstance().getConnection(false);
  174. PreparedStatement statement = con.prepareStatement("SELECT * FROM class_list, char_templates, lvlupgain" + " WHERE class_list.id = char_templates.classId" + " AND class_list.id = lvlupgain.classId" + " ORDER BY class_list.id");
  175. ResultSet rset = statement.executeQuery();
  176.  
  177. while (rset.next())
  178. {
  179. StatsSet set = new StatsSet();
  180. // ClassId classId = ClassId.values()[rset.getInt("id")];
  181. set.set("classId", rset.getInt("id"));
  182. set.set("className", rset.getString("className"));
  183. set.set("raceId", rset.getInt("raceId"));
  184. set.set("baseSTR", rset.getInt("STR"));
  185. set.set("baseCON", rset.getInt("CON"));
  186. set.set("baseDEX", rset.getInt("DEX"));
  187. set.set("baseINT", rset.getInt("_INT"));
  188. set.set("baseWIT", rset.getInt("WIT"));
  189. set.set("baseMEN", rset.getInt("MEN"));
  190. set.set("baseHpMax", rset.getFloat("defaultHpBase"));
  191. set.set("lvlHpAdd", rset.getFloat("defaultHpAdd"));
  192. set.set("lvlHpMod", rset.getFloat("defaultHpMod"));
  193. set.set("baseMpMax", rset.getFloat("defaultMpBase"));
  194. set.set("baseCpMax", rset.getFloat("defaultCpBase"));
  195. set.set("lvlCpAdd", rset.getFloat("defaultCpAdd"));
  196. set.set("lvlCpMod", rset.getFloat("defaultCpMod"));
  197. set.set("lvlMpAdd", rset.getFloat("defaultMpAdd"));
  198. set.set("lvlMpMod", rset.getFloat("defaultMpMod"));
  199. set.set("baseHpReg", 1.5);
  200. set.set("baseMpReg", 0.9);
  201. set.set("basePAtk", rset.getInt("p_atk"));
  202. set.set("basePDef", /* classId.isMage()? 77 : 129 */rset.getInt("p_def"));
  203. set.set("baseMAtk", rset.getInt("m_atk"));
  204. set.set("baseMDef", rset.getInt("char_templates.m_def"));
  205. set.set("classBaseLevel", rset.getInt("class_lvl"));
  206. set.set("basePAtkSpd", rset.getInt("p_spd"));
  207. set.set("baseMAtkSpd", /* classId.isMage()? 166 : 333 */rset.getInt("char_templates.m_spd"));
  208. set.set("baseCritRate", rset.getInt("char_templates.critical") / 10);
  209. set.set("baseRunSpd", rset.getInt("move_spd"));
  210. set.set("baseWalkSpd", 0);
  211. set.set("baseShldDef", 0);
  212. set.set("baseShldRate", 0);
  213. set.set("baseAtkRange", 40);
  214.  
  215. set.set("spawnX", rset.getInt("x"));
  216. set.set("spawnY", rset.getInt("y"));
  217. set.set("spawnZ", rset.getInt("z"));
  218.  
  219. L2PcTemplate ct;
  220.  
  221. set.set("collision_radius", rset.getDouble("m_col_r"));
  222. set.set("collision_height", rset.getDouble("m_col_h"));
  223. //set.set("collision_radius", rset.getDouble("f_col_r"));
  224. //set.set("collision_height", rset.getDouble("f_col_h"));
  225. ct = new L2PcTemplate(set);
  226. // 5items must go here
  227. for (int x = 1; x < 6; x++)
  228. {
  229. if (rset.getInt("items" + x) != 0)
  230. {
  231. ct.addItem(rset.getInt("items" + x));
  232. }
  233. }
  234. _templates.put(ct.classId.getId(), ct);
  235.  
  236. set = null;
  237. ct = null;
  238. }
  239.  
  240. DatabaseUtils.close(statement);
  241. DatabaseUtils.close(rset);
  242. statement = null;
  243. rset = null;
  244. }
  245. catch (final SQLException e)
  246. {
  247. if (Config.ENABLE_ALL_EXCEPTIONS)
  248. e.printStackTrace();
  249.  
  250. LOGGER.warn("error while loading char templates " + e.getMessage());
  251. }
  252. finally
  253. {
  254. CloseUtil.close(con);
  255. }
  256.  
  257. LOGGER.info("CharTemplateTable: Loaded " + _templates.size() + " Character Templates.");
  258. }
  259.  
  260. public L2PcTemplate getTemplate(final ClassId classId)
  261. {
  262. return getTemplate(classId.getId());
  263. }
  264.  
  265. public L2PcTemplate getTemplate(final int classId)
  266. {
  267. final int key = classId;
  268.  
  269. return _templates.get(key);
  270. }
  271.  
  272. public static final String getClassNameById(final int classId)
  273. {
  274. return CHAR_CLASSES[classId];
  275. }
  276.  
  277. public static final int getClassIdByName(final String className)
  278. {
  279. int currId = 1;
  280.  
  281. for (final String name : CHAR_CLASSES)
  282. {
  283. if (name.equalsIgnoreCase(className))
  284. {
  285. break;
  286. }
  287.  
  288. currId++;
  289. }
  290.  
  291. return currId;
  292. }
  293.  
  294. // public L2CharTemplate[] getAllTemplates()
  295. // {
  296. // return _templates.values().toArray(new L2CharTemplate[_templates.size()]);
  297. // }
  298. }
  299.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement