MyoRace.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package transformations;
  2. import com.l2jserver.gameserver.datatables.SkillTable;
  3. import com.l2jserver.gameserver.instancemanager.TransformationManager;
  4. import com.l2jserver.gameserver.model.L2Transformation;
  5. /*
  6. * TODO: Skill levels. How do they work? Transformation is given at level 83, there are 6 levels of the skill. How are they assigned? Based on player level somehow? Based on servitor?
  7. */
  8. public class MyoRace extends L2Transformation
  9. {
  10. private static final int[] SKILLS = {896,897,898,899,900,5491,619};
  11. public MyoRace()
  12. {
  13. // id, colRadius, colHeight
  14. super(219, 10, 23);
  15. }
  16. @Override
  17. public void onTransform()
  18. {
  19. if (getPlayer().getTransformationId() != 219 || getPlayer().isCursedWeaponEquipped())
  20. return;
  21. if (getPlayer().getPet() != null)
  22. getPlayer().getPet().unSummon(getPlayer());
  23. transformedSkills();
  24. }
  25. public void transformedSkills()
  26. {
  27. // Rolling Step (up to 6 levels)
  28. getPlayer().addSkill(SkillTable.getInstance().getInfo(896, 4), false);
  29. // Double Blast (up to 6 levels)
  30. getPlayer().addSkill(SkillTable.getInstance().getInfo(897, 4), false);
  31. // Tornado Slash (up to 6 levels)
  32. getPlayer().addSkill(SkillTable.getInstance().getInfo(898, 4), false);
  33. // Cat Roar (up to 6 levels)
  34. getPlayer().addSkill(SkillTable.getInstance().getInfo(899, 4), false);
  35. // Energy Blast (up to 6)
  36. getPlayer().addSkill(SkillTable.getInstance().getInfo(900, 4), false);
  37. // Decrease Bow/Crossbow Attack Speed
  38. getPlayer().addSkill(SkillTable.getInstance().getInfo(5491, 1), false);
  39. // Transform Dispel
  40. getPlayer().addSkill(SkillTable.getInstance().getInfo(619, 1), false);
  41. getPlayer().setTransformAllowedSkills(SKILLS);
  42. }
  43. @Override
  44. public void onUntransform()
  45. {
  46. removeSkills();
  47. }
  48. public void removeSkills()
  49. {
  50. // Rolling Step (up to 6 levels)
  51. getPlayer().removeSkill(SkillTable.getInstance().getInfo(896, 4), false);
  52. // Double Blast (up to 6 levels)
  53. getPlayer().removeSkill(SkillTable.getInstance().getInfo(897, 4), false);
  54. // Tornado Slash (up to 6 levels)
  55. getPlayer().removeSkill(SkillTable.getInstance().getInfo(898, 4), false);
  56. // Cat Roar (up to 6 levels)
  57. getPlayer().removeSkill(SkillTable.getInstance().getInfo(899, 4), false);
  58. // Energy Blast (up to 6)
  59. getPlayer().removeSkill(SkillTable.getInstance().getInfo(900, 4), false);
  60. // Decrease Bow/Crossbow Attack Speed
  61. getPlayer().removeSkill(SkillTable.getInstance().getInfo(5491, 1), false);
  62. // Transform Dispel
  63. getPlayer().removeSkill(SkillTable.getInstance().getInfo(619, 1), false);
  64. getPlayer().setTransformAllowedSkills(EMPTY_ARRAY);
  65. }
  66. public static void main(String[] args)
  67. {
  68. TransformationManager.getInstance().registerTransformation(new MyoRace());
  69. }
  70. }