diff --git a/src/engine/gameManager/CombatManager.java b/src/engine/gameManager/CombatManager.java index 23043bcd..633cc5eb 100644 --- a/src/engine/gameManager/CombatManager.java +++ b/src/engine/gameManager/CombatManager.java @@ -147,6 +147,14 @@ public enum CombatManager { rangeMod += bonus.getFloatPercentAll(mbEnums.ModType.WeaponRange, mbEnums.SourceType.None); attackRange += weapon.template.item_weapon_max_range * rangeMod; + } else if (attacker.getObjectType().equals(mbEnums.GameObjectType.Mob)) { + + //unarmed mob, add the natural attack range from its rune (0 for most melee mobs) + + if (bonus != null) + rangeMod += bonus.getFloatPercentAll(mbEnums.ModType.WeaponRange, mbEnums.SourceType.None); + + attackRange += getNaturalAttackRange(attacker, slot) * rangeMod; } if (attacker.getObjectType().equals(mbEnums.GameObjectType.Mob)) diff --git a/src/engine/objects/AbstractCharacter.java b/src/engine/objects/AbstractCharacter.java index eb31e338..1b42ecda 100644 --- a/src/engine/objects/AbstractCharacter.java +++ b/src/engine/objects/AbstractCharacter.java @@ -1483,6 +1483,15 @@ public abstract class AbstractCharacter extends AbstractWorldObject { range = ((Mob) this).charItemManager.equipped.get(EquipSlotType.RHELD).template.item_weapon_max_range; } else if (((Mob) this).charItemManager.equipped.get(EquipSlotType.LHELD) != null) { range = ((Mob) this).charItemManager.equipped.get(EquipSlotType.LHELD).template.item_weapon_max_range; + } else { + + // Unarmed: use the rune natural attack range when it has one (e.g. Gasser 150), not clamped. + // Most melee runes have 0, so they keep the default of 8. + + float naturalRange = CombatManager.getNaturalAttackRange(mob, EquipSlotType.RHELD); + + if (naturalRange > 0) + return naturalRange; } // TODO Is this clamp from live?