Acrobatics.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.gmail.nossr50.skills;
  2. import org.bukkit.ChatColor;
  3. import org.bukkit.entity.Player;
  4. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  5. import org.bukkit.event.entity.EntityDamageEvent;
  6. import com.gmail.nossr50.Users;
  7. import com.gmail.nossr50.mcPermissions;
  8. import com.gmail.nossr50.config.LoadProperties;
  9. import com.gmail.nossr50.datatypes.PlayerProfile;
  10. import com.gmail.nossr50.datatypes.SkillType;
  11. public class Acrobatics {
  12. public static void acrobaticsCheck(Player player, EntityDamageEvent event)
  13. {
  14. if(player != null && mcPermissions.getInstance().acrobatics(player))
  15. {
  16. PlayerProfile PP = Users.getProfile(player);
  17. int acrovar = PP.getSkillLevel(SkillType.ACROBATICS);
  18. if(player.isSneaking())
  19. acrovar = acrovar * 2;
  20. if(Math.random() * 1000 <= acrovar && !event.isCancelled())
  21. {
  22. int threshold = 7;
  23. if(player.isSneaking())
  24. threshold = 14;
  25. int newDamage = event.getDamage() - threshold;
  26. if(newDamage < 0)
  27. newDamage = 0;
  28. /*
  29. * Check for death
  30. */
  31. if(player.getHealth() - newDamage >= 1){
  32. if(!event.isCancelled())
  33. PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 8) * LoadProperties.xpGainMultiplier);
  34. Skills.XpCheckSkill(SkillType.ACROBATICS, player);
  35. event.setDamage(newDamage);
  36. if(event.getDamage() <= 0)
  37. event.setCancelled(true);
  38. if(player.isSneaking()){
  39. player.sendMessage(ChatColor.GREEN+"**GRACEFUL ROLL**");
  40. } else {
  41. player.sendMessage("**ROLL**");
  42. }
  43. }
  44. } else if (!event.isCancelled()){
  45. if(player.getHealth() - event.getDamage() >= 1){
  46. PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 12) * LoadProperties.xpGainMultiplier);
  47. Skills.XpCheckSkill(SkillType.ACROBATICS, player);
  48. }
  49. }
  50. }
  51. }
  52. public static void dodgeChecks(EntityDamageByEntityEvent event){
  53. Player defender = (Player) event.getEntity();
  54. PlayerProfile PPd = Users.getProfile(defender);
  55. if(mcPermissions.getInstance().acrobatics(defender)){
  56. if(PPd.getSkillLevel(SkillType.ACROBATICS) <= 800){
  57. if(Math.random() * 4000 <= PPd.getSkillLevel(SkillType.ACROBATICS)){
  58. defender.sendMessage(ChatColor.GREEN+"**DODGE**");
  59. if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
  60. PPd.addXP(SkillType.ACROBATICS, event.getDamage() * 12);
  61. Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
  62. }
  63. event.setDamage(event.getDamage() / 2);
  64. //Needs to do minimal damage
  65. if(event.getDamage() <= 0)
  66. event.setDamage(1);
  67. }
  68. } else if(Math.random() * 4000 <= 800) {
  69. defender.sendMessage(ChatColor.GREEN+"**DODGE**");
  70. if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
  71. PPd.addXP(SkillType.ACROBATICS, event.getDamage() * 12);
  72. Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
  73. }
  74. event.setDamage(event.getDamage() / 2);
  75. //Needs to deal minimal damage
  76. if(event.getDamage() <= 0)
  77. event.setDamage(1);
  78. }
  79. }
  80. }
  81. }