Browse Source

spears momentum (wip pt 2)

nossr50 1 week ago
parent
commit
7e479049d0

+ 0 - 2
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;

+ 40 - 10
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;
+    }
+
 }

+ 1 - 1
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