Advertisement
psygrammator

Voice ClassMaster Mobius

Dec 18th, 2023
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 36.20 KB | Source Code | 0 0
  1. Subject: [PATCH] Voice ClassMaster
  2. ---
  3. Index: java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java
  4. IDEA additional info:
  5. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  6. <+>UTF-8
  7. ===================================================================
  8. diff --git a/java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java b/java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java
  9. --- a/java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java   (revision 505fd64726727065d765586defd79c4a2b928167)
  10. +++ b/java/org/l2jmobius/gameserver/handler/VoicedCommandHandler.java   (revision f748d24dadb2395a1cb94567ab19077b7eaa7292)
  11. @@ -86,6 +86,7 @@
  12.         }
  13.  
  14.         registerVoicedCommandHandler(new DressMe());
  15. +       registerVoicedCommandHandler(new VoiceClassMaster());
  16.  
  17.         LOGGER.info("VoicedCommandHandler: Loaded " + _datatable.size() + " handlers.");
  18.     }
  19. Index: java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/VoiceClassMaster.java
  20. IDEA additional info:
  21. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  22. <+>UTF-8
  23. ===================================================================
  24. diff --git a/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/VoiceClassMaster.java b/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/VoiceClassMaster.java
  25. new file mode 100644
  26. --- /dev/null   (revision f748d24dadb2395a1cb94567ab19077b7eaa7292)
  27. +++ b/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/VoiceClassMaster.java (revision f748d24dadb2395a1cb94567ab19077b7eaa7292)
  28. @@ -0,0 +1,640 @@
  29. +package org.l2jmobius.gameserver.handler.voicedcommandhandlers;
  30. +
  31. +import org.l2jmobius.Config;
  32. +import org.l2jmobius.gameserver.communitybbs.Manager.BaseBBSManager;
  33. +import org.l2jmobius.gameserver.data.ItemTable;
  34. +import org.l2jmobius.gameserver.data.xml.PlayerTemplateData;
  35. +import org.l2jmobius.gameserver.enums.ClassId;
  36. +import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
  37. +import org.l2jmobius.gameserver.model.actor.Player;
  38. +import org.l2jmobius.gameserver.model.item.instance.Item;
  39. +import org.l2jmobius.gameserver.model.quest.Quest;
  40. +import org.l2jmobius.gameserver.network.SystemMessageId;
  41. +
  42. +/**
  43. + * Created by psygrammator
  44. + * group jsoft.top
  45. + */
  46. +public class VoiceClassMaster implements IVoicedCommandHandler {
  47. +    private static final String[] VOICED_COMMANDS =
  48. +    {
  49. +            "classmaster",
  50. +            "cm",
  51. +            "1stClass",
  52. +            "2ndClass",
  53. +            "3rdClass",
  54. +            "baseClass",
  55. +            "change_class",
  56. +            "upgrade_hatchling",
  57. +    };
  58. +
  59. +    @Override
  60. +    public boolean useVoicedCommand(String command, Player player, String target) {
  61. +        if(command.equalsIgnoreCase("classmaster") || command.equalsIgnoreCase("cm"))
  62. +        {
  63. +            show(player);
  64. +        }
  65. +        else if (command.startsWith("1stClass"))
  66. +        {
  67. +            if (player.isGM())
  68. +            {
  69. +                showChatWindow1st(player);
  70. +            }
  71. +        }
  72. +        else if (command.startsWith("2ndClass"))
  73. +        {
  74. +            if (player.isGM())
  75. +            {
  76. +                showChatWindow2nd(player);
  77. +            }
  78. +        }
  79. +        else if (command.startsWith("3rdClass"))
  80. +        {
  81. +            if (player.isGM())
  82. +            {
  83. +                showChatWindow3rd(player);
  84. +            }
  85. +        }
  86. +        else if (command.startsWith("baseClass"))
  87. +        {
  88. +            if (player.isGM())
  89. +            {
  90. +                showChatWindowBase(player);
  91. +            }
  92. +        }
  93. +        else if (command.startsWith("change_class"))
  94. +        {
  95. +            final int val = Integer.parseInt(target);
  96. +
  97. +            // Exploit prevention
  98. +            final ClassId classId = player.getClassId();
  99. +            final int level = player.getLevel();
  100. +            int jobLevel = 0;
  101. +            int newJobLevel = 0;
  102. +            player.setTarget(player);
  103. +
  104. +            final int lvlnow = classId.level();
  105. +            if (player.isGM())
  106. +            {
  107. +                changeClass(player, val);
  108. +                player.rewardSkills();
  109. +
  110. +                if (val >= 88)
  111. +                {
  112. +                    player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_THE_THIRD_CLASS_TRANSFER_QUEST); // system sound 3rd occupation
  113. +                }
  114. +                else
  115. +                {
  116. +                    player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_A_CLASS_TRANSFER); // system sound for 1st and 2nd occupation
  117. +                }
  118. +
  119. +                final StringBuilder sb = new StringBuilder();
  120. +                sb.append("<html><body><center><img src=L2Font-e.replay_logo-e width=258 height=60><br><br><br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><br>");
  121. +                sb.append("You have now become a <font color=\"LEVEL\">" + PlayerTemplateData.getInstance().getClassNameById(player.getClassId().getId()) + "</font>.");
  122. +                sb.append("<br><img src=L2UI_CH3.herotower_deco width=256 height=32></center></body></html>");
  123. +                BaseBBSManager.separateAndSend(sb.toString(), player);
  124. +                return true;
  125. +            }
  126. +            switch (lvlnow)
  127. +            {
  128. +                case 0:
  129. +                {
  130. +                    jobLevel = 1;
  131. +                    break;
  132. +                }
  133. +                case 1:
  134. +                {
  135. +                    jobLevel = 2;
  136. +                    break;
  137. +                }
  138. +                case 2:
  139. +                {
  140. +                    jobLevel = 3;
  141. +                    break;
  142. +                }
  143. +                default:
  144. +                {
  145. +                    jobLevel = 4;
  146. +                }
  147. +            }
  148. +
  149. +            if (jobLevel == 4)
  150. +            {
  151. +                return false; // no more job changes
  152. +            }
  153. +
  154. +            final int lvlnext = ClassId.getClassId(val).level();
  155. +            switch (lvlnext)
  156. +            {
  157. +                case 0:
  158. +                {
  159. +                    newJobLevel = 1;
  160. +                    break;
  161. +                }
  162. +                case 1:
  163. +                {
  164. +                    newJobLevel = 2;
  165. +                    break;
  166. +                }
  167. +                case 2:
  168. +                {
  169. +                    newJobLevel = 3;
  170. +                    break;
  171. +                }
  172. +                default:
  173. +                {
  174. +                    newJobLevel = 4;
  175. +                }
  176. +            }
  177. +
  178. +            // prevents changing between same level jobs
  179. +            if (newJobLevel != (jobLevel + 1))
  180. +            {
  181. +                return true;
  182. +            }
  183. +
  184. +            if ((level < 20) && (newJobLevel > 1))
  185. +            {
  186. +                return true;
  187. +            }
  188. +            if ((level < 40) && (newJobLevel > 2))
  189. +            {
  190. +                return true;
  191. +            }
  192. +            if ((level < 76) && (newJobLevel > 3))
  193. +            {
  194. +                return true;
  195. +                // -- prevention ends
  196. +            }
  197. +
  198. +            if ((newJobLevel == 2) && !Config.ALLOW_CLASS_MASTERS_FIRST_CLASS)
  199. +            {
  200. +                return true;
  201. +            }
  202. +
  203. +            if ((newJobLevel == 3) && !Config.ALLOW_CLASS_MASTERS_SECOND_CLASS)
  204. +            {
  205. +                return true;
  206. +            }
  207. +
  208. +            if ((newJobLevel == 4) && !Config.ALLOW_CLASS_MASTERS_THIRD_CLASS)
  209. +            {
  210. +                return true;
  211. +            }
  212. +
  213. +            // check if player have all required items for class transfer
  214. +            for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(jobLevel).keySet())
  215. +            {
  216. +                final int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(jobLevel).get(_itemId);
  217. +                if (player.getInventory().getInventoryItemCount(_itemId, -1) < _count)
  218. +                {
  219. +                    player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
  220. +                    return true;
  221. +                }
  222. +            }
  223. +
  224. +            // get all required items for class transfer
  225. +            for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(jobLevel).keySet())
  226. +            {
  227. +                final int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(jobLevel).get(_itemId);
  228. +                player.destroyItemByItemId("ClassMaster", _itemId, _count, player, true);
  229. +            }
  230. +
  231. +            // reward player with items
  232. +            for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRewardItems(jobLevel).keySet())
  233. +            {
  234. +                final int _count = Config.CLASS_MASTER_SETTINGS.getRewardItems(jobLevel).get(_itemId);
  235. +                player.addItem("ClassMaster", _itemId, _count, player, true);
  236. +            }
  237. +
  238. +            changeClass(player, val);
  239. +            player.rewardSkills();
  240. +
  241. +            // Check player skills
  242. +            if (Config.CHECK_SKILLS_ON_ENTER && !Config.ALT_GAME_SKILL_LEARN)
  243. +            {
  244. +                player.checkAllowedSkills();
  245. +            }
  246. +
  247. +            if (val >= 88)
  248. +            {
  249. +                player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_THE_THIRD_CLASS_TRANSFER_QUEST); // system sound 3rd occupation
  250. +            }
  251. +            else
  252. +            {
  253. +                player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_A_CLASS_TRANSFER); // system sound for 1st and 2nd occupation
  254. +            }
  255. +
  256. +            final StringBuilder sb = new StringBuilder();
  257. +            sb.append("<html><body><center><img src=L2Font-e.replay_logo-e width=258 height=60><br><br><br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><br>");
  258. +            sb.append("You have now become a <font color=\"LEVEL\">" + PlayerTemplateData.getInstance().getClassNameById(player.getClassId().getId()) + "</font>.");
  259. +            sb.append("<br><img src=L2UI_CH3.herotower_deco width=256 height=32></center></body></html>");
  260. +            BaseBBSManager.separateAndSend(sb.toString(), player);
  261. +        }
  262. +        else if (command.startsWith("upgrade_hatchling") && Config.CLASS_MASTER_STRIDER_UPDATE)
  263. +        {
  264. +            boolean canUpgrade = false;
  265. +            if (player.getPet() != null)
  266. +            {
  267. +                if ((player.getPet().getNpcId() == 12311) || (player.getPet().getNpcId() == 12312) || (player.getPet().getNpcId() == 12313))
  268. +                {
  269. +                    if (player.getPet().getLevel() >= 55)
  270. +                    {
  271. +                        canUpgrade = true;
  272. +                    }
  273. +                    else
  274. +                    {
  275. +                        player.sendMessage("The level of your hatchling is too low to be upgraded.");
  276. +                    }
  277. +                }
  278. +                else
  279. +                {
  280. +                    player.sendMessage("You have to summon your hatchling.");
  281. +                }
  282. +            }
  283. +            else
  284. +            {
  285. +                player.sendMessage("You have to summon your hatchling if you want to upgrade him.");
  286. +            }
  287. +
  288. +            if (!canUpgrade)
  289. +            {
  290. +                return true;
  291. +            }
  292. +
  293. +            final int[] hatchCollar =
  294. +                    {
  295. +                            3500,
  296. +                            3501,
  297. +                            3502
  298. +                    };
  299. +            final int[] striderCollar =
  300. +                    {
  301. +                            4422,
  302. +                            4423,
  303. +                            4424
  304. +                    };
  305. +
  306. +            for (int i = 0; i < 3; i++)
  307. +            {
  308. +                final Item collar = player.getInventory().getItemByItemId(hatchCollar[i]);
  309. +                if (collar != null)
  310. +                {
  311. +                    // Unsummon the hatchling
  312. +                    player.getPet().unSummon(player);
  313. +                    player.destroyItem("ClassMaster", collar, player, true);
  314. +                    player.addItem("ClassMaster", striderCollar[i], 1, player, true);
  315. +                    return true;
  316. +                }
  317. +            }
  318. +        }
  319. +        return true;
  320. +    }
  321. +
  322. +    /**
  323. +     * Show chat window choose class.
  324. +     * @param player the player
  325. +     */
  326. +    private void showChatWindowChooseClass(Player player)
  327. +    {
  328. +        final StringBuilder sb = new StringBuilder();
  329. +        sb.append("<html>");
  330. +        sb.append("<body>");
  331. +        sb.append("<table width=200>");
  332. +        sb.append("<tr><td><center>GM Class Master:</center></td></tr>");
  333. +        sb.append("<tr><td><br></td></tr>");
  334. +        sb.append("<tr><td><a action=\"bypass voice .baseClass\">Base Classes.</a></td></tr>");
  335. +        sb.append("<tr><td><a action=\"bypass voice .1stClass\">1st Classes.</a></td></tr>");
  336. +        sb.append("<tr><td><a action=\"bypass voice .2ndClass\">2nd Classes.</a></td></tr>");
  337. +        sb.append("<tr><td><a action=\"bypass voice .3rdClass\">3rd Classes.</a></td></tr>");
  338. +        sb.append("<tr><td><br></td></tr>");
  339. +        sb.append("</table>");
  340. +        sb.append("</body>");
  341. +        sb.append("</html>");
  342. +        BaseBBSManager.separateAndSend(sb.toString(), player);
  343. +    }
  344. +
  345. +    /**
  346. +     * Show chat window1st.
  347. +     * @param player the player
  348. +     */
  349. +    private void showChatWindow1st(Player player)
  350. +    {
  351. +        final StringBuilder sb = new StringBuilder();
  352. +        sb.append("<html>");
  353. +        sb.append("<body>");
  354. +        sb.append("<table width=200>");
  355. +        sb.append("<tr><td><center>GM Class Master:</center></td></tr>");
  356. +        sb.append("<tr><td><br></td></tr>");
  357. +        sb.append("<tr><td><a action=\"bypass voice .change_class 1\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(1) + "</a></td></tr>");
  358. +        sb.append("<tr><td><a action=\"bypass voice .change_class 4\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(4) + "</a></td></tr>");
  359. +        sb.append("<tr><td><a action=\"bypass voice .change_class 7\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(7) + "</a></td></tr>");
  360. +        sb.append("<tr><td><a action=\"bypass voice .change_class 11\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(11) + "</a></td></tr>");
  361. +        sb.append("<tr><td><a action=\"bypass voice .change_class 15\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(15) + "</a></td></tr>");
  362. +        sb.append("<tr><td><a action=\"bypass voice .change_class 19\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(19) + "</a></td></tr>");
  363. +        sb.append("<tr><td><a action=\"bypass voice .change_class 22\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(22) + "</a></td></tr>");
  364. +        sb.append("<tr><td><a action=\"bypass voice .change_class 26\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(26) + "</a></td></tr>");
  365. +        sb.append("<tr><td><a action=\"bypass voice .change_class 29\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(29) + "</a></td></tr>");
  366. +        sb.append("<tr><td><a action=\"bypass voice .change_class 32\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(32) + "</a></td></tr>");
  367. +        sb.append("<tr><td><a action=\"bypass voice .change_class 35\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(35) + "</a></td></tr>");
  368. +        sb.append("<tr><td><a action=\"bypass voice .change_class 39\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(39) + "</a></td></tr>");
  369. +        sb.append("<tr><td><a action=\"bypass voice .change_class 42\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(42) + "</a></td></tr>");
  370. +        sb.append("<tr><td><a action=\"bypass voice .change_class 45\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(45) + "</a></td></tr>");
  371. +        sb.append("<tr><td><a action=\"bypass voice .change_class 47\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(47) + "</a></td></tr>");
  372. +        sb.append("<tr><td><a action=\"bypass voice .change_class 50\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(50) + "</a></td></tr>");
  373. +        sb.append("<tr><td><a action=\"bypass voice .change_class 54\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(54) + "</a></td></tr>");
  374. +        sb.append("<tr><td><a action=\"bypass voice .change_class 56\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(56) + "</a></td></tr>");
  375. +        sb.append("</table>");
  376. +        sb.append("</body>");
  377. +        sb.append("</html>");
  378. +        BaseBBSManager.separateAndSend(sb.toString(), player);
  379. +    }
  380. +
  381. +    /**
  382. +     * Show chat window2nd.
  383. +     * @param player the player
  384. +     */
  385. +    private void showChatWindow2nd(Player player)
  386. +    {
  387. +        final StringBuilder sb = new StringBuilder();
  388. +        sb.append("<html>");
  389. +        sb.append("<body>");
  390. +        sb.append("<table width=200>");
  391. +        sb.append("<tr><td><center>GM Class Master:</center></td></tr>");
  392. +        sb.append("<tr><td><br></td></tr>");
  393. +        sb.append("<tr><td><a action=\"bypass voice .change_class 2\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(2) + "</a></td></tr>");
  394. +        sb.append("<tr><td><a action=\"bypass voice .change_class 3\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(3) + "</a></td></tr>");
  395. +        sb.append("<tr><td><a action=\"bypass voice .change_class 5\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(5) + "</a></td></tr>");
  396. +        sb.append("<tr><td><a action=\"bypass voice .change_class 6\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(6) + "</a></td></tr>");
  397. +        sb.append("<tr><td><a action=\"bypass voice .change_class 8\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(8) + "</a></td></tr>");
  398. +        sb.append("<tr><td><a action=\"bypass voice .change_class 9\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(9) + "</a></td></tr>");
  399. +        sb.append("<tr><td><a action=\"bypass voice .change_class 12\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(12) + "</a></td></tr>");
  400. +        sb.append("<tr><td><a action=\"bypass voice .change_class 13\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(13) + "</a></td></tr>");
  401. +        sb.append("<tr><td><a action=\"bypass voice .change_class 14\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(14) + "</a></td></tr>");
  402. +        sb.append("<tr><td><a action=\"bypass voice .change_class 16\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(16) + "</a></td></tr>");
  403. +        sb.append("<tr><td><a action=\"bypass voice .change_class 17\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(17) + "</a></td></tr>");
  404. +        sb.append("<tr><td><a action=\"bypass voice .change_class 20\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(20) + "</a></td></tr>");
  405. +        sb.append("<tr><td><a action=\"bypass voice .change_class 21\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(21) + "</a></td></tr>");
  406. +        sb.append("<tr><td><a action=\"bypass voice .change_class 23\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(23) + "</a></td></tr>");
  407. +        sb.append("<tr><td><a action=\"bypass voice .change_class 24\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(24) + "</a></td></tr>");
  408. +        sb.append("<tr><td><a action=\"bypass voice .change_class 27\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(27) + "</a></td></tr>");
  409. +        sb.append("<tr><td><a action=\"bypass voice .change_class 28\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(28) + "</a></td></tr>");
  410. +        sb.append("<tr><td><a action=\"bypass voice .change_class 30\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(30) + "</a></td></tr>");
  411. +        sb.append("<tr><td><a action=\"bypass voice .change_class 33\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(33) + "</a></td></tr>");
  412. +        sb.append("<tr><td><a action=\"bypass voice .change_class 34\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(34) + "</a></td></tr>");
  413. +        sb.append("<tr><td><a action=\"bypass voice .change_class 36\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(36) + "</a></td></tr>");
  414. +        sb.append("<tr><td><a action=\"bypass voice .change_class 37\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(37) + "</a></td></tr>");
  415. +        sb.append("<tr><td><a action=\"bypass voice .change_class 40\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(40) + "</a></td></tr>");
  416. +        sb.append("<tr><td><a action=\"bypass voice .change_class 41\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(41) + "</a></td></tr>");
  417. +        sb.append("<tr><td><a action=\"bypass voice .change_class 43\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(43) + "</a></td></tr>");
  418. +        sb.append("<tr><td><a action=\"bypass voice .change_class 46\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(46) + "</a></td></tr>");
  419. +        sb.append("<tr><td><a action=\"bypass voice .change_class 48\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(48) + "</a></td></tr>");
  420. +        sb.append("<tr><td><a action=\"bypass voice .change_class 51\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(51) + "</a></td></tr>");
  421. +        sb.append("<tr><td><a action=\"bypass voice .change_class 52\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(52) + "</a></td></tr>");
  422. +        sb.append("<tr><td><a action=\"bypass voice .change_class 55\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(55) + "</a></td></tr>");
  423. +        sb.append("<tr><td><a action=\"bypass voice .change_class 57\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(57) + "</a></td></tr>");
  424. +        sb.append("</table>");
  425. +        sb.append("</body>");
  426. +        sb.append("</html>");
  427. +        BaseBBSManager.separateAndSend(sb.toString(), player);
  428. +    }
  429. +
  430. +    /**
  431. +     * Show chat window3rd.
  432. +     * @param player the player
  433. +     */
  434. +    private void showChatWindow3rd(Player player)
  435. +    {
  436. +        final StringBuilder sb = new StringBuilder();
  437. +        sb.append("<html>");
  438. +        sb.append("<body>");
  439. +        sb.append("<table width=200>");
  440. +        sb.append("<tr><td><center>GM Class Master:</center></td></tr>");
  441. +        sb.append("<tr><td><br></td></tr>");
  442. +        sb.append("<tr><td><a action=\"bypass voice .change_class 88\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(88) + "</a></td></tr>");
  443. +        sb.append("<tr><td><a action=\"bypass voice .change_class 89\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(89) + "</a></td></tr>");
  444. +        sb.append("<tr><td><a action=\"bypass voice .change_class 90\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(90) + "</a></td></tr>");
  445. +        sb.append("<tr><td><a action=\"bypass voice .change_class 91\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(91) + "</a></td></tr>");
  446. +        sb.append("<tr><td><a action=\"bypass voice .change_class 92\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(92) + "</a></td></tr>");
  447. +        sb.append("<tr><td><a action=\"bypass voice .change_class 93\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(93) + "</a></td></tr>");
  448. +        sb.append("<tr><td><a action=\"bypass voice .change_class 94\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(94) + "</a></td></tr>");
  449. +        sb.append("<tr><td><a action=\"bypass voice .change_class 95\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(95) + "</a></td></tr>");
  450. +        sb.append("<tr><td><a action=\"bypass voice .change_class 96\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(96) + "</a></td></tr>");
  451. +        sb.append("<tr><td><a action=\"bypass voice .change_class 97\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(97) + "</a></td></tr>");
  452. +        sb.append("<tr><td><a action=\"bypass voice .change_class 98\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(98) + "</a></td></tr>");
  453. +        sb.append("<tr><td><a action=\"bypass voice .change_class 99\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(99) + "</a></td></tr>");
  454. +        sb.append("<tr><td><a action=\"bypass voice .change_class 100\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(100) + "</a></td></tr>");
  455. +        sb.append("<tr><td><a action=\"bypass voice .change_class 101\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(101) + "</a></td></tr>");
  456. +        sb.append("<tr><td><a action=\"bypass voice .change_class 102\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(102) + "</a></td></tr>");
  457. +        sb.append("<tr><td><a action=\"bypass voice .change_class 103\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(103) + "</a></td></tr>");
  458. +        sb.append("<tr><td><a action=\"bypass voice .change_class 104\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(104) + "</a></td></tr>");
  459. +        sb.append("<tr><td><a action=\"bypass voice .change_class 105\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(105) + "</a></td></tr>");
  460. +        sb.append("<tr><td><a action=\"bypass voice .change_class 106\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(106) + "</a></td></tr>");
  461. +        sb.append("<tr><td><a action=\"bypass voice .change_class 107\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(107) + "</a></td></tr>");
  462. +        sb.append("<tr><td><a action=\"bypass voice .change_class 108\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(108) + "</a></td></tr>");
  463. +        sb.append("<tr><td><a action=\"bypass voice .change_class 109\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(109) + "</a></td></tr>");
  464. +        sb.append("<tr><td><a action=\"bypass voice .change_class 110\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(110) + "</a></td></tr>");
  465. +        sb.append("<tr><td><a action=\"bypass voice .change_class 111\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(111) + "</a></td></tr>");
  466. +        sb.append("<tr><td><a action=\"bypass voice .change_class 112\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(112) + "</a></td></tr>");
  467. +        sb.append("<tr><td><a action=\"bypass voice .change_class 113\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(113) + "</a></td></tr>");
  468. +        sb.append("<tr><td><a action=\"bypass voice .change_class 114\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(114) + "</a></td></tr>");
  469. +        sb.append("<tr><td><a action=\"bypass voice .change_class 115\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(115) + "</a></td></tr>");
  470. +        sb.append("<tr><td><a action=\"bypass voice .change_class 116\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(116) + "</a></td></tr>");
  471. +        sb.append("<tr><td><a action=\"bypass voice .change_class 117\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(117) + "</a></td></tr>");
  472. +        sb.append("<tr><td><a action=\"bypass voice .change_class 118\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(118) + "</a></td></tr>");
  473. +        sb.append("</table>");
  474. +        sb.append("</body>");
  475. +        sb.append("</html>");
  476. +        BaseBBSManager.separateAndSend(sb.toString(), player);
  477. +    }
  478. +
  479. +    /**
  480. +     * Show chat window base.
  481. +     * @param player the player
  482. +     */
  483. +    private void showChatWindowBase(Player player)
  484. +    {
  485. +        final StringBuilder sb = new StringBuilder();
  486. +        sb.append("<html>");
  487. +        sb.append("<body>");
  488. +        sb.append("<table width=200>");
  489. +        sb.append("<tr><td><center>GM Class Master:</center></td></tr>");
  490. +        sb.append("<tr><td><br></td></tr>");
  491. +        sb.append("<tr><td><a action=\"bypass voice .change_class 0\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(0) + "</a></td></tr>");
  492. +        sb.append("<tr><td><a action=\"bypass voice .change_class 10\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(10) + "</a></td></tr>");
  493. +        sb.append("<tr><td><a action=\"bypass voice .change_class 18\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(18) + "</a></td></tr>");
  494. +        sb.append("<tr><td><a action=\"bypass voice .change_class 25\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(25) + "</a></td></tr>");
  495. +        sb.append("<tr><td><a action=\"bypass voice .change_class 31\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(31) + "</a></td></tr>");
  496. +        sb.append("<tr><td><a action=\"bypass voice .change_class 38\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(38) + "</a></td></tr>");
  497. +        sb.append("<tr><td><a action=\"bypass voice .change_class 44\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(44) + "</a></td></tr>");
  498. +        sb.append("<tr><td><a action=\"bypass voice .change_class 49\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(49) + "</a></td></tr>");
  499. +        sb.append("<tr><td><a action=\"bypass voice .change_class 53\">Advance to " + PlayerTemplateData.getInstance().getClassNameById(53) + "</a></td></tr>");
  500. +        sb.append("</table>");
  501. +        sb.append("</body>");
  502. +        sb.append("</html>");
  503. +        BaseBBSManager.separateAndSend(sb.toString(), player);
  504. +    }
  505. +
  506. +    /**
  507. +     * Change class.
  508. +     * @param player the player
  509. +     * @param value the value
  510. +     */
  511. +    private void changeClass(Player player, int value)
  512. +    {
  513. +        player.setClassId(value);
  514. +
  515. +        if (player.isSubClassActive())
  516. +        {
  517. +            player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass());
  518. +        }
  519. +        else
  520. +        {
  521. +            ClassId classId = ClassId.getClassId(player.getActiveClass());
  522. +            if (classId.getParent() != null)
  523. +            {
  524. +                while (classId.level() == 0)
  525. +                {
  526. +                    classId = classId.getParent(); // go to root
  527. +                }
  528. +            }
  529. +
  530. +            player.setBaseClass(classId);
  531. +        }
  532. +
  533. +        player.broadcastUserInfo();
  534. +        player.broadcastClassIcon();
  535. +    }
  536. +
  537. +    private void show(Player player)
  538. +    {
  539. +        final ClassId classId = player.getClassId();
  540. +        int jobLevel = 0;
  541. +        final int level = player.getLevel();
  542. +        final int lvl = classId.level();
  543. +        switch (lvl)
  544. +        {
  545. +            case 0:
  546. +            {
  547. +                jobLevel = 1;
  548. +                break;
  549. +            }
  550. +            case 1:
  551. +            {
  552. +                jobLevel = 2;
  553. +                break;
  554. +            }
  555. +            case 2:
  556. +            {
  557. +                jobLevel = 3;
  558. +                break;
  559. +            }
  560. +            default:
  561. +            {
  562. +                jobLevel = 4;
  563. +            }
  564. +        }
  565. +        if (player.isAio() && !Config.ALLOW_AIO_USE_CM)
  566. +        {
  567. +            player.sendMessage("Aio Buffers Can't Speak To Class Masters.");
  568. +            return;
  569. +        }
  570. +        if (player.isGM())
  571. +        {
  572. +            showChatWindowChooseClass(player);
  573. +        }
  574. +        else if (((level >= 20) && (jobLevel == 1) && Config.ALLOW_CLASS_MASTERS_FIRST_CLASS) //
  575. +                || ((level >= 40) && (jobLevel == 2) && Config.ALLOW_CLASS_MASTERS_SECOND_CLASS) //
  576. +                || ((level >= 76) && (jobLevel == 3) && Config.ALLOW_CLASS_MASTERS_THIRD_CLASS) //
  577. +                || Config.CLASS_MASTER_STRIDER_UPDATE)
  578. +        {
  579. +            final StringBuilder sb = new StringBuilder();
  580. +            sb.append("<html><body><center><img src=L2Font-e.replay_logo-e width=258 height=60><br><br><br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><br>");
  581. +            if (((level >= 20) && (jobLevel == 1) && Config.ALLOW_CLASS_MASTERS_FIRST_CLASS) || ((level >= 40) && (jobLevel == 2) && Config.ALLOW_CLASS_MASTERS_SECOND_CLASS) || ((level >= 76) && (jobLevel == 3) && Config.ALLOW_CLASS_MASTERS_THIRD_CLASS))
  582. +            {
  583. +                sb.append("<font color=AAAAAA>Please choose from the list of classes below...</font><br><br>");
  584. +                for (ClassId child : ClassId.values())
  585. +                {
  586. +                    if (child.childOf(classId) && (child.level() == jobLevel))
  587. +                    {
  588. +                        sb.append("<br><a action=\"bypass voice .change_class " + child.getId() + "\"> " + PlayerTemplateData.getInstance().getClassNameById(child.getId()) + "</a>");
  589. +                    }
  590. +                }
  591. +
  592. +                if ((Config.CLASS_MASTER_SETTINGS.getRequireItems(jobLevel) != null) && !Config.CLASS_MASTER_SETTINGS.getRequireItems(jobLevel).isEmpty())
  593. +                {
  594. +                    sb.append("<br><br>Item(s) required for class change:");
  595. +                    sb.append("<table width=220>");
  596. +                    for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(jobLevel).keySet())
  597. +                    {
  598. +                        final int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(jobLevel).get(_itemId);
  599. +                        sb.append("<tr><td><font color=\"LEVEL\">" + _count + "</font></td><td>" + ItemTable.getInstance().getTemplate(_itemId).getName() + "</td></tr>");
  600. +                    }
  601. +                    sb.append("</table>");
  602. +                }
  603. +            }
  604. +            if (Config.CLASS_MASTER_STRIDER_UPDATE)
  605. +            {
  606. +                sb.append("<br><br><a action=\"bypass voice .upgrade_hatchling\">Upgrade Hatchling to Strider</a><br>");
  607. +            }
  608. +            sb.append("<br><img src=L2UI_CH3.herotower_deco width=256 height=32></center></body></html>");
  609. +            BaseBBSManager.separateAndSend(sb.toString(), player);
  610. +        }
  611. +        else
  612. +        {
  613. +            final StringBuilder sb = new StringBuilder();
  614. +            sb.append("<html><body><center><img src=L2Font-e.replay_logo-e width=258 height=60><br><br><br><img src=L2UI_CH3.herotower_deco width=256 height=32></center><br><br>");
  615. +            switch (jobLevel)
  616. +            {
  617. +                case 1:
  618. +                {
  619. +                    if (!Config.ALLOW_CLASS_MASTERS_FIRST_CLASS)
  620. +                    {
  621. +                        return;
  622. +                    }
  623. +                    sb.append("Come back here when you reach level 20 to change your class.<br>");
  624. +                    break;
  625. +                }
  626. +                case 2:
  627. +                {
  628. +                    if (!Config.ALLOW_CLASS_MASTERS_SECOND_CLASS)
  629. +                    {
  630. +                        return;
  631. +                    }
  632. +                    sb.append("Come back here when you reach level 40 to change your class.<br>");
  633. +                    break;
  634. +                }
  635. +                case 3:
  636. +                {
  637. +                    if (!Config.ALLOW_CLASS_MASTERS_THIRD_CLASS)
  638. +                    {
  639. +                        return;
  640. +                    }
  641. +                    sb.append("Come back here when you reach level 76 to change your class.<br>");
  642. +                    break;
  643. +                }
  644. +                case 4:
  645. +                {
  646. +                    sb.append("There are no more class changes for you.<br>");
  647. +                    break;
  648. +                }
  649. +            }
  650. +            if (Config.CLASS_MASTER_STRIDER_UPDATE)
  651. +            {
  652. +                sb.append("<br><br><a action=\"bypass voice .upgrade_hatchling\">Upgrade Hatchling to Strider</a><br>");
  653. +            }
  654. +            for (Quest q : Quest.findAllEvents())
  655. +            {
  656. +                sb.append("Event: <a action=\"bypass -h Quest " + q.getName() + "\">" + q.getDescr() + "</a><br>");
  657. +            }
  658. +            sb.append("<br><center><img src=L2UI_CH3.herotower_deco width=256 height=32></center></body></html>");
  659. +            BaseBBSManager.separateAndSend(sb.toString(), player);
  660. +        }
  661. +    }
  662. +
  663. +    @Override
  664. +    public String[] getVoicedCommandList() {
  665. +        return VOICED_COMMANDS;
  666. +    }
  667. +
  668. +}
  669.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement