From bfb48ccea3f6eb410c732d0ef3b0bd2b28e22ffa Mon Sep 17 00:00:00 2001 From: nossr50 Date: Tue, 21 May 2019 13:13:17 -0700 Subject: [PATCH] Buffed Impact durability damage and fixed it --- Changelog.txt | 9 +++++++++ .../gmail/nossr50/config/AdvancedConfig.java | 19 +------------------ .../com/gmail/nossr50/skills/axes/Axes.java | 2 -- .../nossr50/skills/axes/AxesManager.java | 9 +++++---- .../gmail/nossr50/util/skills/SkillUtils.java | 2 +- src/main/resources/advanced.yml | 5 ++--- 6 files changed, 18 insertions(+), 28 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 5d6ae0dec..1c8cb80c8 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,14 @@ Version 2.1.63 + Fixed Armor Impact not scaling by skill rank + Significantly Buffed the amount of durability damage incurred by a successful Armor Impact + Added new setting to advanced.yml 'Skills.Axes.ArmorImpact.DamagePerRank' which is multiplied against Armor Impact's skill level to determine damage done to armor Fixed a bug that caused creative mode players to gain XP when qualifying for early game XP boosts + Removed the damage cap setting for Armor Impact, it is inherently capped now based on its max rank and damage setting + + NOTES: + Armor Impact only has a 25% chance to go off, and for it to only incur 20 durability damage seemed incredibly underwhelming, I've buffed it quite a bit. + You can change it back to its underwhelming self by setting DamagePerRank to 1.0 + Based on feedback I may tweak the number again or other properties of this skill Version 2.1.62 Added a new admin notification system, sensitive commands will print chat messages to "admins" (players with either Operator status or admin chat permission) diff --git a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java index aff6e7ae7..fe9a9f46f 100644 --- a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java +++ b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java @@ -164,18 +164,10 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Axes.GreaterImpact.BonusDamage should be at least 1!"); } - if (getArmorImpactIncreaseLevel() < 1) { - reason.add("Skills.Axes.ArmorImpact.IncreaseLevel should be at least 1!"); - } - if (getImpactChance() < 1) { reason.add("Skills.Axes.ArmorImpact.Chance should be at least 1!"); } - if (getArmorImpactMaxDurabilityDamage() < 1) { - reason.add("Skills.Axes.ArmorImpact.MaxPercentageDurabilityDamage should be at least 1!"); - } - if (getSkullSplitterModifier() < 1) { reason.add("Skills.Axes.SkullSplitter.DamageModifier should be at least 1!"); } @@ -871,17 +863,8 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { public double getGreaterImpactModifier() { return config.getDouble("Skills.Axes.GreaterImpact.KnockbackModifier", 1.5D); } public double getGreaterImpactBonusDamage() { return config.getDouble("Skills.Axes.GreaterImpact.BonusDamage", 2.0D); } - public int getArmorImpactIncreaseLevel() { - int increaseLevel = config.getInt("Skills.Axes.ArmorImpact.IncreaseLevel", 5); - - if(mcMMO.isRetroModeEnabled()) - return increaseLevel * 10; - - return increaseLevel; - } - public double getImpactChance() { return config.getDouble("Skills.Axes.ArmorImpact.Chance", 25.0D); } - public double getArmorImpactMaxDurabilityDamage() { return config.getDouble("Skills.Axes.ArmorImpact.MaxPercentageDurabilityDamage", 20.0D); } + public double getImpactDurabilityDamageMultiplier() { return config.getDouble("Skills.Axes.ArmorImpact.DamagePerRank", 6.5D); } public double getSkullSplitterModifier() { return config.getDouble("Skills.Axes.SkullSplitter.DamageModifier", 2.0D); } diff --git a/src/main/java/com/gmail/nossr50/skills/axes/Axes.java b/src/main/java/com/gmail/nossr50/skills/axes/Axes.java index 2dd7e0e29..939d175bd 100644 --- a/src/main/java/com/gmail/nossr50/skills/axes/Axes.java +++ b/src/main/java/com/gmail/nossr50/skills/axes/Axes.java @@ -14,9 +14,7 @@ public class Axes { public static double criticalHitPVPModifier = AdvancedConfig.getInstance().getCriticalStrikesPVPModifier(); public static double criticalHitPVEModifier = AdvancedConfig.getInstance().getCriticalStrikesPVEModifier(); - public static int impactIncreaseLevel = AdvancedConfig.getInstance().getArmorImpactIncreaseLevel(); public static double impactChance = AdvancedConfig.getInstance().getImpactChance(); - public static double impactMaxDurabilityModifier = AdvancedConfig.getInstance().getArmorImpactMaxDurabilityDamage() / 100D; public static double greaterImpactBonusDamage = AdvancedConfig.getInstance().getGreaterImpactBonusDamage(); public static double greaterImpactChance = AdvancedConfig.getInstance().getGreaterImpactChance(); diff --git a/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java b/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java index 2346faa9c..5cdad3a57 100644 --- a/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java +++ b/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java @@ -1,5 +1,6 @@ package com.gmail.nossr50.skills.axes; +import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; @@ -113,19 +114,19 @@ public class AxesManager extends SkillManager { * @param target The {@link LivingEntity} being affected by Impact */ public void impactCheck(LivingEntity target) { - int durabilityDamage = getImpactDurabilityDamage(); + double durabilityDamage = getImpactDurabilityDamage(); for (ItemStack armor : target.getEquipment().getArmorContents()) { if (armor != null && ItemUtils.isArmor(armor)) { if (RandomChanceUtil.isActivationSuccessful(SkillActivationType.RANDOM_STATIC_CHANCE, SubSkillType.AXES_ARMOR_IMPACT, getPlayer())) { - SkillUtils.handleDurabilityChange(armor, durabilityDamage, Axes.impactMaxDurabilityModifier); + SkillUtils.handleDurabilityChange(armor, durabilityDamage, 1); } } } } - public int getImpactDurabilityDamage() { - return 1 + (getSkillLevel() / Axes.impactIncreaseLevel); + public double getImpactDurabilityDamage() { + return AdvancedConfig.getInstance().getImpactDurabilityDamageMultiplier() * RankUtils.getRank(getPlayer(), SubSkillType.AXES_ARMOR_IMPACT); } /** diff --git a/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java b/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java index da495346f..d9d345694 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java @@ -240,7 +240,7 @@ public class SkillUtils { * @param durabilityModifier the amount to modify the durability by * @param maxDamageModifier the amount to adjust the max damage by */ - public static void handleDurabilityChange(ItemStack itemStack, int durabilityModifier, double maxDamageModifier) { + public static void handleDurabilityChange(ItemStack itemStack, double durabilityModifier, double maxDamageModifier) { if (itemStack.hasItemMeta() && itemStack.getItemMeta().isUnbreakable()) { return; } diff --git a/src/main/resources/advanced.yml b/src/main/resources/advanced.yml index bd651b3ba..6e528e90f 100644 --- a/src/main/resources/advanced.yml +++ b/src/main/resources/advanced.yml @@ -186,13 +186,12 @@ Skills: BonusDamage: 2.0 ArmorImpact: + # Multiplied against the skill rank to determine how much damage to do + DamagePerRank: 6.5 # IncreaseLevel: Every 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 - IncreaseLevel: 5 Chance: 25.0 - MaxPercentageDurabilityDamage: 20.0 - SkullSplitter: # DamageModifier: Damage will get divided by this modifier DamageModifier: 2.0