From 366824926706d035c7520ac35eb87f28a03d2063 Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Sun, 30 Dec 2012 23:46:21 +0100 Subject: [PATCH] Iterate through the durability damage with Unbreaking check --- .gitignore | 1 - .../com/gmail/nossr50/skills/combat/Axes.java | 24 +++++++++++-------- .../nossr50/skills/gathering/WoodCutting.java | 3 +-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 289c224fd..2745f88b2 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,6 @@ /world # Mac filesystem dust -/.DS_Store *.DS_Store # intellij diff --git a/src/main/java/com/gmail/nossr50/skills/combat/Axes.java b/src/main/java/com/gmail/nossr50/skills/combat/Axes.java index bcf98dc05..3657b6ec6 100644 --- a/src/main/java/com/gmail/nossr50/skills/combat/Axes.java +++ b/src/main/java/com/gmail/nossr50/skills/combat/Axes.java @@ -40,7 +40,7 @@ public class Axes { final int MAX_LEVEL = advancedConfig.getBonusDamageAxesMaxBonusLevel(); final int INCREASE_LEVEL = MAX_LEVEL / MAX_BONUS; - /* Add 1 DMG for every 50 skill levels */ + /* Add 1 DMG for every 50 skill levels (default value) */ int bonus = (int) ((double) Users.getProfile(attacker).getSkillLevel(SkillType.AXES) / (double) INCREASE_LEVEL); if (bonus > MAX_BONUS) { @@ -129,11 +129,12 @@ public class Axes { Player targetPlayer = (Player) target; short durabilityDamage = 1; //Start with 1 durability damage - /* Every 30 Skill Levels you gain 1 durability damage */ + /* Every 50 Skill Levels you gain 1 durability damage (default values) */ int impactIncreaseLevel = advancedConfig.getArmorImpactIncreaseLevel(); float impactMaxDamage = (float) advancedConfig.getArmorImpactMaxDurabilityDamage() / 100F; short maxDurability; - durabilityDamage += (int) ((double) Users.getProfile(attacker).getSkillLevel(SkillType.AXES) / (double) impactIncreaseLevel); + int lowerdamage = 0; + durabilityDamage += (int) (((double) Users.getProfile(attacker).getSkillLevel(SkillType.AXES) / (double) impactIncreaseLevel)); if (!hasArmor(targetPlayer)) { applyGreaterImpact(attacker, target, event); @@ -141,15 +142,18 @@ public class Axes { else { for (ItemStack armor : targetPlayer.getInventory().getArmorContents()) { if(Math.random() * 100 > 75) { - if (armor.containsEnchantment(Enchantment.DURABILITY)) { - int level = armor.getEnchantmentLevel(Enchantment.DURABILITY); - if (random.nextInt(level + 1) > 0) { - return; - } + for (int i = 0; i <= durabilityDamage; i ++) { + if (armor.containsEnchantment(Enchantment.DURABILITY)) { + int level = armor.getEnchantmentLevel(Enchantment.DURABILITY); + if (random.nextInt(level + 1) > 0) { + lowerdamage++; + } + } } + int newDurabilityDamage = durabilityDamage - lowerdamage; maxDurability = (short) (armor.getType().getMaxDurability() * impactMaxDamage); - if (durabilityDamage > maxDurability) durabilityDamage = (short) maxDurability; - armor.setDurability((short) (armor.getDurability() + durabilityDamage)); //Damage armor piece + if (newDurabilityDamage > maxDurability) newDurabilityDamage = (short) maxDurability; + armor.setDurability((short) (armor.getDurability() + newDurabilityDamage)); //Damage armor piece } } targetPlayer.updateInventory(); diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java b/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java index cf87d43e4..2ed91fe51 100644 --- a/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java @@ -504,9 +504,8 @@ public class WoodCutting { private static int durabilityLossCalulate(ArrayList toBeFelled, int level) { int durabilityLoss = 0; for (Block x : toBeFelled) { - if (random.nextInt(level + 1) > 0) {}//Don't add durabilityLoss, because Unbreaking enchantment does it work. + if (random.nextInt(level + 1) > 0) {}//Don't add durabilityLoss, because Unbreaking enchantment does it's work. else if (x.getType().equals(Material.LOG) || (Config.getInstance().getBlockModsEnabled() && ModChecks.isCustomLogBlock(x))) { - durabilityLoss++; durabilityLoss = durabilityLoss + Config.getInstance().getAbilityToolDamage(); } }