Browse Source

fix overlooked spears interaction with other melee skills

nossr50 1 day ago
parent
commit
694de2ff5f
2 changed files with 27 additions and 3 deletions
  1. 3 0
      Changelog.txt
  2. 24 3
      src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

+ 3 - 0
Changelog.txt

@@ -1,3 +1,6 @@
+Version 2.2.047
+    Fix bug where off-hand spears damage could be attributed to various combat skills and trigger their abilities
+
 Version 2.2.046
 Version 2.2.046
     Added Spears combat skill
     Added Spears combat skill
     Added Spears to repair.vanilla.yml and salvage.vanilla.yml (see notes)
     Added Spears to repair.vanilla.yml and salvage.vanilla.yml (see notes)

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

@@ -2,6 +2,7 @@ package com.gmail.nossr50.util.skills;
 
 
 import static com.gmail.nossr50.datatypes.experience.XPGainReason.PVP;
 import static com.gmail.nossr50.datatypes.experience.XPGainReason.PVP;
 import static com.gmail.nossr50.util.AttributeMapper.MAPPED_MOVEMENT_SPEED;
 import static com.gmail.nossr50.util.AttributeMapper.MAPPED_MOVEMENT_SPEED;
+import static com.gmail.nossr50.util.ItemUtils.isSpear;
 import static com.gmail.nossr50.util.MobMetadataUtils.hasMobFlag;
 import static com.gmail.nossr50.util.MobMetadataUtils.hasMobFlag;
 import static com.gmail.nossr50.util.Permissions.canUseSubSkill;
 import static com.gmail.nossr50.util.Permissions.canUseSubSkill;
 import static com.gmail.nossr50.util.skills.ProjectileUtils.isCrossbowProjectile;
 import static com.gmail.nossr50.util.skills.ProjectileUtils.isCrossbowProjectile;
@@ -124,6 +125,11 @@ public final class CombatUtils {
             return;
             return;
         }
         }
 
 
+        // TODO: Temporary hack to avoid unintended spear interactions
+        if (isSpear(player.getInventory().getItemInOffHand())) {
+            return;
+        }
+
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
 
 
         //Make sure the profiles been loaded
         //Make sure the profiles been loaded
@@ -188,6 +194,11 @@ public final class CombatUtils {
             return;
             return;
         }
         }
 
 
+        // TODO: Temporary hack to avoid unintended spear interactions
+        if (isSpear(player.getInventory().getItemInOffHand())) {
+            return;
+        }
+
         double boostedDamage = event.getDamage();
         double boostedDamage = event.getDamage();
 
 
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
@@ -301,6 +312,11 @@ public final class CombatUtils {
             return;
             return;
         }
         }
 
 
+        // TODO: Temporary hack to avoid unintended spear interactions
+        if (isSpear(player.getInventory().getItemInOffHand())) {
+            return;
+        }
+
         double boostedDamage = event.getDamage();
         double boostedDamage = event.getDamage();
 
 
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
@@ -379,6 +395,11 @@ public final class CombatUtils {
             return;
             return;
         }
         }
 
 
+        // TODO: Temporary hack to avoid unintended spear interactions
+        if (isSpear(player.getInventory().getItemInOffHand())) {
+            return;
+        }
+
         double boostedDamage = event.getDamage();
         double boostedDamage = event.getDamage();
 
 
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
@@ -433,8 +454,8 @@ public final class CombatUtils {
 
 
         double boostedDamage = event.getDamage();
         double boostedDamage = event.getDamage();
 
 
-        // TODO: Temporary hack to avoid unintended spear / unarmed interactions
-        if (ItemUtils.isSpear(player.getInventory().getItemInOffHand())) {
+        // TODO: Temporary hack to avoid unintended spear interactions
+        if (isSpear(player.getInventory().getItemInOffHand())) {
             return;
             return;
         }
         }
 
 
@@ -689,7 +710,7 @@ public final class CombatUtils {
                         .doesPlayerHaveSkillPermission(player, PrimarySkillType.MACES)) {
                         .doesPlayerHaveSkillPermission(player, PrimarySkillType.MACES)) {
                     processMacesCombat(target, player, event);
                     processMacesCombat(target, player, event);
                 }
                 }
-            } else if (ItemUtils.isSpear(heldItem)) {
+            } else if (isSpear(heldItem)) {
                 if (!mcMMO.p.getSkillTools()
                 if (!mcMMO.p.getSkillTools()
                         .canCombatSkillsTrigger(PrimarySkillType.SPEARS, target)) {
                         .canCombatSkillsTrigger(PrimarySkillType.SPEARS, target)) {
                     return;
                     return;