ArcheryCommand.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.gmail.nossr50.commands.skills;
  2. import java.text.DecimalFormat;
  3. import org.bukkit.ChatColor;
  4. import com.gmail.nossr50.commands.SkillCommand;
  5. import com.gmail.nossr50.config.AdvancedConfig;
  6. import com.gmail.nossr50.datatypes.SkillType;
  7. import com.gmail.nossr50.locale.LocaleLoader;
  8. import com.gmail.nossr50.util.Permissions;
  9. public class ArcheryCommand extends SkillCommand {
  10. AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
  11. private String skillShotBonus;
  12. private String dazeChance;
  13. private String retrieveChance;
  14. private int skillShotIncreaseLevel = advancedConfig.getSkillShotIncreaseLevel();
  15. private double skillShotIncreasePercentage = advancedConfig.getSkillShotIncreasePercentage();
  16. private double skillShotBonusMax = advancedConfig.getSkillShotBonusMax();
  17. private float dazeBonusMax = advancedConfig.getDazeBonusMax();
  18. private float dazeMaxBonusLevel = advancedConfig.getDazeMaxBonusLevel();
  19. private float retrieveBonusMax = advancedConfig.getRetrieveBonusMax();
  20. private float retrieveMaxBonusLevel = advancedConfig.getRetrieveMaxBonusLevel();
  21. private boolean canSkillShot;
  22. private boolean canDaze;
  23. private boolean canRetrieve;
  24. private boolean lucky;
  25. public ArcheryCommand() {
  26. super(SkillType.ARCHERY);
  27. }
  28. @Override
  29. protected void dataCalculations() {
  30. DecimalFormat df = new DecimalFormat("0.0");
  31. // SkillShot
  32. double bonus = (int)((double) skillValue / (double) skillShotIncreaseLevel) * skillShotIncreasePercentage;
  33. if (bonus > skillShotBonusMax) skillShotBonus = percent.format(skillShotBonusMax);
  34. else skillShotBonus = percent.format(bonus);
  35. // Daze
  36. if(skillValue >= dazeMaxBonusLevel) dazeChance = df.format(dazeBonusMax);
  37. else dazeChance = df.format(((double) dazeBonusMax / (double) dazeMaxBonusLevel) * skillValue);
  38. // Retrieve
  39. if(skillValue >= retrieveMaxBonusLevel) retrieveChance = df.format(retrieveBonusMax);
  40. else retrieveChance = df.format(((double) retrieveBonusMax / (double) retrieveMaxBonusLevel) * skillValue);
  41. }
  42. @Override
  43. protected void permissionsCheck() {
  44. canSkillShot = Permissions.archeryBonus(player);
  45. canDaze = Permissions.daze(player);
  46. canRetrieve = Permissions.trackArrows(player);
  47. lucky = Permissions.luckyArchery(player);
  48. }
  49. @Override
  50. protected boolean effectsHeaderPermissions() {
  51. return canSkillShot || canDaze || canRetrieve;
  52. }
  53. @Override
  54. protected void effectsDisplay() {
  55. if (lucky) {
  56. String perkPrefix = ChatColor.RED + "[mcMMO Perks] ";
  57. player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Perks.lucky.name"), LocaleLoader.getString("Perks.lucky.desc", new Object[] { "Archery" }) }));
  58. }
  59. if (canSkillShot) {
  60. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.0"), LocaleLoader.getString("Archery.Effect.1") }));
  61. }
  62. if (canDaze) {
  63. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.2"), LocaleLoader.getString("Archery.Effect.3") }));
  64. }
  65. if (canRetrieve) {
  66. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.4"), LocaleLoader.getString("Archery.Effect.5") }));
  67. }
  68. }
  69. @Override
  70. protected boolean statsHeaderPermissions() {
  71. return canSkillShot || canDaze || canRetrieve;
  72. }
  73. @Override
  74. protected void statsDisplay() {
  75. if (canSkillShot) {
  76. player.sendMessage(LocaleLoader.getString("Archery.Combat.SkillshotBonus", new Object[] { skillShotBonus }));
  77. }
  78. if (canDaze) {
  79. player.sendMessage(LocaleLoader.getString("Archery.Combat.DazeChance", new Object[] { dazeChance }));
  80. }
  81. if (canRetrieve) {
  82. player.sendMessage(LocaleLoader.getString("Archery.Combat.RetrieveChance", new Object[] { retrieveChance }));
  83. }
  84. }
  85. }