diff --git a/src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java index 40fefea38..dddc8e300 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java @@ -1,7 +1,6 @@ package com.gmail.nossr50.commands.skills; -import static com.gmail.nossr50.datatypes.skills.SubSkillType.MACES_CRIPPLE; import static com.gmail.nossr50.datatypes.skills.SubSkillType.SPEARS_MOMENTUM; import static com.gmail.nossr50.datatypes.skills.SubSkillType.SPEARS_SPEARS_LIMIT_BREAK; import static com.gmail.nossr50.util.skills.SkillUtils.canUseSubskill; @@ -10,7 +9,6 @@ import static com.gmail.nossr50.util.text.TextComponentFactory.appendSubSkillTex import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.skills.maces.MacesManager; import com.gmail.nossr50.skills.spears.SpearsManager; import com.gmail.nossr50.util.skills.CombatUtils; import com.gmail.nossr50.util.skills.RankUtils; diff --git a/src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java b/src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java index 54c35ff15..71128f273 100644 --- a/src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java @@ -14,6 +14,7 @@ import com.gmail.nossr50.util.player.NotificationManager; import java.util.Locale; import org.bukkit.NamespacedKey; import org.bukkit.Registry; +import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -46,24 +47,19 @@ public class SpearsManager extends SkillManager { } } - // TODO: Potentially it should overwrite the effect if we are providing a stronger one - if (swiftnessEffectType == null || getPlayer().getPotionEffect(swiftnessEffectType) != null) { - return; - } - - if (!Permissions.canUseSubSkill(mmoPlayer.getPlayer(), SubSkillType.SPEARS_MOMENTUM)) { + if (!canMomentumBeApplied()) { return; } int momentumRank = getRank(getPlayer(), SubSkillType.SPEARS_MOMENTUM); + // Chance to activate on hit is influence by the CD double momentumOdds = (mcMMO.p.getAdvancedConfig().getMomentumChanceToApplyOnHit(momentumRank) - * mmoPlayer.getAttackStrength()); + * Math.min(mmoPlayer.getAttackStrength(), 1.0D)); - if (isStaticSkillRNGSuccessful(PrimarySkillType.MACES, mmoPlayer, - momentumOdds)) { + if (isStaticSkillRNGSuccessful(PrimarySkillType.SPEARS, mmoPlayer, momentumOdds)) { if (mmoPlayer.useChatNotifications()) { NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(), - NotificationType.SUBSKILL_MESSAGE, "Maces.SubSkill.Momentum.Activated"); + NotificationType.SUBSKILL_MESSAGE, "Spears.SubSkill.Momentum.Activated"); } // Momentum is success, Momentum the target @@ -83,4 +79,38 @@ public class SpearsManager extends SkillManager { return 2; } + private boolean canMomentumBeApplied() { + // TODO: Potentially it should overwrite the effect if we are providing a stronger one + if (swiftnessEffectType == null) { + return false; + } + final PotionEffect currentlyAppliedPotion = getPlayer() + .getPotionEffect(swiftnessEffectType); + + if (currentlyAppliedPotion != null) { + if (isCurrentPotionEffectStronger(currentlyAppliedPotion)) { + return false; + } + } + + if (!Permissions.canUseSubSkill(mmoPlayer.getPlayer(), SubSkillType.SPEARS_MOMENTUM)) { + return false; + } + + return true; + } + + private boolean isCurrentPotionEffectStronger(@NotNull PotionEffect potionEffect) { + if (potionEffect.getAmplifier() > getMomentumStrength()) { + return true; + } + + if (potionEffect.getDuration() > getMomentumTickDuration(getRank(getPlayer(), + SubSkillType.SPEARS_MOMENTUM))) { + return true; + } + + return false; + } + } diff --git a/src/main/resources/skillranks.yml b/src/main/resources/skillranks.yml index f45023e68..4e437fe00 100644 --- a/src/main/resources/skillranks.yml +++ b/src/main/resources/skillranks.yml @@ -428,7 +428,7 @@ Spears: Rank_8: 800 Rank_9: 900 Rank_10: 1000 - SpearsMomentum: + Momentum: Standard: Rank_1: 1 Rank_2: 10