From fb4777e7f05d61fb5a581111dd5f9deebb604abd Mon Sep 17 00:00:00 2001 From: GJ Date: Mon, 7 Oct 2013 09:53:32 -0400 Subject: [PATCH] Added XP boost to Acrobatics when wearing Boots of Feather Falling. Adds #1098 --- Changelog.txt | 1 + .../gmail/nossr50/config/AdvancedConfig.java | 2 ++ .../nossr50/skills/acrobatics/Acrobatics.java | 2 ++ .../skills/acrobatics/AcrobaticsManager.java | 21 +++++++++++++++---- src/main/resources/advanced.yml | 3 +++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index c1a17eb43..52add93d1 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -8,6 +8,7 @@ Key: - Removal Version 1.4.07-dev + + Added XP boost to Acrobatics when wearing Boots of Feather Falling + Added SQL Database can now recover from a dropped connection without losing data. (Thanks Riking!) + Added Carrot on a Stick and Flint & Steel to repair.vanilla.yml + Added horses to the "Shake" ability diff --git a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java index b2f17aa5c..05284fa32 100644 --- a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java +++ b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java @@ -803,6 +803,8 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { public int getRollXPModifier() { return config.getInt("Skills.Acrobatics.Roll_XP_Modifier", 80); } public int getFallXPModifier() { return config.getInt("Skills.Acrobatics.Fall_XP_Modifier", 120); } + public double getFeatherFallXPModifier() { return config.getDouble("Skills.Acrobatics.FeatherFall_Multiplier", 2.0); } + /* ARCHERY */ public int getSkillShotIncreaseLevel() { return config.getInt("Skills.Archery.SkillShot_IncreaseLevel", 50); } public double getSkillShotIncreasePercentage() { return config.getDouble("Skills.Archery.SkillShot_IncreasePercentage", 0.1D); } diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java index 48f3b4465..bc8730dee 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java @@ -20,6 +20,8 @@ public final class Acrobatics { public static int rollXpModifier = AdvancedConfig.getInstance().getRollXPModifier(); public static int fallXpModifier = AdvancedConfig.getInstance().getFallXPModifier(); + public static double featherFallXPModifier = AdvancedConfig.getInstance().getFeatherFallXPModifier(); + public static boolean afkLevelingDisabled = Config.getInstance().getAcrobaticsAFKDisabled(); public static boolean dodgeLightningDisabled = Config.getInstance().getDodgeLightningDisabled(); diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java index 5ee212160..438946144 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java @@ -1,9 +1,11 @@ package com.gmail.nossr50.skills.acrobatics; import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Entity; import org.bukkit.entity.LightningStrike; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.SkillType; @@ -83,12 +85,12 @@ public class AcrobaticsManager extends SkillManager { if (!isFatal(modifiedDamage) && isSuccessfulRoll(Acrobatics.rollMaxChance, Acrobatics.rollMaxBonusLevel)) { player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Text")); - applyXpGain((float) (damage * Acrobatics.rollXpModifier)); + applyXpGain(calculateRollXP(damage, true)); return modifiedDamage; } else if (!isFatal(damage)) { - applyXpGain((float) (damage * Acrobatics.fallXpModifier)); + applyXpGain(calculateRollXP(damage, false)); } return damage; @@ -105,12 +107,12 @@ public class AcrobaticsManager extends SkillManager { if (!isFatal(modifiedDamage) && isSuccessfulRoll(Acrobatics.gracefulRollMaxChance, Acrobatics.gracefulRollMaxBonusLevel)) { getPlayer().sendMessage(LocaleLoader.getString("Acrobatics.Ability.Proc")); - applyXpGain((float) (damage * Acrobatics.rollXpModifier)); + applyXpGain(calculateRollXP(damage, true)); return modifiedDamage; } else if (!isFatal(damage)) { - applyXpGain((float) (damage * Acrobatics.fallXpModifier)); + applyXpGain(calculateRollXP(damage, false)); } return damage; @@ -123,4 +125,15 @@ public class AcrobaticsManager extends SkillManager { private boolean isFatal(double damage) { return getPlayer().getHealth() - damage < 1; } + + private float calculateRollXP(double damage, boolean isRoll) { + ItemStack boots = getPlayer().getInventory().getBoots(); + float xp = (float) (damage * (isRoll ? Acrobatics.rollXpModifier : Acrobatics.fallXpModifier)); + + if (boots != null && boots.containsEnchantment(Enchantment.PROTECTION_FALL)) { + xp *= Acrobatics.featherFallXPModifier; + } + + return xp; + } } diff --git a/src/main/resources/advanced.yml b/src/main/resources/advanced.yml index de131a96c..323f6fbf4 100644 --- a/src/main/resources/advanced.yml +++ b/src/main/resources/advanced.yml @@ -49,6 +49,9 @@ Skills: Dodge_XP_Modifier: 120 Roll_XP_Modifier: 80 Fall_XP_Modifier: 120 + + # FeatherFall_Multiplier: Multiply Acrobatics XP by this value when wearing boots with the Feather Fall enchant + FeatherFall_Multiplier: 2.0 # # Settings for Archery ###