فهرست منبع

*CLEANUP* - Acrobatics.java & Archery.java

GJ 13 سال پیش
والد
کامیت
787ee0220a
2فایلهای تغییر یافته به همراه126 افزوده شده و 97 حذف شده
  1. 18 14
      src/main/java/com/gmail/nossr50/skills/Acrobatics.java
  2. 108 83
      src/main/java/com/gmail/nossr50/skills/Archery.java

+ 18 - 14
src/main/java/com/gmail/nossr50/skills/Acrobatics.java

@@ -22,17 +22,19 @@ public class Acrobatics {
     public static void acrobaticsCheck(Player player, EntityDamageEvent event) {
         final int ROLL_XP_MODIFIER = 80;
         final int FALL_XP_MODIFIER = 120;
+        final int MAX_BONUS_LEVEL = 1000;
 
         PlayerProfile PP = Users.getProfile(player);
         int acrovar = PP.getSkillLevel(SkillType.ACROBATICS);
         boolean gracefulRoll = player.isSneaking();
         int damage = event.getDamage();
+        int health = player.getHealth();
 
         if (gracefulRoll) {
             acrovar = acrovar * 2;
         }
 
-        if (acrovar > 1000 || Math.random() * 1000 <= acrovar) {
+        if (acrovar > MAX_BONUS_LEVEL || Math.random() * 1000 <= acrovar) {
             int threshold = 7;
 
             if (gracefulRoll) {
@@ -46,7 +48,7 @@ public class Acrobatics {
             }
 
             /* Check for death */
-            if (player.getHealth() - damage >= 1) {
+            if (health - damage >= 1) {
                 PP.addXP(SkillType.ACROBATICS, damage * ROLL_XP_MODIFIER, player);
                 Skills.XpCheckSkill(SkillType.ACROBATICS, player);
 
@@ -64,7 +66,7 @@ public class Acrobatics {
                 }
             }
         }
-        else if (player.getHealth() - damage >= 1) {
+        else if (health - damage >= 1) {
             PP.addXP(SkillType.ACROBATICS, event.getDamage() * FALL_XP_MODIFIER, player);
             Skills.XpCheckSkill(SkillType.ACROBATICS, player);
         }
@@ -77,9 +79,11 @@ public class Acrobatics {
      */
     public static void dodgeChecks(EntityDamageByEntityEvent event) {
         final int DODGE_MODIFIER = 120;
+        final int MAX_BONUS_LEVEL = 800;
 
         Player defender = (Player) event.getEntity();
         PlayerProfile PPd = Users.getProfile(defender);
+        int damage = event.getDamage();
 
         /* PARTY CHECK */
         if (event.getDamager() instanceof Player) {
@@ -91,29 +95,29 @@ public class Acrobatics {
         }
 
         if (mcPermissions.getInstance().acrobatics(defender)) {
-            int skillCheck = 0;
+            int skillLevel = PPd.getSkillLevel(SkillType.ACROBATICS);
+            int skillCheck = skillLevel;
 
-            if (PPd.getSkillLevel(SkillType.ACROBATICS) <= 800) {
-                skillCheck = PPd.getSkillLevel(SkillType.ACROBATICS);
-            }
-            else {
-                skillCheck = 800;
+            if (skillLevel > MAX_BONUS_LEVEL) {
+                skillCheck = MAX_BONUS_LEVEL;
             }
 
             if (Math.random() * 4000 <= skillCheck) {
                 defender.sendMessage(mcLocale.getString("Acrobatics.Dodge"));
 
-                if (System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1) {
-                    PPd.addXP(SkillType.ACROBATICS, event.getDamage() * DODGE_MODIFIER, defender);
+                if (System.currentTimeMillis() >= (5000 + PPd.getRespawnATS()) && defender.getHealth() >= 1) {
+                    PPd.addXP(SkillType.ACROBATICS, damage * DODGE_MODIFIER, defender);
                     Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
                 }
 
-                event.setDamage(event.getDamage() / 2);
+                int newDamage = damage / 2;
 
-                //Needs to do minimal damage
-                if (event.getDamage() <= 0) {
+                if (newDamage <= 0) {
                     event.setDamage(1);
                 }
+                else {
+                    event.setDamage(newDamage);
+                }
             }
         }
     }

+ 108 - 83
src/main/java/com/gmail/nossr50/skills/Archery.java

@@ -1,6 +1,7 @@
 package com.gmail.nossr50.skills;
 
 import org.bukkit.Location;
+import org.bukkit.Material;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemStack;
@@ -13,88 +14,112 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.party.Party;
 
-public class Archery 
-{
-	public static void trackArrows(mcMMO pluginx, Entity x, PlayerProfile PPa)
-	{
-		int skillLevel = PPa.getSkillLevel(SkillType.ARCHERY);
-		if(!pluginx.misc.arrowTracker.containsKey(x))
-			pluginx.misc.arrowTracker.put(x, 0);
-		if(skillLevel > 1000 || (Math.random() * 1000 <= skillLevel))
-			pluginx.misc.arrowTracker.put(x, 1);
-	}
-	
-	public static void ignitionCheck(Entity x, Player attacker)
-	{
-		//Check to see if PVP for this world is disabled before executing
-		if(!x.getWorld().getPVP())
-			return;
-		
-		PlayerProfile PPa = Users.getProfile(attacker);
-		if(Math.random() * 100 >= 75)
-		{
-			int ignition = 20;
-			ignition += (PPa.getSkillLevel(SkillType.ARCHERY)/200)*20;
-			
-			if(ignition > 120)
-			    ignition = 120;
-			
-			if(x instanceof Player)
-			{
-				Player defender = (Player)x;
-				if(!Party.getInstance().inSameParty(attacker, defender))
-				{
-					defender.setFireTicks(defender.getFireTicks() + ignition);
-					attacker.sendMessage(mcLocale.getString("Combat.Ignition")); //$NON-NLS-1$
-					defender.sendMessage(mcLocale.getString("Combat.BurningArrowHit")); //$NON-NLS-1$
-				}
-			} 
-			else 
-			{
-				x.setFireTicks(x.getFireTicks() + ignition);
-				attacker.sendMessage(mcLocale.getString("Combat.Ignition")); //$NON-NLS-1$
-			}
-		}
-	}
-	
-	public static void dazeCheck(Player defender, Player attacker)
-	{
-		int skillLevel = Users.getProfile(attacker).getSkillLevel(SkillType.ARCHERY);
-		
-		Location loc = defender.getLocation();
-		if(Math.random() * 10 > 5)
-			loc.setPitch(90);
-		else
-			loc.setPitch(-90);
-		
-		if(skillLevel >= 1000)
-		{
-			if(Math.random() * 1000 <= 500)
-			{
-				defender.teleport(loc);
-				defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
-				attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		} 
-		else if(Math.random() * 2000 <= skillLevel)
-		{
-			defender.teleport(loc);
-			defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
-			attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-	
-	public static void arrowRetrievalCheck(Entity entity, mcMMO plugin)
-    {
-    	if(plugin.misc.arrowTracker.containsKey(entity))
-    	{
-    		Integer x = 0;
-    		while(x < plugin.misc.arrowTracker.get(entity))
-    		{
-	    		m.mcDropItem(entity.getLocation(), new ItemStack(262, 1));
-	    		x++;
-    		}
-    	}
-    	plugin.misc.arrowTracker.remove(entity);
+public class Archery {
+
+    /**
+     * Track arrows fired for later retrieval.
+     *
+     * @param plugin mcMMO plugin instance
+     * @param entity Entity damaged by the arrow
+     * @param PPa PlayerProfile of the player firing the arrow
+     */
+    public static void trackArrows(mcMMO plugin, Entity entity, PlayerProfile PPa) {
+        final int MAX_BONUS_LEVEL = 1000;
+        int skillLevel = PPa.getSkillLevel(SkillType.ARCHERY);
+
+        if (!plugin.misc.arrowTracker.containsKey(entity)) {
+            plugin.misc.arrowTracker.put(entity, 0);
+        }
+
+        if (skillLevel > MAX_BONUS_LEVEL || (Math.random() * 1000 <= skillLevel)) {
+            plugin.misc.arrowTracker.put(entity, 1);
+        }
+    }
+
+    /**
+     * Check for ignition on arrow hit.
+     *
+     * @param entity Entity damaged by the arrow
+     * @param attacker Player who fired the arrow
+     */
+    public static void ignitionCheck(Entity entity, Player attacker) {
+
+        //Check to see if PVP for this world is disabled before executing
+        if (!entity.getWorld().getPVP()) {
+            return;
+        }
+
+        final int IGNITION_CHANCE = 25;
+        final int MAX_IGNITION_TICKS = 120;
+
+        PlayerProfile PPa = Users.getProfile(attacker);
+
+        if (Math.random() * 100 <= IGNITION_CHANCE) {
+            int ignition = 20;
+            ignition += (PPa.getSkillLevel(SkillType.ARCHERY) / 200) * 20;
+
+            if (ignition > MAX_IGNITION_TICKS) {
+                ignition = MAX_IGNITION_TICKS;
+            }
+
+            if (entity instanceof Player) {
+                Player defender = (Player) entity;
+
+                if (!Party.getInstance().inSameParty(attacker, defender)) {
+                    defender.setFireTicks(defender.getFireTicks() + ignition);
+                    attacker.sendMessage(mcLocale.getString("Combat.Ignition"));
+                    defender.sendMessage(mcLocale.getString("Combat.BurningArrowHit"));
+                }
+            }
+            else {
+                entity.setFireTicks(entity.getFireTicks() + ignition);
+                attacker.sendMessage(mcLocale.getString("Combat.Ignition"));
+            }
+        }
+    }
+
+    /**
+     * Check for Daze.
+     *
+     * @param defender Defending player
+     * @param attacker Attacking player
+     */
+    public static void dazeCheck(Player defender, Player attacker) {
+        final int MAX_BONUS_LEVEL = 1000;
+
+        int skillLevel = Users.getProfile(attacker).getSkillLevel(SkillType.ARCHERY);
+        Location loc = defender.getLocation();
+        int skillCheck = skillLevel;
+
+        if (Math.random() * 10 > 5) {
+            loc.setPitch(90);
+        }
+        else {
+            loc.setPitch(-90);
+        }
+
+        if (skillLevel > MAX_BONUS_LEVEL) {
+            skillCheck = MAX_BONUS_LEVEL;
+        }
+
+        if (Math.random() * 2000 <= skillCheck) {
+            defender.teleport(loc);
+            defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy"));
+            attacker.sendMessage(mcLocale.getString("Combat.TargetDazed"));
+        }
+    }
+
+    /**
+     * Check for arrow retrieval.
+     *
+     * @param entity The entity hit by the arrows
+     * @param plugin mcMMO plugin instance
+     */
+    public static void arrowRetrievalCheck(Entity entity, mcMMO plugin) {
+        if (plugin.misc.arrowTracker.containsKey(entity)) {
+            m.mcDropItems(entity.getLocation(), new ItemStack(Material.ARROW), plugin.misc.arrowTracker.get(entity));
+        }
+
+        plugin.misc.arrowTracker.remove(entity);
     }
 }