UnarmedCommand.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package com.gmail.nossr50.commands.skills;
  2. import org.bukkit.ChatColor;
  3. import com.gmail.nossr50.commands.SkillCommand;
  4. import com.gmail.nossr50.config.AdvancedConfig;
  5. import com.gmail.nossr50.datatypes.SkillType;
  6. import com.gmail.nossr50.locale.LocaleLoader;
  7. import com.gmail.nossr50.util.Permissions;
  8. public class UnarmedCommand extends SkillCommand {
  9. AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
  10. private String berserkLength;
  11. private String berserkLengthEndurance;
  12. private String deflectChance;
  13. private String deflectChanceLucky;
  14. private String disarmChance;
  15. private String disarmChanceLucky;
  16. private String ironArmBonus;
  17. private float disarmChanceMax = advancedConfig.getDisarmChanceMax();
  18. private float disarmMaxLevel = advancedConfig.getDisarmMaxBonusLevel();
  19. private float deflectChanceMax = advancedConfig.getDeflectChanceMax();
  20. private float deflectMaxLevel = advancedConfig.getDeflectMaxBonusLevel();
  21. private float ironArmMaxBonus = advancedConfig.getIronArmBonus();
  22. private int ironArmIncreaseLevel = advancedConfig.getIronArmIncreaseLevel();
  23. private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
  24. private boolean canBerserk;
  25. private boolean canDisarm;
  26. private boolean canBonusDamage;
  27. private boolean canDeflect;
  28. private boolean lucky;
  29. private boolean endurance;
  30. public UnarmedCommand() {
  31. super(SkillType.UNARMED);
  32. }
  33. @Override
  34. protected void dataCalculations() {
  35. float disarmChanceF;
  36. float deflectChanceF;
  37. //Berserk
  38. int length = 2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel);
  39. berserkLength = String.valueOf(length);
  40. if (Permissions.activationTwelve(player)) {
  41. length = length + 12;
  42. }
  43. else if (Permissions.activationEight(player)) {
  44. length = length + 8;
  45. }
  46. else if (Permissions.activationFour(player)) {
  47. length = length + 4;
  48. }
  49. int maxLength = SkillType.UNARMED.getAbility().getMaxTicks();
  50. if (maxLength != 0 && length > maxLength) {
  51. length = maxLength;
  52. }
  53. berserkLengthEndurance = String.valueOf(length);
  54. //Disarm
  55. if (skillValue >= disarmMaxLevel) disarmChanceF = disarmChanceMax;
  56. else disarmChanceF = (float) (((double) disarmChanceMax / (double) disarmMaxLevel) * skillValue);
  57. disarmChance = percent.format(disarmChanceF / 100D);
  58. if (disarmChanceF + disarmChanceF * 0.3333D >= 100D) disarmChanceLucky = percent.format(1D);
  59. else disarmChanceLucky = percent.format((disarmChanceF + disarmChanceF * 0.3333D) / 100D);
  60. //Deflect
  61. if (skillValue >= deflectMaxLevel) deflectChanceF = deflectChanceMax;
  62. else deflectChanceF = (float) (((double) deflectChanceMax / (double) deflectMaxLevel) * skillValue);
  63. deflectChance = percent.format(deflectChanceF / 100D);
  64. if (deflectChanceF + deflectChanceF * 0.3333D >= 100D) deflectChanceLucky = percent.format(1D);
  65. else deflectChanceLucky = percent.format((deflectChanceF + deflectChanceF * 0.3333D) / 100D);
  66. //Iron Arm
  67. if (skillValue >= 250) ironArmBonus = String.valueOf(ironArmMaxBonus);
  68. else ironArmBonus = String.valueOf(3 + ((double) skillValue / (double) ironArmIncreaseLevel));
  69. }
  70. @Override
  71. protected void permissionsCheck() {
  72. canBerserk = Permissions.berserk(player);
  73. canBonusDamage = Permissions.unarmedBonus(player);
  74. canDeflect = Permissions.deflect(player);
  75. canDisarm = Permissions.disarm(player);
  76. lucky = Permissions.luckyUnarmed(player);
  77. endurance = Permissions.activationTwelve(player) || Permissions.activationEight(player) || Permissions.activationFour(player);
  78. }
  79. @Override
  80. protected boolean effectsHeaderPermissions() {
  81. return canBerserk || canBonusDamage || canDeflect || canDisarm;
  82. }
  83. @Override
  84. protected void effectsDisplay() {
  85. if (lucky) {
  86. String perkPrefix = ChatColor.RED + "[mcMMO Perks] ";
  87. player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Perks.lucky.name"), LocaleLoader.getString("Perks.lucky.desc", new Object[] { "Unarmed" }) }));
  88. }
  89. if (canBerserk) {
  90. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Unarmed.Effect.0"), LocaleLoader.getString("Unarmed.Effect.1") }));
  91. }
  92. if (canDisarm) {
  93. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Unarmed.Effect.2"), LocaleLoader.getString("Unarmed.Effect.3") }));
  94. }
  95. if (canBonusDamage) {
  96. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Unarmed.Effect.4"), LocaleLoader.getString("Unarmed.Effect.5") }));
  97. }
  98. if (canDeflect) {
  99. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Unarmed.Effect.6"), LocaleLoader.getString("Unarmed.Effect.7") }));
  100. }
  101. }
  102. @Override
  103. protected boolean statsHeaderPermissions() {
  104. return canBerserk || canBonusDamage || canDeflect || canDisarm;
  105. }
  106. @Override
  107. protected void statsDisplay() {
  108. if (canBonusDamage) {
  109. player.sendMessage(LocaleLoader.getString("Ability.Generic.Template", new Object[] { LocaleLoader.getString("Unarmed.Ability.Bonus.0"), LocaleLoader.getString("Unarmed.Ability.Bonus.1", new Object[] {ironArmBonus}) }));
  110. }
  111. if (canDeflect) {
  112. if (lucky)
  113. player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.ArrowDeflect", new Object[] { deflectChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { deflectChanceLucky }));
  114. else
  115. player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.ArrowDeflect", new Object[] { deflectChance }));
  116. }
  117. if (canDisarm) {
  118. if (lucky)
  119. player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.Disarm", new Object[] { disarmChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { disarmChanceLucky }));
  120. else
  121. player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.Disarm", new Object[] { disarmChance }));
  122. }
  123. if (canBerserk) {
  124. if (endurance)
  125. player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Berserk.Length", new Object[] { berserkLength }) + LocaleLoader.getString("Perks.activationtime.bonus", new Object[] { berserkLengthEndurance }));
  126. else
  127. player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Berserk.Length", new Object[] { berserkLength }));
  128. }
  129. }
  130. }