FlyingFinalForm.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. public class FlyingFinalForm extends L2Transformation
  6. {
  7. private static final int[] SKILLS = {932,950,951,953,1544,1545,619};
  8. public FlyingFinalForm()
  9. {
  10. // id, colRadius, colHeight
  11. super(260, 9, 38);
  12. }
  13. @Override
  14. public void onTransform()
  15. {
  16. if (getPlayer().getTransformationId() != 260 || getPlayer().isCursedWeaponEquipped())
  17. return;
  18. getPlayer().setIsFlyingMounted(true);
  19. transformedSkills();
  20. }
  21. public void transformedSkills()
  22. {
  23. // Life to Soul
  24. getPlayer().addSkill(SkillTable.getInstance().getInfo(953, 1), false);
  25. // Soul Sucking
  26. getPlayer().addSkill(SkillTable.getInstance().getInfo(1545, 1), false);
  27. int lvl = getPlayer().getLevel() -78;
  28. if (lvl > 0)
  29. {
  30. // Nail Attack (up to 7 levels)
  31. getPlayer().addSkill(SkillTable.getInstance().getInfo(950, lvl), false);
  32. // Wing Assault (up to 7 levels)
  33. getPlayer().addSkill(SkillTable.getInstance().getInfo(951, lvl), false);
  34. // Death Beam (up to 7 levels)
  35. getPlayer().addSkill(SkillTable.getInstance().getInfo(1544, lvl), false);
  36. }
  37. // Transform Dispel
  38. getPlayer().addSkill(SkillTable.getInstance().getInfo(619, 1), false);
  39. getPlayer().setTransformAllowedSkills(SKILLS);
  40. }
  41. @Override
  42. public void onUntransform()
  43. {
  44. getPlayer().setIsFlyingMounted(false);
  45. removeSkills();
  46. }
  47. public void removeSkills()
  48. {
  49. // Life to Soul
  50. getPlayer().removeSkill(SkillTable.getInstance().getInfo(953, 1), false);
  51. // Soul Sucking
  52. getPlayer().removeSkill(SkillTable.getInstance().getInfo(1545, 1), false);
  53. int lvl = getPlayer().getLevel() -78;
  54. if (lvl > 0)
  55. {
  56. // Nail Attack (up to 7 levels)
  57. getPlayer().removeSkill(SkillTable.getInstance().getInfo(950, lvl), false);
  58. // Wing Assault (up to 7 levels)
  59. getPlayer().removeSkill(SkillTable.getInstance().getInfo(951, lvl), false);
  60. // Death Beam (up to 7 levels)
  61. getPlayer().removeSkill(SkillTable.getInstance().getInfo(1544, lvl), false);
  62. }
  63. // Transform Dispel
  64. getPlayer().removeSkill(SkillTable.getInstance().getInfo(619, 1), false);
  65. getPlayer().setTransformAllowedSkills(EMPTY_ARRAY);
  66. }
  67. public static void main(String[] args)
  68. {
  69. TransformationManager.getInstance().registerTransformation(new FlyingFinalForm());
  70. }
  71. }