From 5a54d6e0c545237ac37bc2751e3fb4130f56bc3e Mon Sep 17 00:00:00 2001 From: GJ Date: Tue, 13 Mar 2012 15:55:42 -0400 Subject: [PATCH] *CLEANUP* - Swords.java --- .../java/com/gmail/nossr50/skills/Swords.java | 244 +++++++++--------- 1 file changed, 126 insertions(+), 118 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/skills/Swords.java b/src/main/java/com/gmail/nossr50/skills/Swords.java index 6b5c6b7f9..5b6ed4837 100644 --- a/src/main/java/com/gmail/nossr50/skills/Swords.java +++ b/src/main/java/com/gmail/nossr50/skills/Swords.java @@ -1,13 +1,16 @@ package com.gmail.nossr50.skills; +import org.bukkit.entity.AnimalTamer; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Wolf; import org.bukkit.event.entity.EntityDamageByEntityEvent; + import com.gmail.nossr50.Combat; import com.gmail.nossr50.ItemChecks; import com.gmail.nossr50.Users; +import com.gmail.nossr50.m; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcPermissions; import com.gmail.nossr50.datatypes.PlayerProfile; @@ -15,126 +18,131 @@ import com.gmail.nossr50.datatypes.SkillType; import com.gmail.nossr50.locale.mcLocale; import com.gmail.nossr50.party.Party; -public class Swords -{ - public static void bleedCheck(Player attacker, LivingEntity x, mcMMO pluginx) - { - PlayerProfile PPa = Users.getProfile(attacker); - - if(x instanceof Wolf) - { - Wolf wolf = (Wolf)x; - if(wolf.getOwner() instanceof Player) - { - Player owner = (Player) wolf.getOwner(); - if(owner == attacker) - return; - if(Party.getInstance().inSameParty(attacker, owner)) - return; - } - } - if(mcPermissions.getInstance().swords(attacker) && ItemChecks.isSword(attacker.getItemInHand())){ - if(PPa.getSkillLevel(SkillType.SWORDS) >= 750) - { - if(Math.random() * 1000 <= 750) - { - if(!(x instanceof Player)) - pluginx.misc.addToBleedQue(x); - if(x instanceof Player) - { - Player target = (Player)x; - Users.getProfile(target).addBleedTicks(3); - } - attacker.sendMessage(mcLocale.getString("Swords.EnemyBleeding")); - } - } - else if (Math.random() * 1000 <= PPa.getSkillLevel(SkillType.SWORDS)) - { - if(!(x instanceof Player)) - pluginx.misc.addToBleedQue(x); - if(x instanceof Player) - { - Player target = (Player)x; - Users.getProfile(target).addBleedTicks(2); - } - attacker.sendMessage(mcLocale.getString("Swords.EnemyBleeding")); - } - } - } - - public static void counterAttackChecks(EntityDamageByEntityEvent event) - { - //Don't want to counter attack stuff not alive - - if(!(event.getDamager() instanceof LivingEntity)) - return; +public class Swords { - if(event instanceof EntityDamageByEntityEvent) - { - Entity f = ((EntityDamageByEntityEvent) event).getDamager(); - if(event.getEntity() instanceof Player) - { - Player defender = (Player)event.getEntity(); - PlayerProfile PPd = Users.getProfile(defender); - if(ItemChecks.isSword(defender.getItemInHand()) && mcPermissions.getInstance().swords(defender)) - { - if(PPd.getSkillLevel(SkillType.SWORDS) >= 600) - { - if(Math.random() * 2000 <= 600) - { - Combat.dealDamage((LivingEntity) f, event.getDamage() / 2); - defender.sendMessage(mcLocale.getString("Swords.CounterAttacked")); - if(f instanceof Player) - ((Player) f).sendMessage(mcLocale.getString("Swords.HitByCounterAttack")); - } - } - else if (Math.random() * 2000 <= PPd.getSkillLevel(SkillType.SWORDS)) - { - Combat.dealDamage((LivingEntity) f, event.getDamage() / 2); - defender.sendMessage(mcLocale.getString("Swords.CounterAttacked")); - if(f instanceof Player) - ((Player) f).sendMessage(mcLocale.getString("Swords.HitByCounterAttack")); - } - } - } - } + /** + * Check for Bleed effect. + * + * @param attacker The attacking player + * @param entity The defending entity + * @param plugin mcMMO plugin instance + */ + public static void bleedCheck(Player attacker, LivingEntity entity, mcMMO plugin) { + + if (entity instanceof Wolf) { + Wolf wolf = (Wolf) entity; + + if (wolf.isTamed()) { + AnimalTamer tamer = wolf.getOwner(); + + if (tamer instanceof Player) { + Player owner = (Player) tamer; + + if (owner == attacker || Party.getInstance().inSameParty(attacker, owner)) { + return; + } + } + } + } + + final int MAX_BONUS_LEVEL = 750; + + PlayerProfile PPa = Users.getProfile(attacker); + int skillLevel = PPa.getSkillLevel(SkillType.SWORDS); + int skillCheck = m.skillCheck(skillLevel, MAX_BONUS_LEVEL); + + if (Math.random() * 1000 <= skillCheck && !entity.isDead()) { + if (entity instanceof Player) { + Player target = (Player) entity; + int bleedTicks; + + if (skillLevel >= 750) { + bleedTicks = 3; + } + else { + bleedTicks = 2; + } + + Users.getProfile(target).addBleedTicks(bleedTicks); + } + else { + plugin.misc.addToBleedQue(entity); + } + attacker.sendMessage(mcLocale.getString("Swords.EnemyBleeding")); + } } - - public static void bleedSimulate(mcMMO plugin) - { - //Add items from Que list to BleedTrack list - - for(LivingEntity x : plugin.misc.bleedQue) - { - plugin.misc.bleedTracker.add(x); - } - - //Clear list - plugin.misc.bleedQue = new LivingEntity[plugin.misc.bleedQue.length]; - plugin.misc.bleedQuePos = 0; - - //Cleanup any dead entities from the list - for(LivingEntity x : plugin.misc.bleedRemovalQue) - { - plugin.misc.bleedTracker.remove(x); - } - - //Clear bleed removal list - plugin.misc.bleedRemovalQue = new LivingEntity[plugin.misc.bleedRemovalQue.length]; - plugin.misc.bleedRemovalQuePos = 0; - - //Bleed monsters/animals - for(LivingEntity x : plugin.misc.bleedTracker) - { - if(x == null || x.isDead()) - { - plugin.misc.addToBleedRemovalQue(x); - continue; - } - else - { - Combat.dealDamage(x, 2); - } + + /** + * Counter-attack entities. + * + * @param event The event to modify + */ + public static void counterAttackChecks(EntityDamageByEntityEvent event) { + Entity attacker = event.getDamager(); + + if (!(attacker instanceof LivingEntity)) { + return; + } + + Entity target = event.getEntity(); + + if (target instanceof Player) { + Player defender = (Player) target; + PlayerProfile PPd = Users.getProfile(defender); + + if (ItemChecks.isSword(defender.getItemInHand()) && mcPermissions.getInstance().swords(defender)) { + final int MAX_BONUS_LEVEL = 600; + final int COUNTER_ATTACK_MODIFIER = 2; + + int skillLevel = PPd.getSkillLevel(SkillType.SWORDS); + int skillCheck = m.skillCheck(skillLevel, MAX_BONUS_LEVEL); + + if (Math.random() * 2000 <= skillCheck) { + Combat.dealDamage((LivingEntity) attacker, event.getDamage() / COUNTER_ATTACK_MODIFIER); + defender.sendMessage(mcLocale.getString("Swords.CounterAttacked")); + + if (attacker instanceof Player) { + ((Player) attacker).sendMessage(mcLocale.getString("Swords.HitByCounterAttack")); + } + } + } + } + } + + /** + * Simulate a bleed. + * + * @param plugin mcMMO plugin instance + */ + public static void bleedSimulate(mcMMO plugin) { + + /* Add items from Que list to BleedTrack list */ + for (LivingEntity entity : plugin.misc.bleedQue) { + plugin.misc.bleedTracker.add(entity); + } + + /* Clear the BleedQue list */ + plugin.misc.bleedQue = new LivingEntity[plugin.misc.bleedQue.length]; + plugin.misc.bleedQuePos = 0; + + /* Cleanup any dead entities from the list */ + for(LivingEntity entity : plugin.misc.bleedRemovalQue) { + plugin.misc.bleedTracker.remove(entity); + } + + /* Clear bleed removal list */ + plugin.misc.bleedRemovalQue = new LivingEntity[plugin.misc.bleedRemovalQue.length]; + plugin.misc.bleedRemovalQuePos = 0; + + /* Bleed monsters/animals */ + for (LivingEntity entity : plugin.misc.bleedTracker) { + if (entity == null || entity.isDead()) { + plugin.misc.addToBleedRemovalQue(entity); + continue; + } + else { + Combat.dealDamage(entity, 2); + } } } }