Browse Source

Configurable XP cooldowns for Roll

nossr50 6 years ago
parent
commit
579109b2f5

+ 10 - 0
src/main/java/com/gmail/nossr50/config/hocon/antiexploit/ConfigSectionExploitAcrobatics.java

@@ -9,6 +9,7 @@ public class ConfigSectionExploitAcrobatics {
     public static final int ACROBATIC_LOCATION_LIMIT_DEFAULT = 50;
     public static final boolean PREVENT_ACROBATICS_ABUSE_DEFAULT = true;
     public static final int TELEPORT_COOLDOWN_DEFAULT = 30;
+    public static final int ROLL_XP_GAIN_CD_DEFAULT = 60;
 
     @Setting(value = "Player-Fall-Location-Tracking",
             comment = "The amount of locations to keep track of for player falls." +
@@ -32,6 +33,15 @@ public class ConfigSectionExploitAcrobatics {
             "\nDefault value: "+TELEPORT_COOLDOWN_DEFAULT)
     private int teleportCooldownSeconds = TELEPORT_COOLDOWN_DEFAULT;
 
+    @Setting(value = "Fall-Damage-XP-Gain-Cooldown-In-Seconds", comment = "Prevent players from gaining XP from fall damage if they had gained XP recently." +
+            "\nWhen players take fall damage again within this cooldown period the length of the cooldown is increased to discourage automated Roll XP farming." +
+            "\nDefault value: "+ROLL_XP_GAIN_CD_DEFAULT)
+    private int rollXPGainCooldownSeconds = ROLL_XP_GAIN_CD_DEFAULT;
+
+    public int getRollXPGainCooldownSeconds() {
+        return rollXPGainCooldownSeconds;
+    }
+
     public int getTeleportCooldownSeconds() {
         return teleportCooldownSeconds;
     }

+ 2 - 1
src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java

@@ -23,10 +23,11 @@ public class AcrobaticsManager extends SkillManager {
 
     public AcrobaticsManager(McMMOPlayer mcMMOPlayer) {
         super(mcMMOPlayer, PrimarySkillType.ACROBATICS);
+        rollXPInterval = (1000 * mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().getRollXPGainCooldownSeconds());
     }
 
     private long rollXPCooldown = 0;
-    private long rollXPInterval = (1000 * 60); //1 Minute
+    private long rollXPInterval; //1 Minute
     private long rollXPIntervalLengthen = (1000 * 10); //10 Seconds
 
     public boolean canGainRollXP()