From a8abfdae5eb56e056fd279216de617c5bae90639 Mon Sep 17 00:00:00 2001 From: gmcferrin Date: Thu, 10 Jan 2013 22:39:08 -0500 Subject: [PATCH] Start Axe restructuring. --- .../axes/AxeBonusDamageEventHandler.java | 31 +++++++++++++++++++ .../gmail/nossr50/skills/axes/AxeManager.java | 27 +++++++++++++++- .../com/gmail/nossr50/skills/axes/Axes.java | 27 ++-------------- .../java/com/gmail/nossr50/util/Combat.java | 4 ++- 4 files changed, 62 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/skills/axes/AxeBonusDamageEventHandler.java diff --git a/src/main/java/com/gmail/nossr50/skills/axes/AxeBonusDamageEventHandler.java b/src/main/java/com/gmail/nossr50/skills/axes/AxeBonusDamageEventHandler.java new file mode 100644 index 000000000..cac1ac15d --- /dev/null +++ b/src/main/java/com/gmail/nossr50/skills/axes/AxeBonusDamageEventHandler.java @@ -0,0 +1,31 @@ +package com.gmail.nossr50.skills.axes; + +import org.bukkit.event.entity.EntityDamageByEntityEvent; + +public class AxeBonusDamageEventHandler { + private int skillLevel; + private EntityDamageByEntityEvent event; + private int damageBonus; + + public AxeBonusDamageEventHandler(AxeManager manager, EntityDamageByEntityEvent event) { + this.skillLevel = manager.getSkillLevel(); + this.event = event; + } + + protected void calculateDamageBonus() { + int increaseLevel = Axes.maxBonusLevel / Axes.maxBonusDamage; + + /* Add 1 DMG for every 50 skill levels (default value) */ + damageBonus = skillLevel / increaseLevel; + + if (damageBonus > Axes.maxBonusDamage) { + damageBonus = Axes.maxBonusDamage; + } + } + + protected void modifyEventDamage() { + int damage = event.getDamage(); + + event.setDamage(damage + damageBonus); + } +} diff --git a/src/main/java/com/gmail/nossr50/skills/axes/AxeManager.java b/src/main/java/com/gmail/nossr50/skills/axes/AxeManager.java index 1fad11351..b4b45487d 100644 --- a/src/main/java/com/gmail/nossr50/skills/axes/AxeManager.java +++ b/src/main/java/com/gmail/nossr50/skills/axes/AxeManager.java @@ -1,5 +1,30 @@ package com.gmail.nossr50.skills.axes; -public class AxeManager { +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import com.gmail.nossr50.datatypes.SkillType; +import com.gmail.nossr50.skills.SkillManager; +import com.gmail.nossr50.util.Misc; + +public class AxeManager extends SkillManager { + public AxeManager(Player player) { + super(player, SkillType.AXES); + } + + /** + * Apply bonus to damage done by axes. + * + * @param event The event to modify + */ + public void bonusDamage(EntityDamageByEntityEvent event) { + if (Misc.isNPC(player)) { + return; + } + + AxeBonusDamageEventHandler eventHandler = new AxeBonusDamageEventHandler(this, event); + + eventHandler.calculateDamageBonus(); + eventHandler.modifyEventDamage(); + } } 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 02acd4044..b3b179a91 100644 --- a/src/main/java/com/gmail/nossr50/skills/axes/Axes.java +++ b/src/main/java/com/gmail/nossr50/skills/axes/Axes.java @@ -20,32 +20,10 @@ import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.Users; public class Axes { + public static int maxBonusDamage = AdvancedConfig.getInstance().getBonusDamageAxesBonusMax(); + public static int maxBonusLevel = AdvancedConfig.getInstance().getBonusDamageAxesMaxBonusLevel(); static AdvancedConfig advancedConfig = AdvancedConfig.getInstance(); - /** - * Apply bonus to damage done by axes. - * - * @param attacker The attacking player - * @param event The event to modify - */ - public static void axesBonus(Player attacker, EntityDamageByEntityEvent event) { - if (attacker == null) - return; - - final int MAX_BONUS = advancedConfig.getBonusDamageAxesBonusMax(); - final int MAX_LEVEL = advancedConfig.getBonusDamageAxesMaxBonusLevel(); - final int INCREASE_LEVEL = MAX_LEVEL / MAX_BONUS; - - /* 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) { - bonus = MAX_BONUS; - } - - event.setDamage(event.getDamage() + bonus); - } - /** * Check for critical chances on axe damage. * @@ -112,7 +90,6 @@ public class Axes { * @param target The defending entity * @param event The event to modify */ - @SuppressWarnings("deprecation") public static void impact(Player attacker, LivingEntity target, EntityDamageByEntityEvent event) { if (attacker == null) return; diff --git a/src/main/java/com/gmail/nossr50/util/Combat.java b/src/main/java/com/gmail/nossr50/util/Combat.java index d1eb7c323..743c292ca 100644 --- a/src/main/java/com/gmail/nossr50/util/Combat.java +++ b/src/main/java/com/gmail/nossr50/util/Combat.java @@ -32,6 +32,7 @@ import com.gmail.nossr50.runnables.BleedTimer; import com.gmail.nossr50.runnables.GainXp; import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager; import com.gmail.nossr50.skills.archery.ArcheryManager; +import com.gmail.nossr50.skills.axes.AxeManager; import com.gmail.nossr50.skills.axes.Axes; import com.gmail.nossr50.skills.swords.Swords; import com.gmail.nossr50.skills.swords.SwordsManager; @@ -96,9 +97,10 @@ public class Combat { } Skills.abilityCheck(attacker, SkillType.AXES); + AxeManager axeManager = new AxeManager(attacker); if (Permissions.axeBonus(attacker)) { - Axes.axesBonus(attacker, event); + axeManager.bonusDamage(event); } if (Permissions.criticalHit(attacker)) {