mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 14:46:46 +01:00
Add MaximumProgressLevel interface and implementation
This commit is contained in:
parent
19acf47f1e
commit
186ad2cd59
@ -641,8 +641,6 @@ public class AdvancedConfig extends ConfigValidated {
|
|||||||
return getDoubleValue(SKILLS, AXES, GREATER_IMPACT, BONUS_DAMAGE);
|
return getDoubleValue(SKILLS, AXES, GREATER_IMPACT, BONUS_DAMAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getImpactChance() { return config.getDouble("Skills.Axes.ArmorImpact.Chance", 25.0D); }
|
|
||||||
public double getImpactDurabilityDamageMultiplier() { return config.getDouble("Skills.Axes.ArmorImpact.DamagePerRank", 6.5D); }
|
|
||||||
|
|
||||||
public double getArmorImpactMaxDurabilityDamage() {
|
public double getArmorImpactMaxDurabilityDamage() {
|
||||||
return getDoubleValue(SKILLS, AXES, ARMOR_IMPACT, MAX_PERCENTAGE_DURABILITY_DAMAGE);
|
return getDoubleValue(SKILLS, AXES, ARMOR_IMPACT, MAX_PERCENTAGE_DURABILITY_DAMAGE);
|
||||||
|
@ -5,28 +5,96 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
|
|||||||
|
|
||||||
@ConfigSerializable
|
@ConfigSerializable
|
||||||
public class ConfigAxes {
|
public class ConfigAxes {
|
||||||
public static final double IMPACT_CHANCE_DEFAULT = 25.0D;
|
|
||||||
public static final double IMPACT_DURABILITY_MULTIPLIER_DEFAULT = 6.5D;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public double getImpactChance() { return config.getDouble("Skills.Axes.ArmorImpact.Chance", 25.0D); }
|
public static double getAxeMasteryRankDamageMultiplier() {
|
||||||
public double getImpactDurabilityDamageMultiplier() { return config.getDouble("Skills.Axes.ArmorImpact.DamagePerRank", 6.5D); }
|
return axeMasteryRankDamageMultiplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getImpactDamageMultiplier() {
|
||||||
|
return impactDamageMultiplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getCriticalHitPVPModifier() {
|
||||||
|
return criticalHitPVPModifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getCriticalHitPVEModifier() {
|
||||||
|
return criticalHitPVEModifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getGreaterImpactBonusDamage() {
|
||||||
|
return greaterImpactBonusDamage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getGreaterImpactKnockbackMultiplier() {
|
||||||
|
return greaterImpactKnockbackMultiplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GreaterImpact:
|
||||||
|
# Chance: Chance of hitting with GreaterImpact, mobs are knocked backwards when successful
|
||||||
|
# KnockbackModifier: Velocity modifier of GreaterImpact hits, this determines how great the knockback is
|
||||||
|
# BonusDamage: Extra damage for GreaterImpact hits
|
||||||
|
Chance: 25.0
|
||||||
|
KnockbackModifier: 1.5
|
||||||
|
BonusDamage: 2.0
|
||||||
|
ArmorImpact:
|
||||||
|
# Multiplied against the skill rank to determine how much damage to do
|
||||||
|
DamagePerRank: 6.5
|
||||||
|
# IncreaseLevel: Every <IncreaseLevel> the durability damage goes up with 1
|
||||||
|
# Chance: Chance of hitting with ArmorImpact
|
||||||
|
# MaxPercentageDurabilityDamage: Durability damage cap for ArmorImpact, 20% means that you can never destroy a piece of armor in less than 5 hits
|
||||||
|
Chance: 25.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Setting(value = "Impact-Activation-Chance", comment = "Chance to activate the Impact skill, this is a static chance and does not change per rank of the skill." +
|
@Setting(value = "Axe-Mastery")
|
||||||
"\nDefault value: "+IMPACT_CHANCE_DEFAULT)
|
private ConfigAxesAxeMastery configAxesAxeMastery = new ConfigAxesAxeMastery();
|
||||||
private double impactChance = IMPACT_CHANCE_DEFAULT;
|
|
||||||
|
|
||||||
@Setting(value = "Impact-Durability-Damage-Multiplier", comment = "The amount of durability damage done by Impact is multiplied by this number" +
|
@Setting(value = "Critical-Strikes")
|
||||||
"\nThe damage done by impact starts at 1 and increases by 1 every rank, this value is then multiplied by this variable to determine the durability damage done to armor." +
|
private ConfigAxesCriticalStrikes configAxesCriticalStrikes = new ConfigAxesCriticalStrikes();
|
||||||
"\nDefault value: "+IMPACT_DURABILITY_MULTIPLIER_DEFAULT)
|
|
||||||
private double impactDurabilityDamageModifier = IMPACT_DURABILITY_MULTIPLIER_DEFAULT;
|
@Setting(value = "Greater-Impact")
|
||||||
|
private ConfigAxesGreaterImpact configAxesGreaterImpact = new ConfigAxesGreaterImpact();
|
||||||
|
|
||||||
|
@Setting(value = "Impact")
|
||||||
|
private ConfigAxesImpact configAxesImpact = new ConfigAxesImpact();
|
||||||
|
|
||||||
|
@Setting(value = "Skull-Splitter")
|
||||||
|
private ConfigAxesSkullSplitter configAxesSkullSplitter = new ConfigAxesSkullSplitter();
|
||||||
|
|
||||||
|
public double getSkullSplitterDamageDivisor() {
|
||||||
|
return configAxesSkullSplitter.getSkullSplitterDamageDivisor();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigAxesAxeMastery getConfigAxesAxeMastery() {
|
||||||
|
return configAxesAxeMastery;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigAxesCriticalStrikes getConfigAxesCriticalStrikes() {
|
||||||
|
return configAxesCriticalStrikes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigAxesGreaterImpact getConfigAxesGreaterImpact() {
|
||||||
|
return configAxesGreaterImpact;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigAxesImpact getConfigAxesImpact() {
|
||||||
|
return configAxesImpact;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigAxesSkullSplitter getConfigAxesSkullSplitter() {
|
||||||
|
return configAxesSkullSplitter;
|
||||||
|
}
|
||||||
|
|
||||||
public double getImpactChance() {
|
public double getImpactChance() {
|
||||||
return impactChance;
|
return configAxesImpact.getImpactChance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getImpactDurabilityDamageModifier() {
|
public double getImpactDurabilityDamageModifier() {
|
||||||
return impactDurabilityDamageModifier;
|
return configAxesImpact.getImpactDurabilityDamageModifier();
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getAxeMasteryMultiplier() {
|
||||||
|
return configAxesAxeMastery.getAxeMasteryMultiplier();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.gmail.nossr50.config.hocon.skills.axes;
|
||||||
|
|
||||||
|
import ninja.leaping.configurate.objectmapping.Setting;
|
||||||
|
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
|
||||||
|
|
||||||
|
@ConfigSerializable
|
||||||
|
public class ConfigAxesAxeMastery {
|
||||||
|
private static final double AXE_MASTERY_MULTIPLIER_DEFAULT = 1.0D;
|
||||||
|
|
||||||
|
@Setting(value = "Axe-Mastery-Rank-Damage-Multiplier", comment = "This value is multiplied against the current rank of Axe Mastery to determine bonus damage." +
|
||||||
|
"\nWith the default config value of 1.0, at rank 4 a player will deal 4.0 extra damage with Axes (1.0 * 4)" +
|
||||||
|
"\nDefault Value: "+ AXE_MASTERY_MULTIPLIER_DEFAULT)
|
||||||
|
private double axeMasteryMultiplier = AXE_MASTERY_MULTIPLIER_DEFAULT;
|
||||||
|
|
||||||
|
public double getAxeMasteryMultiplier() {
|
||||||
|
return axeMasteryMultiplier;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package com.gmail.nossr50.config.hocon.skills.axes;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
|
import com.gmail.nossr50.datatypes.skills.properties.AbstractMaximumProgressionLevel;
|
||||||
|
import ninja.leaping.configurate.objectmapping.Setting;
|
||||||
|
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
|
||||||
|
|
||||||
|
@ConfigSerializable
|
||||||
|
public class ConfigAxesCriticalStrikes {
|
||||||
|
|
||||||
|
private static final double MAX_ACTIVATION_CHANCE_DEFAULT = 37.50D;
|
||||||
|
/*
|
||||||
|
CriticalStrikes:
|
||||||
|
# ChanceMax: Maximum chance of causing a critical hit when on <MaxBonusLevel> or higher
|
||||||
|
# MaxBonusLevel: Level where <ChanceMax> of causing critical hits is reached
|
||||||
|
ChanceMax: 37.50
|
||||||
|
MaxBonusLevel:
|
||||||
|
Standard: 100
|
||||||
|
RetroMode: 1000
|
||||||
|
# Damage modifier of critical hits for PVP / PVE, when causing a critical hit the damage gets multiplied by the modifier
|
||||||
|
PVP_Modifier: 1.5
|
||||||
|
PVE_Modifier: 2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Setting(value = "Max-Activation-Chance", comment = "This is max percentage chance that is used to determine whether or not the ability is successful." +
|
||||||
|
"\nA value of 50.0 would mean at most the ability can only have a 50% chance to work at max skill level.")
|
||||||
|
double maxActivationChance = MAX_ACTIVATION_CHANCE_DEFAULT;
|
||||||
|
|
||||||
|
@Setting(value = "Maximum-Level", comment = "This is the level at which full benefits for this skill will be reached." +
|
||||||
|
"\nProperties of this skill may or may not scale with level, but those that do will gradually increase until max level is achieved.")
|
||||||
|
AbstractMaximumProgressionLevel maximumProgressionLevel = new AbstractMaximumProgressionLevel(SubSkillType.AXES_CRITICAL_STRIKES, 100, 1000);
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.gmail.nossr50.config.hocon.skills.axes;
|
||||||
|
|
||||||
|
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
|
||||||
|
|
||||||
|
@ConfigSerializable
|
||||||
|
public class ConfigAxesGreaterImpact {
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.gmail.nossr50.config.hocon.skills.axes;
|
||||||
|
|
||||||
|
import ninja.leaping.configurate.objectmapping.Setting;
|
||||||
|
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
|
||||||
|
|
||||||
|
@ConfigSerializable
|
||||||
|
public class ConfigAxesImpact {
|
||||||
|
|
||||||
|
public static final double IMPACT_CHANCE_DEFAULT = 25.0D;
|
||||||
|
public static final double IMPACT_DURABILITY_MULTIPLIER_DEFAULT = 6.5D;
|
||||||
|
|
||||||
|
@Setting(value = "Impact-Activation-Chance", comment = "Chance to activate the Impact skill, this is a static chance and does not change per rank of the skill." +
|
||||||
|
"\nDefault value: "+IMPACT_CHANCE_DEFAULT)
|
||||||
|
private double impactChance = IMPACT_CHANCE_DEFAULT;
|
||||||
|
|
||||||
|
@Setting(value = "Impact-Durability-Damage-Multiplier", comment = "The amount of durability damage done by Impact is multiplied by this number" +
|
||||||
|
"\nThe damage done by impact starts at 1 and increases by 1 every rank, this value is then multiplied by this variable to determine the durability damage done to armor." +
|
||||||
|
"\nDefault value: "+IMPACT_DURABILITY_MULTIPLIER_DEFAULT)
|
||||||
|
private double impactDurabilityDamageModifier = IMPACT_DURABILITY_MULTIPLIER_DEFAULT;
|
||||||
|
|
||||||
|
public double getImpactChance() {
|
||||||
|
return impactChance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getImpactDurabilityDamageModifier() {
|
||||||
|
return impactDurabilityDamageModifier;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.gmail.nossr50.config.hocon.skills.axes;
|
||||||
|
|
||||||
|
import ninja.leaping.configurate.objectmapping.Setting;
|
||||||
|
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
|
||||||
|
|
||||||
|
@ConfigSerializable
|
||||||
|
public class ConfigAxesSkullSplitter {
|
||||||
|
|
||||||
|
private static final double SKULL_SPLITTER_DAMAGE_DIVISOR_DEFAULT = 2.0D;
|
||||||
|
|
||||||
|
@Setting(value = "Damage-Divisor", comment = "Damage dealt to targets by Skull Splitter will be divided by this number" +
|
||||||
|
"\nDefault value: "+SKULL_SPLITTER_DAMAGE_DIVISOR_DEFAULT)
|
||||||
|
private double skullSplitterDamageDivisor = SKULL_SPLITTER_DAMAGE_DIVISOR_DEFAULT;
|
||||||
|
|
||||||
|
public double getSkullSplitterDamageDivisor() {
|
||||||
|
return skullSplitterDamageDivisor;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.gmail.nossr50.datatypes.skills.properties;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
|
|
||||||
|
public class AbstractMaximumProgressionLevel implements MaximumProgressionLevel {
|
||||||
|
|
||||||
|
SubSkillType subSkillType;
|
||||||
|
|
||||||
|
int standardMaxLevel;
|
||||||
|
int retroMaxLevel;
|
||||||
|
|
||||||
|
public AbstractMaximumProgressionLevel(SubSkillType subSkillType, int standardMaxLevel, int retroMaxLevel) {
|
||||||
|
this.subSkillType = subSkillType;
|
||||||
|
this.standardMaxLevel = standardMaxLevel;
|
||||||
|
this.retroMaxLevel = retroMaxLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubSkillType getSubSkillType() {
|
||||||
|
return subSkillType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRetroMaxLevel() {
|
||||||
|
return retroMaxLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getStandardMaxLevel() {
|
||||||
|
return standardMaxLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.gmail.nossr50.datatypes.skills.properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the level at which skill properties for this skill that scale based on level will reach their maximum benefits
|
||||||
|
* If a player is this level or higher, they will have the full-power version of this skill
|
||||||
|
*/
|
||||||
|
public interface MaximumProgressionLevel extends SkillProperty {
|
||||||
|
/**
|
||||||
|
* The maximum level for this skill in Retro
|
||||||
|
* Defaults to 1000
|
||||||
|
* @@return maximum level for this skill in Retro scaling (1-1000)
|
||||||
|
*/
|
||||||
|
default int getRetroMaxLevel() {
|
||||||
|
return 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum level for this skill in Standard
|
||||||
|
* Defaults to 100
|
||||||
|
* @return maximum level for this skill in Standard scaling (1-100)
|
||||||
|
*/
|
||||||
|
default int getStandardMaxLevel() {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.skills.axes;
|
package com.gmail.nossr50.skills.axes;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
import com.gmail.nossr50.util.ItemUtils;
|
import com.gmail.nossr50.util.ItemUtils;
|
||||||
import com.gmail.nossr50.util.skills.RankUtils;
|
import com.gmail.nossr50.util.skills.RankUtils;
|
||||||
@ -9,18 +8,6 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public class Axes {
|
public class Axes {
|
||||||
public static double axeMasteryRankDamageMultiplier = AdvancedConfig.getInstance().getAxeMasteryRankDamageMultiplier();
|
|
||||||
|
|
||||||
public static double criticalHitPVPModifier = AdvancedConfig.getInstance().getCriticalStrikesPVPModifier();
|
|
||||||
public static double criticalHitPVEModifier = AdvancedConfig.getInstance().getCriticalStrikesPVEModifier();
|
|
||||||
|
|
||||||
public static double impactChance = AdvancedConfig.getInstance().getImpactChance();
|
|
||||||
|
|
||||||
public static double greaterImpactBonusDamage = AdvancedConfig.getInstance().getGreaterImpactBonusDamage();
|
|
||||||
//public static double greaterImpactChance = AdvancedConfig.getInstance().getGreaterImpactChance();
|
|
||||||
public static double greaterImpactKnockbackMultiplier = AdvancedConfig.getInstance().getGreaterImpactModifier();
|
|
||||||
|
|
||||||
public static double skullSplitterModifier = AdvancedConfig.getInstance().getSkullSplitterModifier();
|
|
||||||
|
|
||||||
protected static boolean hasArmor(LivingEntity target) {
|
protected static boolean hasArmor(LivingEntity target) {
|
||||||
for (ItemStack itemStack : target.getEquipment().getArmorContents()) {
|
for (ItemStack itemStack : target.getEquipment().getArmorContents()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user