From 5fa79926db891f75ece54ed8f2cb6ba7a91e853e Mon Sep 17 00:00:00 2001 From: bm01 Date: Tue, 8 May 2012 21:58:01 +0200 Subject: [PATCH] Fixed arrow boucing off entities on daze proc --- Changelog.txt | 1 + .../gmail/nossr50/skills/combat/Archery.java | 7 ++++--- .../java/com/gmail/nossr50/util/Combat.java | 19 +++++++++---------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 21b4d0744..e5362f138 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -20,6 +20,7 @@ Version 1.3.07 + Added config options for enabling/disabling specific double drops + Added automatic zip backup of flatfile database & config files + Added config options to enable/disable specific skills for PVP & PVE + = Fixed bug where an arrow could bounce off entities on daze proc = Fixed bug where a player could gain Acrobatics experience while riding a cart = Fixed /party not working properly with 2 arguments = Fixed /ability not checking the right permission diff --git a/src/main/java/com/gmail/nossr50/skills/combat/Archery.java b/src/main/java/com/gmail/nossr50/skills/combat/Archery.java index e68319625..f31c2aeec 100644 --- a/src/main/java/com/gmail/nossr50/skills/combat/Archery.java +++ b/src/main/java/com/gmail/nossr50/skills/combat/Archery.java @@ -10,13 +10,13 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.SkillType; import com.gmail.nossr50.locale.LocaleLoader; -import com.gmail.nossr50.util.Combat; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Users; @@ -53,8 +53,9 @@ public class Archery { * * @param defender Defending player * @param attacker Attacking player + * @param event The event to modify */ - public static void dazeCheck(Player defender, Player attacker) { + public static void dazeCheck(Player defender, Player attacker, EntityDamageByEntityEvent event) { final int MAX_BONUS_LEVEL = 1000; int skillLevel = Users.getProfile(attacker).getSkillLevel(SkillType.ARCHERY); @@ -70,7 +71,7 @@ public class Archery { if (random.nextInt(2000) <= skillCheck) { defender.teleport(loc); - Combat.dealDamage(defender, 4); + event.setDamage(event.getDamage() + 4); defender.sendMessage(LocaleLoader.getString("Combat.TouchedFuzzy")); attacker.sendMessage(LocaleLoader.getString("Combat.TargetDazed")); } diff --git a/src/main/java/com/gmail/nossr50/util/Combat.java b/src/main/java/com/gmail/nossr50/util/Combat.java index 78a4bae1d..63a913b96 100644 --- a/src/main/java/com/gmail/nossr50/util/Combat.java +++ b/src/main/java/com/gmail/nossr50/util/Combat.java @@ -265,9 +265,8 @@ public class Combat { if (shooter instanceof Player) { Player attacker = (Player) shooter; PlayerProfile PPa = Users.getProfile(attacker); - int damage = event.getDamage(); - if (permInstance.archery(attacker) && damage > 0) { + if (permInstance.archery(attacker)) { if (permInstance.archeryBonus(attacker)) { /*Archery needs a damage bonus to be viable in PVP*/ int skillLvl = Users.getProfile(attacker).getSkillLevel(SkillType.ARCHERY); @@ -280,8 +279,14 @@ public class Combat { /* Every 50 skill levels Archery gains 10% damage bonus, set that here */ //TODO: Work in progress for balancing out Archery, will work on it more later... - int archeryBonus = (int)(event.getDamage() * dmgBonusPercent); - event.setDamage(event.getDamage() + archeryBonus); + int damage = event.getDamage(); + int archeryBonus = (int) (damage * dmgBonusPercent); + + event.setDamage(damage + archeryBonus); + } + + if (target instanceof Player && permInstance.daze(attacker)) { + Archery.dazeCheck((Player) target, attacker, event); } if (permInstance.trackArrows(attacker)) { @@ -291,12 +296,6 @@ public class Combat { if (target != attacker) { startGainXp(attacker, PPa, target, SkillType.ARCHERY, pluginx); } - - if (target instanceof Player) { - if (permInstance.daze(attacker)) { - Archery.dazeCheck((Player) target, attacker); - } - } } } }