diff --git a/src/engine/gameManager/NPCManager.java b/src/engine/gameManager/NPCManager.java index 584ea145..8ab554f2 100644 --- a/src/engine/gameManager/NPCManager.java +++ b/src/engine/gameManager/NPCManager.java @@ -25,6 +25,7 @@ import engine.server.MBServerStatics; import org.pmw.tinylog.Logger; import java.util.ArrayList; +import java.util.EnumMap; import java.util.HashMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadLocalRandom; @@ -438,14 +439,17 @@ public enum NPCManager { public static void applyEquipmentResists(Mob mob) { + EnumMap armorResists; + if (mob.charItemManager.equipped.isEmpty()) return; for (Item equipped : mob.charItemManager.equipped.values()) { if (equipped.template.cacheTemplate.getItemType().equals(mbEnums.ItemType.ARMOR)) { - mob.resists.setResist(mbEnums.DamageType.SLASHING, mob.resists.getResist(mbEnums.DamageType.SLASHING, 0) + equipped.template.combat_attack_resist.get("SLASHING")); - mob.resists.setResist(mbEnums.DamageType.CRUSHING, mob.resists.getResist(mbEnums.DamageType.CRUSHING, 0) + equipped.template.combat_attack_resist.get("CRUSHING")); - mob.resists.setResist(mbEnums.DamageType.PIERCING, mob.resists.getResist(mbEnums.DamageType.PIERCING, 0) + equipped.template.combat_attack_resist.get("PIERCING")); + armorResists = equipped.template.cacheTemplate.getCombatAttackResist(); + mob.resists.setResist(mbEnums.DamageType.SLASHING, mob.resists.getResist(mbEnums.DamageType.SLASHING, 0) + armorResists.getOrDefault(mbEnums.DamageType.SLASHING, 0f)); + mob.resists.setResist(mbEnums.DamageType.CRUSHING, mob.resists.getResist(mbEnums.DamageType.CRUSHING, 0) + armorResists.getOrDefault(mbEnums.DamageType.CRUSHING, 0f)); + mob.resists.setResist(mbEnums.DamageType.PIERCING, mob.resists.getResist(mbEnums.DamageType.PIERCING, 0) + armorResists.getOrDefault(mbEnums.DamageType.PIERCING, 0f)); } } } diff --git a/src/engine/objects/Resists.java b/src/engine/objects/Resists.java index a0de2e6f..84e3b323 100644 --- a/src/engine/objects/Resists.java +++ b/src/engine/objects/Resists.java @@ -19,6 +19,7 @@ import org.pmw.tinylog.Logger; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.EnumMap; import java.util.HashSet; import java.util.Iterator; import java.util.concurrent.ConcurrentHashMap; @@ -159,13 +160,16 @@ public class Resists { private static float[] getArmorResists(Item armor, float[] phys) { + EnumMap armorResists; + if (armor == null) return phys; if (armor.template.cacheTemplate.getItemType().equals(mbEnums.ItemType.ARMOR)) { - phys[0] += armor.template.combat_attack_resist.get("SLASHING"); - phys[1] += armor.template.combat_attack_resist.get("CRUSHING"); - phys[2] += armor.template.combat_attack_resist.get("PIERCING"); + armorResists = armor.template.cacheTemplate.getCombatAttackResist(); + phys[0] += armorResists.getOrDefault(mbEnums.DamageType.SLASHING, 0f); + phys[1] += armorResists.getOrDefault(mbEnums.DamageType.CRUSHING, 0f); + phys[2] += armorResists.getOrDefault(mbEnums.DamageType.PIERCING, 0f); } return phys;