diff --git a/Changelog.txt b/Changelog.txt index 56d95a0e4..f415806b9 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -9,6 +9,7 @@ Key: Version 1.4.07-dev + Added snow to excavation + + Added new experience curve option. Cumulative curve, calculates experience needed for next level using power level. = Fixed bug with Skull Splitter not finding the locale string = Fixed issue where locale strings could cause the scoreboard header to be longer than 16 characters. ! Improved profile saving diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index 17383dcba..3e3d3324a 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -294,5 +294,6 @@ public class Config extends AutoUpdateConfigLoader { /* XP Formula Multiplier */ public int getFormulaMultiplierCurve() { return config.getInt("Experience.Formula.Curve_Modifier", 20); } + public boolean getCumulativeCurveEnabled() { return config.getBoolean("Experience.Formula.Cumulative_Curve", false); } public double getFormulaSkillModifier(SkillType skill) { return config.getDouble("Experience.Formula.Modifier." + StringUtils.getCapitalized(skill.toString())); } } diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java index 2d140766a..a4b0733e2 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java @@ -15,6 +15,7 @@ import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.spout.huds.HudType; import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; import com.gmail.nossr50.skills.child.FamilyTree; +import com.gmail.nossr50.util.player.UserManager; public class PlayerProfile { private final String playerName; @@ -274,6 +275,10 @@ public class PlayerProfile { * @return the Xp remaining until next level */ public int getXpToLevel(SkillType skillType) { + if (Config.getInstance().getCumulativeCurveEnabled()) { + return 1020 + (UserManager.getPlayer(playerName).getPowerLevel() * Config.getInstance().getFormulaMultiplierCurve()); + } + return 1020 + (skills.get(skillType) * Config.getInstance().getFormulaMultiplierCurve()); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index c22fbd2bf..4b82a8982 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -290,6 +290,10 @@ Experience: Formula: Curve_Modifier: 20 + # Cumulative experience curves will use a players power level instead of their skill level, + # players with high power levels will have to gain a lot more experience to reach the next level in every skill. + Cumulative_Curve: false + # Experience gained will get divided by these values. 1.0 by default, 2.0 means two times lower Modifier: Swords: 1.0