public int damageDone(final RPEntity defender,double attackingWeaponsValue,Nature damageType){
  final int maxRange=getMaxRangeForArcher();
  boolean isRanged=((maxRange > 0) && canDoRangeAttack(defender,maxRange));
  return damageDone(defender,attackingWeaponsValue,damageType,isRanged,maxRange);
}

public int damageDone ( final RPEntity defender , double attackingWeaponsValue , Nature damageType ) { final int maxRange = getMaxRangeForArcher ( ) ; boolean isRanged = ( ( maxRange > 0 ) && canDoRangeAttack ( defender , maxRange ) ) ; return damageDone ( defender , attackingWeaponsValue , damageType , isRanged , maxRange ) ; }
is called when this has hit the given defender . determines how much hitpoints the defender will lose , based on this ' s atk experience and weapon ( s ) , the defender ' s def experience and defensive items , and a random generator .
