UnarmedCommand.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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.mcMMO;
  5. import com.gmail.nossr50.util.Permissions;
  6. import com.gmail.nossr50.util.skills.CombatUtils;
  7. import com.gmail.nossr50.util.skills.RankUtils;
  8. import net.md_5.bungee.api.chat.TextComponent;
  9. import org.bukkit.entity.Player;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. public class UnarmedCommand extends SkillCommand {
  13. private String berserkLength;
  14. private String berserkLengthEndurance;
  15. private String deflectChance;
  16. private String deflectChanceLucky;
  17. private String disarmChance;
  18. private String disarmChanceLucky;
  19. private String ironGripChance;
  20. private String ironGripChanceLucky;
  21. private double ironArmBonus;
  22. private boolean canBerserk;
  23. private boolean canDisarm;
  24. private boolean canIronArm;
  25. private boolean canDeflect;
  26. private boolean canIronGrip;
  27. public UnarmedCommand(mcMMO pluginRef) {
  28. super(PrimarySkillType.UNARMED, pluginRef);
  29. }
  30. @Override
  31. protected void dataCalculations(Player player, double skillValue) {
  32. // UNARMED_ARROW_DEFLECT
  33. if (canDeflect) {
  34. String[] deflectStrings = getAbilityDisplayValues(player, SubSkillType.UNARMED_ARROW_DEFLECT);
  35. deflectChance = deflectStrings[0];
  36. deflectChanceLucky = deflectStrings[1];
  37. }
  38. // BERSERK
  39. if (canBerserk) {
  40. String[] berserkStrings = formatLengthDisplayValues(player, skillValue);
  41. berserkLength = berserkStrings[0];
  42. berserkLengthEndurance = berserkStrings[1];
  43. }
  44. // UNARMED_DISARM
  45. if (canDisarm) {
  46. String[] disarmStrings = getAbilityDisplayValues(player, SubSkillType.UNARMED_DISARM);
  47. disarmChance = disarmStrings[0];
  48. disarmChanceLucky = disarmStrings[1];
  49. }
  50. // IRON ARM
  51. if (canIronArm) {
  52. ironArmBonus = pluginRef.getUserManager().getPlayer(player).getUnarmedManager().getIronArmDamage();
  53. }
  54. // IRON GRIP
  55. if (canIronGrip) {
  56. String[] ironGripStrings = getAbilityDisplayValues(player, SubSkillType.UNARMED_IRON_GRIP);
  57. ironGripChance = ironGripStrings[0];
  58. ironGripChanceLucky = ironGripStrings[1];
  59. }
  60. }
  61. @Override
  62. protected void permissionsCheck(Player player) {
  63. canBerserk = RankUtils.hasUnlockedSubskill(player, SubSkillType.UNARMED_BERSERK) && Permissions.berserk(player);
  64. canIronArm = canUseSubskill(player, SubSkillType.UNARMED_IRON_ARM_STYLE);
  65. canDeflect = canUseSubskill(player, SubSkillType.UNARMED_ARROW_DEFLECT);
  66. canDisarm = canUseSubskill(player, SubSkillType.UNARMED_DISARM);
  67. canIronGrip = canUseSubskill(player, SubSkillType.UNARMED_IRON_GRIP);
  68. // TODO: Apparently we forgot about block cracker?
  69. }
  70. @Override
  71. protected List<String> statsDisplay(Player player, double skillValue, boolean hasEndurance, boolean isLucky) {
  72. List<String> messages = new ArrayList<>();
  73. if (canDeflect) {
  74. messages.add(getStatMessage(SubSkillType.UNARMED_ARROW_DEFLECT, deflectChance)
  75. + (isLucky ? pluginRef.getLocaleManager().getString("Perks.Lucky.Bonus", deflectChanceLucky) : ""));
  76. //messages.add(pluginRef.getLocaleManager().getString("Unarmed.Ability.Chance.ArrowDeflect", deflectChance) + (isLucky ? pluginRef.getLocaleManager().getString("Perks.Lucky.Bonus", deflectChanceLucky) : ""));
  77. }
  78. if (canBerserk) {
  79. messages.add(getStatMessage(SubSkillType.UNARMED_BERSERK, berserkLength)
  80. + (hasEndurance ? pluginRef.getLocaleManager().getString("Perks.ActivationTime.Bonus", berserkLengthEndurance) : ""));
  81. //messages.add(pluginRef.getLocaleManager().getString("Unarmed.Ability.Berserk.Length", berserkLength) + (hasEndurance ? pluginRef.getLocaleManager().getString("Perks.ActivationTime.Bonus", berserkLengthEndurance) : ""));
  82. }
  83. if (canDisarm) {
  84. messages.add(getStatMessage(SubSkillType.UNARMED_DISARM, disarmChance)
  85. + (isLucky ? pluginRef.getLocaleManager().getString("Perks.Lucky.Bonus", disarmChanceLucky) : ""));
  86. //messages.add(pluginRef.getLocaleManager().getString("Unarmed.Ability.Chance.Disarm", disarmChance) + (isLucky ? pluginRef.getLocaleManager().getString("Perks.Lucky.Bonus", disarmChanceLucky) : ""));
  87. }
  88. if (canIronArm) {
  89. messages.add(pluginRef.getLocaleManager().getString("Ability.Generic.Template", pluginRef.getLocaleManager().getString("Unarmed.Ability.Bonus.0"), pluginRef.getLocaleManager().getString("Unarmed.Ability.Bonus.1", ironArmBonus)));
  90. }
  91. if (canIronGrip) {
  92. messages.add(getStatMessage(SubSkillType.UNARMED_IRON_GRIP, ironGripChance)
  93. + (isLucky ? pluginRef.getLocaleManager().getString("Perks.Lucky.Bonus", ironGripChanceLucky) : ""));
  94. //messages.add(pluginRef.getLocaleManager().getString("Unarmed.Ability.Chance.IronGrip", ironGripChance) + (isLucky ? pluginRef.getLocaleManager().getString("Perks.Lucky.Bonus", ironGripChanceLucky) : ""));
  95. }
  96. if (canUseSubskill(player, SubSkillType.UNARMED_UNARMED_LIMIT_BREAK)) {
  97. messages.add(getStatMessage(SubSkillType.UNARMED_UNARMED_LIMIT_BREAK,
  98. String.valueOf(CombatUtils.getLimitBreakDamage(player, SubSkillType.UNARMED_UNARMED_LIMIT_BREAK))));
  99. }
  100. return messages;
  101. }
  102. @Override
  103. protected List<TextComponent> getTextComponents(Player player) {
  104. List<TextComponent> textComponents = new ArrayList<>();
  105. pluginRef.getTextComponentFactory().getSubSkillTextComponents(player, textComponents, PrimarySkillType.UNARMED);
  106. return textComponents;
  107. }
  108. }