mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-12-17 06:18:46 +01:00
spears momentum (wip pt 2)
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package com.gmail.nossr50.commands.skills;
|
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_MOMENTUM;
|
||||||
import static com.gmail.nossr50.datatypes.skills.SubSkillType.SPEARS_SPEARS_LIMIT_BREAK;
|
import static com.gmail.nossr50.datatypes.skills.SubSkillType.SPEARS_SPEARS_LIMIT_BREAK;
|
||||||
import static com.gmail.nossr50.util.skills.SkillUtils.canUseSubskill;
|
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.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.skills.maces.MacesManager;
|
|
||||||
import com.gmail.nossr50.skills.spears.SpearsManager;
|
import com.gmail.nossr50.skills.spears.SpearsManager;
|
||||||
import com.gmail.nossr50.util.skills.CombatUtils;
|
import com.gmail.nossr50.util.skills.CombatUtils;
|
||||||
import com.gmail.nossr50.util.skills.RankUtils;
|
import com.gmail.nossr50.util.skills.RankUtils;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import com.gmail.nossr50.util.player.NotificationManager;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.Registry;
|
import org.bukkit.Registry;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
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 (!canMomentumBeApplied()) {
|
||||||
if (swiftnessEffectType == null || getPlayer().getPotionEffect(swiftnessEffectType) != null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Permissions.canUseSubSkill(mmoPlayer.getPlayer(), SubSkillType.SPEARS_MOMENTUM)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int momentumRank = getRank(getPlayer(), SubSkillType.SPEARS_MOMENTUM);
|
int momentumRank = getRank(getPlayer(), SubSkillType.SPEARS_MOMENTUM);
|
||||||
|
// Chance to activate on hit is influence by the CD
|
||||||
double momentumOdds = (mcMMO.p.getAdvancedConfig().getMomentumChanceToApplyOnHit(momentumRank)
|
double momentumOdds = (mcMMO.p.getAdvancedConfig().getMomentumChanceToApplyOnHit(momentumRank)
|
||||||
* mmoPlayer.getAttackStrength());
|
* Math.min(mmoPlayer.getAttackStrength(), 1.0D));
|
||||||
|
|
||||||
if (isStaticSkillRNGSuccessful(PrimarySkillType.MACES, mmoPlayer,
|
if (isStaticSkillRNGSuccessful(PrimarySkillType.SPEARS, mmoPlayer, momentumOdds)) {
|
||||||
momentumOdds)) {
|
|
||||||
if (mmoPlayer.useChatNotifications()) {
|
if (mmoPlayer.useChatNotifications()) {
|
||||||
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(),
|
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(),
|
||||||
NotificationType.SUBSKILL_MESSAGE, "Maces.SubSkill.Momentum.Activated");
|
NotificationType.SUBSKILL_MESSAGE, "Spears.SubSkill.Momentum.Activated");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Momentum is success, Momentum the target
|
// Momentum is success, Momentum the target
|
||||||
@@ -83,4 +79,38 @@ public class SpearsManager extends SkillManager {
|
|||||||
return 2;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -428,7 +428,7 @@ Spears:
|
|||||||
Rank_8: 800
|
Rank_8: 800
|
||||||
Rank_9: 900
|
Rank_9: 900
|
||||||
Rank_10: 1000
|
Rank_10: 1000
|
||||||
SpearsMomentum:
|
Momentum:
|
||||||
Standard:
|
Standard:
|
||||||
Rank_1: 1
|
Rank_1: 1
|
||||||
Rank_2: 10
|
Rank_2: 10
|
||||||
|
|||||||
Reference in New Issue
Block a user