AcrobaticsCommand.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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.datatypes.skills.subskills.AbstractSubSkill;
  5. import com.gmail.nossr50.listeners.InteractionManager;
  6. import com.gmail.nossr50.locale.LocaleLoader;
  7. import com.gmail.nossr50.util.TextComponentFactory;
  8. import com.gmail.nossr50.util.random.RandomChanceSkill;
  9. import com.gmail.nossr50.util.random.RandomChanceUtil;
  10. import com.gmail.nossr50.util.skills.SkillActivationType;
  11. import net.md_5.bungee.api.chat.TextComponent;
  12. import org.bukkit.entity.Player;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. public class AcrobaticsCommand extends SkillCommand {
  16. private String dodgeChance;
  17. private String dodgeChanceLucky;
  18. private boolean canDodge;
  19. private boolean canRoll;
  20. public AcrobaticsCommand() {
  21. super(PrimarySkillType.ACROBATICS);
  22. }
  23. @Override
  24. protected void dataCalculations(Player player, float skillValue) {
  25. // ACROBATICS_DODGE
  26. if (canDodge) {
  27. String[] dodgeStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ACROBATICS_DODGE);
  28. dodgeChance = dodgeStrings[0];
  29. dodgeChanceLucky = dodgeStrings[1];
  30. }
  31. }
  32. @Override
  33. protected void permissionsCheck(Player player) {
  34. canDodge = canUseSubskill(player, SubSkillType.ACROBATICS_DODGE);
  35. canRoll = canUseSubskill(player, SubSkillType.ACROBATICS_ROLL);
  36. }
  37. @Override
  38. protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
  39. List<String> messages = new ArrayList<String>();
  40. if (canDodge) {
  41. messages.add(getStatMessage(SubSkillType.ACROBATICS_DODGE, dodgeChance)
  42. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", dodgeChanceLucky) : ""));
  43. }
  44. if (canRoll) {
  45. AbstractSubSkill abstractSubSkill = InteractionManager.getAbstractByName("Roll");
  46. if(abstractSubSkill != null)
  47. {
  48. double rollChance, graceChance;
  49. //Chance to roll at half
  50. RandomChanceSkill roll_rcs = new RandomChanceSkill(player, SubSkillType.ACROBATICS_ROLL);
  51. //Chance to graceful roll
  52. RandomChanceSkill grace_rcs = new RandomChanceSkill(player, SubSkillType.ACROBATICS_ROLL);
  53. grace_rcs.setSkillLevel(grace_rcs.getSkillLevel() * 2); //Double Odds
  54. //Chance Stat Calculations
  55. rollChance = RandomChanceUtil.getRandomChanceExecutionChance(roll_rcs);
  56. graceChance = RandomChanceUtil.getRandomChanceExecutionChance(grace_rcs);
  57. //damageThreshold = AdvancedConfig.getInstance().getRollDamageThreshold();
  58. String[] rollStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ACROBATICS_ROLL);
  59. //Format
  60. double rollChanceLucky = rollChance * 1.333D;
  61. double graceChanceLucky = graceChance * 1.333D;
  62. messages.add(getStatMessage(SubSkillType.ACROBATICS_ROLL, rollStrings[0])
  63. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", rollStrings[1]) : ""));
  64. /*messages.add(getStatMessage(true, false, SubSkillType.ACROBATICS_ROLL, String.valueOf(graceChance))
  65. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", String.valueOf(graceChanceLucky)) : ""));*/
  66. }
  67. }
  68. return messages;
  69. }
  70. @Override
  71. protected List<TextComponent> getTextComponents(Player player) {
  72. List<TextComponent> textComponents = new ArrayList<>();
  73. TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.ACROBATICS);
  74. return textComponents;
  75. }
  76. }