#400 Done #398 Refactor for DistanceWeapon

Added a new class, ThrowableWeapon at the branch of DistanceWeapon