Axes.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.gmail.nossr50.skills;
  2. import org.bukkit.ChatColor;
  3. import org.bukkit.entity.Animals;
  4. import org.bukkit.entity.Entity;
  5. import org.bukkit.entity.LivingEntity;
  6. import org.bukkit.entity.Monster;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.entity.Wolf;
  9. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  10. import org.bukkit.plugin.Plugin;
  11. import com.gmail.nossr50.Combat;
  12. import com.gmail.nossr50.Messages;
  13. import com.gmail.nossr50.Users;
  14. import com.gmail.nossr50.m;
  15. import com.gmail.nossr50.mcPermissions;
  16. import com.gmail.nossr50.config.LoadProperties;
  17. import com.gmail.nossr50.datatypes.PlayerProfile;
  18. import com.gmail.nossr50.party.Party;
  19. public class Axes {
  20. public static void skullSplitterCheck(Player player, Plugin pluginx){
  21. PlayerProfile PP = Users.getProfile(player);
  22. if(m.isAxes(player.getItemInHand()) && mcPermissions.getInstance().axesAbility(player)){
  23. /*
  24. * CHECK FOR AXE PREP MODE
  25. */
  26. if(PP.getAxePreparationMode()){
  27. PP.setAxePreparationMode(false);
  28. }
  29. int ticks = 2;
  30. int x = PP.getSkill("axes");
  31. while(x >= 50){
  32. x-=50;
  33. ticks++;
  34. }
  35. if(!PP.getSkullSplitterMode() && Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){
  36. player.sendMessage(Messages.getString("Skills.SkullSplitterOn"));
  37. for(Player y : pluginx.getServer().getOnlinePlayers()){
  38. if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
  39. y.sendMessage(Messages.getString("Skills.SkullSplitterPlayer", new Object[] {player.getName()}));
  40. }
  41. PP.setSkullSplitterActivatedTimeStamp(System.currentTimeMillis());
  42. PP.setSkullSplitterDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
  43. PP.setSkullSplitterMode(true);
  44. }
  45. if(!PP.getSkullSplitterMode() && !Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){
  46. player.sendMessage(Messages.getString("Skills.TooTired")
  47. +ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)+"s)");
  48. }
  49. }
  50. }
  51. public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx){
  52. Entity x = event.getEntity();
  53. if(x instanceof Wolf){
  54. Wolf wolf = (Wolf)x;
  55. if(Taming.getOwner(wolf, pluginx) != null)
  56. {
  57. if(Taming.getOwner(wolf, pluginx) == attacker)
  58. return;
  59. if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx)))
  60. return;
  61. }
  62. }
  63. PlayerProfile PPa = Users.getProfile(attacker);
  64. if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
  65. if(PPa.getSkill("axes") >= 750){
  66. if(Math.random() * 1000 <= 750){
  67. if(x instanceof Player){
  68. Player player = (Player)x;
  69. player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
  70. }
  71. if(x instanceof Player){
  72. event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
  73. } else {
  74. event.setDamage(event.getDamage() * 2);
  75. }
  76. attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
  77. }
  78. } else if(Math.random() * 1000 <= PPa.getSkill("axes")){
  79. if(x instanceof Player){
  80. Player player = (Player)x;
  81. player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
  82. }
  83. if(x instanceof Player){
  84. event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
  85. } else {
  86. event.setDamage(event.getDamage() * 2);
  87. }
  88. attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
  89. }
  90. }
  91. }
  92. public static void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx)
  93. {
  94. int targets = 0;
  95. if(event.getEntity() instanceof LivingEntity)
  96. {
  97. LivingEntity x = (LivingEntity) event.getEntity();
  98. targets = m.getTier(attacker);
  99. for(Entity derp : x.getWorld().getEntities())
  100. {
  101. if(m.getDistance(x.getLocation(), derp.getLocation()) < 5)
  102. {
  103. //Make sure the Wolf is not friendly
  104. if(derp instanceof Wolf)
  105. {
  106. Wolf hurrDurr = (Wolf)derp;
  107. if(Taming.getOwner(hurrDurr, pluginx) == attacker)
  108. continue;
  109. if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx)))
  110. continue;
  111. }
  112. //Damage nearby LivingEntities
  113. if(derp instanceof LivingEntity && targets >= 1)
  114. {
  115. if(derp instanceof Player)
  116. {
  117. Player target = (Player)derp;
  118. if(target.getName().equals(attacker.getName()))
  119. continue;
  120. if(Party.getInstance().inSameParty(attacker, target))
  121. continue;
  122. if(targets >= 1 && derp.getWorld().getPVP())
  123. {
  124. target.damage(event.getDamage() / 2);
  125. target.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!");
  126. targets--;
  127. continue;
  128. }
  129. }
  130. else
  131. {
  132. LivingEntity target = (LivingEntity)derp;
  133. target.damage(event.getDamage() / 2);
  134. targets--;
  135. }
  136. }
  137. }
  138. }
  139. }
  140. }
  141. }