ArcheryCommand.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  3. import com.gmail.nossr50.datatypes.skills.SubSkillType;
  4. import com.gmail.nossr50.locale.LocaleLoader;
  5. import com.gmail.nossr50.skills.archery.Archery;
  6. import com.gmail.nossr50.util.Permissions;
  7. import com.gmail.nossr50.util.skills.CombatUtils;
  8. import com.gmail.nossr50.util.skills.SkillActivationType;
  9. import com.gmail.nossr50.util.text.TextComponentFactory;
  10. import net.kyori.adventure.text.Component;
  11. import org.bukkit.entity.Player;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. public class ArcheryCommand extends SkillCommand {
  15. private String skillShotBonus;
  16. private String dazeChance;
  17. private String dazeChanceLucky;
  18. private String retrieveChance;
  19. private String retrieveChanceLucky;
  20. private boolean canSkillShot;
  21. private boolean canDaze;
  22. private boolean canRetrieve;
  23. public ArcheryCommand() {
  24. super(PrimarySkillType.ARCHERY);
  25. }
  26. @Override
  27. protected void dataCalculations(Player player, float skillValue) {
  28. // ARCHERY_ARROW_RETRIEVAL
  29. if (canRetrieve) {
  30. String[] retrieveStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ARCHERY_ARROW_RETRIEVAL);
  31. retrieveChance = retrieveStrings[0];
  32. retrieveChanceLucky = retrieveStrings[1];
  33. }
  34. // ARCHERY_DAZE
  35. if (canDaze) {
  36. String[] dazeStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ARCHERY_DAZE);
  37. dazeChance = dazeStrings[0];
  38. dazeChanceLucky = dazeStrings[1];
  39. }
  40. // SKILL SHOT
  41. if (canSkillShot) {
  42. skillShotBonus = percent.format(Archery.getDamageBonusPercent(player));
  43. }
  44. }
  45. @Override
  46. protected void permissionsCheck(Player player) {
  47. canSkillShot = Permissions.canUseSubSkill(player, SubSkillType.ARCHERY_SKILL_SHOT);
  48. canDaze = Permissions.canUseSubSkill(player, SubSkillType.ARCHERY_DAZE);
  49. canRetrieve = Permissions.canUseSubSkill(player, SubSkillType.ARCHERY_ARROW_RETRIEVAL);
  50. }
  51. @Override
  52. protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
  53. List<String> messages = new ArrayList<>();
  54. if (canRetrieve) {
  55. messages.add(getStatMessage(SubSkillType.ARCHERY_ARROW_RETRIEVAL, retrieveChance)
  56. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", retrieveChanceLucky) : ""));
  57. }
  58. if (canDaze) {
  59. messages.add(getStatMessage(SubSkillType.ARCHERY_DAZE, dazeChance)
  60. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", dazeChanceLucky) : ""));
  61. }
  62. if (canSkillShot) {
  63. messages.add(getStatMessage(SubSkillType.ARCHERY_SKILL_SHOT, skillShotBonus));
  64. }
  65. if(Permissions.canUseSubSkill(player, SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK)) {
  66. messages.add(getStatMessage(SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK,
  67. String.valueOf(CombatUtils.getLimitBreakDamageAgainstQuality(player, SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK, 1000))));
  68. }
  69. return messages;
  70. }
  71. @Override
  72. protected List<Component> getTextComponents(Player player) {
  73. List<Component> textComponents = new ArrayList<>();
  74. TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.ARCHERY);
  75. return textComponents;
  76. }
  77. }