Browse Source

Repair Config Pt 3

nossr50 6 years ago
parent
commit
ef6bec4ffc

+ 16 - 1
src/main/java/com/gmail/nossr50/config/ConfigManager.java

@@ -45,6 +45,7 @@ import com.gmail.nossr50.config.treasure.ExcavationTreasureConfig;
 import com.gmail.nossr50.config.treasure.FishingTreasureConfig;
 import com.gmail.nossr50.config.treasure.HerbalismTreasureConfig;
 import com.gmail.nossr50.datatypes.party.PartyFeature;
+import com.gmail.nossr50.datatypes.skills.SubSkillType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.skills.repair.repairables.Repairable;
 import com.gmail.nossr50.skills.repair.repairables.SimpleRepairableManager;
@@ -92,6 +93,8 @@ public final class ConfigManager {
 
     /* MISC MANAGERS */
 
+    SkillPropertiesManager skillPropertiesManager;
+
     private ExperienceMapManager experienceMapManager;
 
     //private ModManager modManager;
@@ -212,7 +215,6 @@ public final class ConfigManager {
         TypeSerializers.getDefaultSerializers().registerType(new TypeToken<Material>() {}, new CustomEnumValueSerializer());
         TypeSerializers.getDefaultSerializers().registerType(new TypeToken<PartyFeature>() {}, new CustomEnumValueSerializer());
 
-
         mcMMO.p.getLogger().info("Deserializing configs...");
         //TODO: Not sure about the order of MainConfig
         //Serialized Configs
@@ -254,6 +256,9 @@ public final class ConfigManager {
         //Serialized Data
         partyData = new SerializedConfigLoader<>(ConfigPartyData.class, "partydata.conf", "PartyData", null);
 
+        skillPropertiesManager = new SkillPropertiesManager();
+        skillPropertiesManager.fillRegisters();
+
         //Assign Maps
         partyItemWeights = Maps.newHashMap(configParty.getConfig().getPartyItemShare().getItemShareMap()); //Item Share Weights
         partyFeatureUnlocks = Maps.newHashMap(configParty.getConfig().getPartyXP().getPartyLevel().getPartyFeatureUnlockMap()); //Party Progression
@@ -585,4 +590,14 @@ public final class ConfigManager {
     public ConfigSalvage getConfigSalvage() {
         return configSalvage.getConfig();
     }
+
+    public double getSkillMaxBonusLevel(SubSkillType subSkillType)
+    {
+        return skillPropertiesManager.getMaxBonusLevel(subSkillType);
+    }
+
+    public double getSkillMaxChance(SubSkillType subSkillType)
+    {
+        return skillPropertiesManager.getMaxChance(subSkillType);
+    }
 }

+ 56 - 0
src/main/java/com/gmail/nossr50/config/SkillPropertiesManager.java

@@ -0,0 +1,56 @@
+package com.gmail.nossr50.config;
+
+import com.gmail.nossr50.config.hocon.skills.ConfigSubSkillScalingRNG;
+import com.gmail.nossr50.datatypes.skills.SubSkillType;
+import com.gmail.nossr50.mcMMO;
+
+import java.util.HashMap;
+
+/**
+ * Hacky way to do this until I rewrite the skill system fully
+ */
+public class SkillPropertiesManager {
+    private HashMap<SubSkillType, Double> maxChanceMap;
+    private HashMap<SubSkillType, Double> maxBonusLevelMap;
+    private HashMap<SubSkillType, Double> maxBonusPercentage;
+
+    public SkillPropertiesManager()
+    {
+        maxChanceMap = new HashMap<>();
+        maxBonusLevelMap = new HashMap<>();
+        maxBonusPercentage = new HashMap<>();
+    }
+
+    public void registerRNG(SubSkillType subSkillType, ConfigSubSkillScalingRNG config)
+    {
+        maxChanceMap.put(subSkillType, config.getMaxChance());
+        maxBonusLevelMap.put(subSkillType, config.getMaxBonusLevel());
+    }
+
+    public double getMaxChance(SubSkillType subSkillType)
+    {
+        return maxChanceMap.get(subSkillType);
+    }
+
+    public double getMaxBonusLevel(SubSkillType subSkillType)
+    {
+        return maxBonusLevelMap.get(subSkillType);
+    }
+
+    public void fillRegisters()
+    {
+
+        fillRNGRegisters();
+    }
+
+    private void fillRNGRegisters()
+    {
+        //Acrobatics
+        registerRNG(SubSkillType.ACROBATICS_DODGE, mcMMO.getConfigManager().getConfigAcrobatics().getDodge().getRNGSettings());
+        registerRNG(SubSkillType.ACROBATICS_DODGE, mcMMO.getConfigManager().getConfigAcrobatics().getRoll().getRNGSettings());
+
+        //Repair
+        registerRNG(SubSkillType.REPAIR_SUPER_REPAIR, mcMMO.getConfigManager().getConfigRepair().getSuperRepair().getSuperRepair());
+    }
+
+}

+ 19 - 0
src/main/java/com/gmail/nossr50/config/hocon/skills/ConfigSubSkillScalingRNG.java

@@ -1,5 +1,6 @@
 package com.gmail.nossr50.config.hocon.skills;
 
+import com.gmail.nossr50.mcMMO;
 import ninja.leaping.configurate.objectmapping.Setting;
 import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
 
@@ -30,4 +31,22 @@ public class ConfigSubSkillScalingRNG {
     public ConfigScalingSubSkillRetro getRetroSettings() {
         return retroSettings;
     }
+
+    /**
+     * The max chance for the RNG component of a subskill from the user config
+     * @return the max chance for the RNG component of a subskill
+     */
+    public double getMaxChance() {
+        if(mcMMO.getConfigManager().getConfigLeveling().getConfigSectionLevelingGeneral().getConfigSectionLevelScaling().isRetroModeEnabled())
+            return getRetroSettings().getChanceAtMaxSkill();
+        else
+            return getStandardSettings().getChanceAtMaxSkill();
+    }
+
+    public double getMaxBonusLevel() {
+        if(mcMMO.getConfigManager().getConfigLeveling().getConfigSectionLevelingGeneral().getConfigSectionLevelScaling().isRetroModeEnabled())
+            return getRetroSettings().getMaxBonusLevel();
+        else
+            return getStandardSettings().getMaxBonusLevel();
+    }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/config/hocon/skills/acrobatics/dodge/ConfigDodge.java

@@ -19,7 +19,7 @@ public class ConfigDodge {
     @Setting(value = "RNG-Settings", comment = "Settings related to random chance elements for this Sub-Skill.")
     private ConfigSubSkillScalingRNG rng = new ConfigSubSkillScalingRNG();
 
-    public ConfigSubSkillScalingRNG getRng() {
+    public ConfigSubSkillScalingRNG getRNGSettings() {
         return rng;
     }
 

+ 35 - 37
src/main/java/com/gmail/nossr50/config/hocon/skills/repair/ConfigRepairArcaneForging.java

@@ -8,34 +8,33 @@ import java.util.HashMap;
 @ConfigSerializable
 public class ConfigRepairArcaneForging {
 
-    public static final boolean LOSE_ENCHANTS_DEFAULT = true;
-    public static final boolean DOWNGRADES_ENABLED_DEFAULT = true;
-    public static final HashMap<Integer, Double> FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
-    public static final HashMap<Integer, Double> PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
+    public static final HashMap<Integer, Double> KEEP_ENCHANT_MAP;
+    public static final HashMap<Integer, Double> DOWNGRADE_MAP_DEFAULT;
 
     static {
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT = new HashMap<>();
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT = new HashMap<>();
-
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(1, 2.5);
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(2, 5.0);
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(3, 7.5);
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(4, 10.0);
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(5, 12.5);
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(6, 17.5);
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(7, 25.0);
-        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(8, 32.5);
-
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(1, 2.0);
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(2, 2.5);
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(3, 5.0);
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(4, 7.5);
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(5, 10.0);
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(6, 12.5);
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(7, 15.0);
-        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(8, 17.5);
+        KEEP_ENCHANT_MAP = new HashMap<>();
+        KEEP_ENCHANT_MAP.put(1, 10.0D);
+        KEEP_ENCHANT_MAP.put(2, 20.0D);
+        KEEP_ENCHANT_MAP.put(3, 30.0D);
+        KEEP_ENCHANT_MAP.put(4, 40.0D);
+        KEEP_ENCHANT_MAP.put(5, 50.0D);
+        KEEP_ENCHANT_MAP.put(6, 55.0D);
+        KEEP_ENCHANT_MAP.put(7, 60.0D);
+        KEEP_ENCHANT_MAP.put(8, 65.0D);
+
+        DOWNGRADE_MAP_DEFAULT = new HashMap<>();
+        DOWNGRADE_MAP_DEFAULT.put(1, 75.0D);
+        DOWNGRADE_MAP_DEFAULT.put(2, 50.0D);
+        DOWNGRADE_MAP_DEFAULT.put(3, 40.0D);
+        DOWNGRADE_MAP_DEFAULT.put(4, 30.0D);
+        DOWNGRADE_MAP_DEFAULT.put(5, 25.0D);
+        DOWNGRADE_MAP_DEFAULT.put(6, 20.0D);
+        DOWNGRADE_MAP_DEFAULT.put(7, 15.0D);
+        DOWNGRADE_MAP_DEFAULT.put(8, 10.0D);
     }
 
+    public static final boolean LOSE_ENCHANTS_DEFAULT = true;
+    public static final boolean DOWNGRADES_ENABLED_DEFAULT = true;
 
     @Setting(value = "May-Lose-Enchants", comment = "With this on, players have a chance to have enchantments stripped from" +
             "\n    their item when repairing." +
@@ -48,13 +47,19 @@ public class ConfigRepairArcaneForging {
             "\nDefault value: "+DOWNGRADES_ENABLED_DEFAULT)
     private boolean downgradesEnabled = DOWNGRADES_ENABLED_DEFAULT;
 
-    @Setting(value = "Extract-Full-Enchant-Percentage-Chance-Per-Rank", comment = "The chance to extract the enchantment from the item during salvage without any downgrade." +
-            "\nIf this fails, a check to see if you can extract a downgraded version of the enchantment executes.")
-    private HashMap<Integer, Double> extractFullEnchantChance = FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
+    @Setting(value = "Downgrade-Chance-Per-Rank", comment = "Chance to downgrade enchants per rank in this Sub-Skill.")
+    private HashMap<Integer, Double> downgradeChanceMap = DOWNGRADE_MAP_DEFAULT;
+
+    @Setting(value = "Keep-Enchant-Chance-Per-Rank", comment = "Chance to keep the enchant without any downgrades per rank in this Sub-Skill")
+    private HashMap<Integer, Double> keepEnchantChanceMap = KEEP_ENCHANT_MAP;
 
-    @Setting(value = "Extract-Partial-Enchant-Percentage-Chance-Per-Rank", comment = "The chance to extract a downgraded enchantment from the item during salvage." +
-            "\nThis check happens if you fail to extract the full enchant from the item.")
-    private HashMap<Integer, Double> extractPartialEnchantChance = PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
+    public HashMap<Integer, Double> getDowngradeChanceMap() {
+        return downgradeChanceMap;
+    }
+
+    public HashMap<Integer, Double> getKeepEnchantChanceMap() {
+        return keepEnchantChanceMap;
+    }
 
     public boolean isMayLoseEnchants() {
         return mayLoseEnchants;
@@ -64,11 +69,4 @@ public class ConfigRepairArcaneForging {
         return downgradesEnabled;
     }
 
-    public HashMap<Integer, Double> getExtractFullEnchantChance() {
-        return extractFullEnchantChance;
-    }
-
-    public HashMap<Integer, Double> getExtractPartialEnchantChance() {
-        return extractPartialEnchantChance;
-    }
 }

+ 52 - 0
src/main/java/com/gmail/nossr50/config/hocon/skills/salvage/ConfigArcaneSalvage.java

@@ -0,0 +1,52 @@
+package com.gmail.nossr50.config.hocon.skills.salvage;
+
+import ninja.leaping.configurate.objectmapping.Setting;
+import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
+
+import java.util.HashMap;
+
+@ConfigSerializable
+public class ConfigArcaneSalvage {
+    public static final HashMap<Integer, Double> FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
+    public static final HashMap<Integer, Double> PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
+
+    static {
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT = new HashMap<>();
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT = new HashMap<>();
+
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(1, 2.5);
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(2, 5.0);
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(3, 7.5);
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(4, 10.0);
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(5, 12.5);
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(6, 17.5);
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(7, 25.0);
+        FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(8, 32.5);
+
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(1, 2.0);
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(2, 2.5);
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(3, 5.0);
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(4, 7.5);
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(5, 10.0);
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(6, 12.5);
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(7, 15.0);
+        PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT.put(8, 17.5);
+    }
+
+    @Setting(value = "Extract-Full-Enchant-Percentage-Chance-Per-Rank", comment = "The chance to extract the enchantment from the item during salvage without any downgrade." +
+            "\nIf this fails, a check to see if you can extract a downgraded version of the enchantment executes.")
+    private HashMap<Integer, Double> extractFullEnchantChance = FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
+
+    @Setting(value = "Extract-Partial-Enchant-Percentage-Chance-Per-Rank", comment = "The chance to extract a downgraded enchantment from the item during salvage." +
+            "\nThis check happens if you fail to extract the full enchant from the item.")
+    private HashMap<Integer, Double> extractPartialEnchantChance = PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
+
+
+    public HashMap<Integer, Double> getExtractFullEnchantChance() {
+        return extractFullEnchantChance;
+    }
+
+    public HashMap<Integer, Double> getExtractPartialEnchantChance() {
+        return extractPartialEnchantChance;
+    }
+}

+ 3 - 2
src/main/java/com/gmail/nossr50/util/random/RandomChanceSkill.java

@@ -3,6 +3,7 @@ package com.gmail.nossr50.util.random;
 import com.gmail.nossr50.config.AdvancedConfig;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.datatypes.skills.SubSkillType;
+import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.entity.Player;
@@ -35,7 +36,7 @@ public class RandomChanceSkill implements RandomChanceExecution {
     public RandomChanceSkill(Player player, SubSkillType subSkillType, boolean hasCap)
     {
         if(hasCap)
-            this.probabilityCap = AdvancedConfig.getInstance().getMaximumProbability(subSkillType);
+            this.probabilityCap = mcMMO.getConfigManager().getSkillMaxChance(subSkillType);
         else
             this.probabilityCap = RandomChanceUtil.LINEAR_CURVE_VAR;
 
@@ -86,7 +87,7 @@ public class RandomChanceSkill implements RandomChanceExecution {
      * @return the maximum bonus from skill level for this skill
      */
     public double getMaximumBonusLevelCap() {
-        return AdvancedConfig.getInstance().getMaxBonusLevel(subSkillType);
+        return mcMMO.getConfigManager().getSkillMaxBonusLevel(subSkillType);
     }
 
     /**