AcrobaticsCommand.java 3.8 KB

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