Refactored BMAttackPower to split some logic from validate_attack() into validate_attacker()