diff --git a/src/engine/objects/AbstractCharacter.java b/src/engine/objects/AbstractCharacter.java index 349868cf..2416b2ee 100644 --- a/src/engine/objects/AbstractCharacter.java +++ b/src/engine/objects/AbstractCharacter.java @@ -653,8 +653,8 @@ public abstract class AbstractCharacter extends AbstractWorldObject { AssignDefenseValue(abstractCharacter); // calculate atr and damage for each hand ConcurrentHashMap equipped = abstractCharacter.charItemManager.getEquipped(); - AssignDamageAtrForPlayers(abstractCharacter, equipped.get(EquipSlotType.RHELD), true, equipped.get(EquipSlotType.RHELD)); - AssignDamageAtrForPlayers(abstractCharacter, equipped.get(EquipSlotType.LHELD), false, equipped.get(EquipSlotType.LHELD)); + AssignDamageAtrForPlayers(abstractCharacter, equipped.get(EquipSlotType.RHELD), true, equipped.get(EquipSlotType.LHELD)); + AssignDamageAtrForPlayers(abstractCharacter, equipped.get(EquipSlotType.LHELD), false, equipped.get(EquipSlotType.RHELD)); if (abstractCharacter.getObjectType().equals(GameObjectType.Mob)) { Mob mob = (Mob) abstractCharacter; RuneTemplate rune = RuneTemplate._runes.get(mob.loadID); @@ -883,15 +883,12 @@ public abstract class AbstractCharacter extends AbstractWorldObject { max *= percentMaxDamage; } - //if duel wielding, cut damage by 30% + // Client (0x466EB0 sets char+0xD0C, 0x46D200 applies it): 30% cut only when both hands hold a WEAPON. - if (otherHand != null) { - ItemTemplate ibo = otherHand.template; - - if (ibo != null && otherHand.template.equals(ItemType.WEAPON)) { - min *= 0.7f; - max *= 0.7f; - } + if (!noWeapon && otherHand != null && otherHand.template != null + && otherHand.template.cacheTemplate.getItemType().equals(ItemType.WEAPON)) { + min *= 0.7f; + max *= 0.7f; } // calculate damage