WeaponAttackAction getWeaponAttackAction() {
final String METHOD_NAME = "getWeaponAttackAction(IGame)";
owner.methodBegin(getClass(), METHOD_NAME);
try {
if (null != getAction()) {
return getAction();
}
if (!getWeapon().getType().hasFlag(WeaponType.F_ARTILLERY)) {
setAction(new WeaponAttackAction(getShooter().getId(), getTarget().getTargetId(),
getShooter().getEquipmentNum(getWeapon())));
} else {
setAction(new ArtilleryAttackAction(getShooter().getId(), getTarget().getTargetType(),
getTarget().getTargetId(), getShooter().getEquipmentNum(getWeapon()),
getGame()));
}
if (getAction() == null) {
setProbabilityToHit(0);
return null;
}
setProbabilityToHit(Compute.oddsAbove(getAction().toHit(getGame()).getValue(),
getShooterState().hasNaturalAptGun()) / 100.0);
return getAction();
} finally {
owner.methodEnd(getClass(), METHOD_NAME);
}
}