From 5bdf4b5dccb48f415c7e6b86e6318b10e00abd16 Mon Sep 17 00:00:00 2001 From: GJ Date: Tue, 15 Jan 2013 16:38:44 -0500 Subject: [PATCH] Finish Axe restructuring, modify a little bit of Swords stuff as well. --- .../gmail/nossr50/skills/axes/AxeManager.java | 14 +++++++++++ .../axes/SkullSplitterEventHandler.java | 24 +++++++++++++++++++ .../swords/SerratedStrikesEventHandler.java | 3 --- .../nossr50/skills/swords/SwordsManager.java | 5 +--- .../java/com/gmail/nossr50/util/Combat.java | 3 ++- 5 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/skills/axes/SkullSplitterEventHandler.java 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 23e9ceaa7..a4da044a7 100644 --- a/src/main/java/com/gmail/nossr50/skills/axes/AxeManager.java +++ b/src/main/java/com/gmail/nossr50/skills/axes/AxeManager.java @@ -82,4 +82,18 @@ public class AxeManager extends SkillManager { eventHandler.applyGreaterImpact(); } } + + /** + * Check for Skull Splitter ability. + * + * @param event The event to process + */ + public void skullSplitter(EntityDamageByEntityEvent event) { + if (Misc.isNPC(player) || !Permissions.skullSplitter(player)) { + return; + } + + SkullSplitterEventHandler eventHandler = new SkullSplitterEventHandler(this, event); + eventHandler.applyAbilityEffects(); + } } diff --git a/src/main/java/com/gmail/nossr50/skills/axes/SkullSplitterEventHandler.java b/src/main/java/com/gmail/nossr50/skills/axes/SkullSplitterEventHandler.java new file mode 100644 index 000000000..30b6b3a1e --- /dev/null +++ b/src/main/java/com/gmail/nossr50/skills/axes/SkullSplitterEventHandler.java @@ -0,0 +1,24 @@ +package com.gmail.nossr50.skills.axes; + +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageByEntityEvent; + +import com.gmail.nossr50.datatypes.SkillType; +import com.gmail.nossr50.util.Combat; + +public class SkullSplitterEventHandler { + private Player player; + private LivingEntity target; + private int damage; + + protected SkullSplitterEventHandler(AxeManager manager, EntityDamageByEntityEvent event) { + this.player = manager.getPlayer(); + this.target = (LivingEntity) event.getEntity(); + this.damage = event.getDamage(); + } + + protected void applyAbilityEffects() { + Combat.applyAbilityAoE(player, target, damage / 2, SkillType.AXES); + } +} diff --git a/src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java b/src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java index a2ede56ae..c2ba02ebd 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java @@ -19,9 +19,6 @@ public class SerratedStrikesEventHandler { } protected void applyAbilityEffects() { - if (player == null) - return; - Combat.applyAbilityAoE(player, target, damage / Swords.SERRATED_STRIKES_MODIFIER, SkillType.SWORDS); BleedTimer.add(target, Swords.SERRATED_STRIKES_BLEED_TICKS); } diff --git a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java index 6057bc637..185812225 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java @@ -76,10 +76,7 @@ public class SwordsManager extends SkillManager { } public void serratedStrikes(LivingEntity target, int damage) { - if (player == null) - return; - - if (!Permissions.serratedStrikes(player)) { + if (Misc.isNPC(player) || !Permissions.serratedStrikes(player)) { return; } diff --git a/src/main/java/com/gmail/nossr50/util/Combat.java b/src/main/java/com/gmail/nossr50/util/Combat.java index 90bf7e1ec..38591b0d0 100644 --- a/src/main/java/com/gmail/nossr50/util/Combat.java +++ b/src/main/java/com/gmail/nossr50/util/Combat.java @@ -102,7 +102,8 @@ public class Combat { axeManager.criticalHitCheck(event); axeManager.impact(event); - if (attackerProfile.getAbilityMode(AbilityType.SKULL_SPLIITER) && Permissions.skullSplitter(attacker)) { + if (attackerProfile.getAbilityMode(AbilityType.SKULL_SPLIITER)) { + axeManager.skullSplitter(event); applyAbilityAoE(attacker, target, event.getDamage() / 2, SkillType.AXES); }