Selaa lähdekoodia

Only have 1 xp gain instance for archery.

t00thpick1 6 vuotta sitten
vanhempi
sitoutus
cb89a80fd8

+ 3 - 3
src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java

@@ -52,15 +52,15 @@ public class ArcheryManager extends SkillManager {
      * @param target The {@link LivingEntity} damaged by the arrow
      * @param damager The {@link Entity} who shot the arrow
      */
-    public void distanceXpBonus(LivingEntity target, Entity damager) {
+    public double distanceXpBonusMultiplier(LivingEntity target, Entity damager) {
         Location firedLocation = (Location) damager.getMetadata(mcMMO.arrowDistanceKey).get(0).value();
         Location targetLocation = target.getLocation();
 
         if (firedLocation.getWorld() != targetLocation.getWorld()) {
-            return;
+            return 1;
         }
 
-        applyXpGain((int) (Math.min(firedLocation.distanceSquared(targetLocation), 2500) * Archery.DISTANCE_XP_MULTIPLIER), getXPGainReason(target, damager));
+        return 1 + Math.min(firedLocation.distance(targetLocation), 50) * Archery.DISTANCE_XP_MULTIPLIER;
     }
 
     /**

+ 2 - 2
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -194,10 +194,10 @@ public final class CombatUtils {
             archeryManager.retrieveArrows(target);
         }
 
-        archeryManager.distanceXpBonus(target, arrow);
+        double distanceMultiplier = archeryManager.distanceXpBonusMultiplier(target, arrow);
 
         applyScaledModifiers(initialDamage, finalDamage, event);
-        startGainXp(mcMMOPlayer, target, PrimarySkillType.ARCHERY, arrow.getMetadata(mcMMO.bowForceKey).get(0).asDouble());
+        startGainXp(mcMMOPlayer, target, PrimarySkillType.ARCHERY, arrow.getMetadata(mcMMO.bowForceKey).get(0).asDouble() * distanceMultiplier);
     }
 
     /**