DemonRace.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 DemonRace extends L2Transformation
  9. {
  10. private static final int[] SKILLS = {901,902,903,904,905,5491,619};
  11. public DemonRace()
  12. {
  13. // id, colRadius, colHeight
  14. super(221, 11, 27);
  15. }
  16. @Override
  17. public void onTransform()
  18. {
  19. if (getPlayer().getTransformationId() != 221 || getPlayer().isCursedWeaponEquipped())
  20. return;
  21. if (getPlayer().getPet() != null)
  22. getPlayer().getPet().unSummon(getPlayer());
  23. transformedSkills();
  24. }
  25. public void transformedSkills()
  26. {
  27. // Dark Strike (up to 6)
  28. getPlayer().addSkill(SkillTable.getInstance().getInfo(901, 4), false);
  29. // Bursting Flame (up to 6)
  30. getPlayer().addSkill(SkillTable.getInstance().getInfo(902, 4), false);
  31. // Stratum Explosion (up to 6)
  32. getPlayer().addSkill(SkillTable.getInstance().getInfo(903, 4), false);
  33. // Corpse Burst (up to 6)
  34. getPlayer().addSkill(SkillTable.getInstance().getInfo(904, 4), false);
  35. // Dark Detonation (up to 6)
  36. getPlayer().addSkill(SkillTable.getInstance().getInfo(905, 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. // Dark Strike
  51. getPlayer().removeSkill(SkillTable.getInstance().getInfo(901, 4), false);
  52. // Bursting Flame
  53. getPlayer().removeSkill(SkillTable.getInstance().getInfo(902, 4), false);
  54. // Stratum Explosion
  55. getPlayer().removeSkill(SkillTable.getInstance().getInfo(903, 4), false);
  56. // Corpse Burst
  57. getPlayer().removeSkill(SkillTable.getInstance().getInfo(904, 4), false);
  58. // Dark Detonation
  59. getPlayer().removeSkill(SkillTable.getInstance().getInfo(905, 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 DemonRace());
  69. }
  70. }